]> git.sur5r.net Git - i3/i3.github.io/commitdiff
update docs for 4.13
authorMichael Stapelberg <michael@stapelberg.de>
Tue, 8 Nov 2016 18:55:30 +0000 (19:55 +0100)
committerMichael Stapelberg <michael@stapelberg.de>
Tue, 8 Nov 2016 18:55:30 +0000 (19:55 +0100)
12 files changed:
_docs/debugging
_docs/hacking-howto
_docs/i3bar-protocol
_docs/ipc
_docs/testsuite
_docs/userguide
docs/debugging.html
docs/hacking-howto.html
docs/i3bar-protocol.html
docs/ipc.html
docs/testsuite.html
docs/userguide.html

index 431a67abe252668fdc45680f0a4d2ed6e64e8fbe..e4c4fa93db6d23ff773c04383216974d746d5929 100644 (file)
@@ -10,7 +10,7 @@ Thank you for being interested in debugging i3. It really means
 something to us to get your bug fixed. If you have any questions about the
 process and/or need further help, do not hesitate to contact us!
 
-== Verify you are using i3 ≥ 4.12
+== Verify you are using i3 ≥ 4.13
 
 Only the latest major version of i3 is supported. To verify which version
 you are running, use:
index 247a179183fbe17befcbc215473e8b9dff3c5fa8..74a690e7c1ef65d323d5a5f0b03338b3c7b60c79 100644 (file)
@@ -187,7 +187,7 @@ cleanup ("flatten") the tree. See also +src/move.c+ for another similar
 function, which was moved into its own file because it is so long.
 
 src/util.c::
-Contains useful functions which are not really dependant on anything.
+Contains useful functions which are not really dependent on anything.
 
 src/window.c::
 Handlers to update X11 window properties like +WM_CLASS+, +_NET_WM_NAME+,
@@ -593,7 +593,7 @@ optimize this and call +x_push_node+ on the appropriate con directly.
    itself for the container’s children. This function actually pushes the
    state, see the next paragraph.
 4. If the pointer needs to be warped to a different position (for example when
-   changing focus to a differnt output), it will be warped now.
+   changing focus to a different output), it will be warped now.
 5. The eventmask is restored for all mapped windows.
 6. Window decorations will be rendered by calling +x_deco_recurse+ on the root
    container, which then recursively calls itself for the children.
@@ -850,7 +850,7 @@ empty.
 Afterwards, +con_focus+ will be called to fix the focus stack and the tree will
 be flattened.
 
-=== Case 3: Moving to non-existant top/bottom
+=== Case 3: Moving to non-existent top/bottom
 
 Like in case 1, the reference layout for this case is a single workspace in
 horizontal orientation with two containers on it. Focus is on the left
@@ -877,7 +877,7 @@ container and the container above/below the current one (on the level of
 Now, +con_focus+ will be called to fix the focus stack and the tree will be
 flattened.
 
-=== Case 4: Moving to existant top/bottom
+=== Case 4: Moving to existent top/bottom
 
 The reference layout for this case is a vertical workspace with two containers.
 The bottom one is a h-split containing two containers (1 and 2). Focus is on
index 3ae144536f22b0bd58872ac6446b89eea6833881..ebd3b83a231741f998d63cab2dad49b44f605d30 100644 (file)
@@ -6,7 +6,7 @@ August 2012
 This document explains the protocol in which i3bar expects its input. It
 provides support for colors, urgency, shortening and easy manipulation.
 
-== Rationale for chosing JSON
+== Rationale for choosing JSON
 
 Before describing the protocol, let’s cover why JSON is a building block of
 this protocol.
@@ -111,7 +111,7 @@ cont_signal::
        processing.
        The default value (if none is specified) is SIGCONT.
 click_events::
-       If specified and true i3bar will write a infinite array (same as above)
+       If specified and true i3bar will write an infinite array (same as above)
        to your stdin.
 
 === Blocks in detail
@@ -233,7 +233,7 @@ name::
 instance::
        Instance of the block, if set
 x, y::
-       X11 root window coordinates where the click occured
+       X11 root window coordinates where the click occurred
 button::
        X11 button ID (for example 1 to 3 for left/middle/right mouse button)
 
index dc4e694708b05c108c1d720e9fc0fc9a5ee4f477..fda289a0a21c2776d30c29a7c4207c7b6484b3bb 100644 (file)
--- a/_docs/ipc
+++ b/_docs/ipc
@@ -80,6 +80,8 @@ GET_BAR_CONFIG (6)::
 GET_VERSION (7)::
        Gets the version of i3. The reply will be a JSON-encoded dictionary
        with the major, minor, patch and human-readable version.
+GET_BINDING_MODES (8)::
+        Gets a list of currently configured binding modes.
 
 So, a typical message could look like this:
 --------------------------------------------------
@@ -137,6 +139,8 @@ BAR_CONFIG (6)::
        Reply to the GET_BAR_CONFIG message.
 VERSION (7)::
        Reply to the GET_VERSION message.
+BINDING_MODES (8)::
+        Reply to the GET_BINDING_MODES message.
 
 === COMMAND reply
 
@@ -285,7 +289,7 @@ type (string)::
        Type of this container. Can be one of "root", "output", "con",
        "floating_con", "workspace" or "dockarea".
 border (string)::
-       Can be either "normal", "none" or "1pixel", dependending on the
+       Can be either "normal", "none" or "pixel", depending on the
        container’s border style.
 current_border_width (integer)::
        Number of pixels of the border width.
@@ -604,6 +608,15 @@ loaded_config_file_name (string)::
 }
 -------------------
 
+=== BINDING_MODES reply
+
+The reply consists of an array of all currently configured binding modes.
+
+*Example:*
+---------------------
+["default", "resize"]
+---------------------
+
 == Events
 
 [[events]]
@@ -741,14 +754,15 @@ defines whether pango markup shall be used for displaying this mode.
 This event consists of a single serialized map containing a property
 +change (string)+ which indicates the type of the change
 
-* +new+ - the window has become managed by i3
-* +close+ - the window has closed
-* +focus+ - the window has received input focus
-* +title+ - the window's title has changed
-* +fullscreen_mode+ - the window has entered or exited fullscreen mode
-* +move+ - the window has changed its position in the tree
-* +floating+ - the window has transitioned to or from floating
-* +urgent+ - the window has become urgent or lost its urgent status
+* +new+ – the window has become managed by i3
+* +close+ – the window has closed
+* +focus+ – the window has received input focus
+* +title+ – the window's title has changed
+* +fullscreen_mode+ – the window has entered or exited fullscreen mode
+* +move+ – the window has changed its position in the tree
+* +floating+ – the window has transitioned to or from floating
+* +urgent+ – the window has become urgent or lost its urgent status
+* +mark+ – a mark has been added to or removed from the window
 
 Additionally a +container (object)+ field will be present, which consists
 of the window's parent container. Be aware that for the "new" event, the
index 8fdb9635b9648fcc6e8e7e1b380a80801033c8e8..71c6a427862fb4b4a46c32f093923a25e21c2c63 100644 (file)
@@ -109,7 +109,7 @@ run the tests on a separate X server instance (using Xephyr).
 
 Xephyr will open a window where you can inspect the running test. You can run
 the tests without an X session with Xvfb, such as with +xvfb-run
-./complete-run+. This will also speed up the tests signficantly especially on
+./complete-run+. This will also speed up the tests significantly especially on
 machines without a powerful video card.
 
 .Example invocation of complete-run.pl+
@@ -196,7 +196,7 @@ In order to open new windows, change attributes, get events, etc., the
 testsuite uses X11::XCB, a new (and quite specific to i3 at the moment) Perl
 module which uses the XCB protocol description to generate Perl bindings to
 X11. They work in a very similar way to libxcb (which i3 uses) and provide
-relatively high-level interfaces (objects such as +X11::XCB::Window+) aswell as
+relatively high-level interfaces (objects such as +X11::XCB::Window+) as well as
 access to the low-level interface, which is very useful when testing a window
 manager.
 
@@ -450,7 +450,7 @@ cmd 'focus left';
 is($x->input_focus, $left->id, 'left window focused');
 ----------
 
-However, the test fails. Sometimes. Apparantly, there is a race condition in
+However, the test fails. Sometimes. Apparently, there is a race condition in
 your test. If you think about it, this is because you are using two different
 pieces of software: You tell i3 to update focus, i3 confirms that, and then you
 ask X11 to give you the current focus. There is a certain time i3 needs to
@@ -614,7 +614,7 @@ activation, we decreased the total amount of time necessary to run all tests
 it significantly more attractive to run the test suite more often (or at all)
 during development.
 
-An alternative approach to using socket activation is polling for the existance
+An alternative approach to using socket activation is polling for the existence
 of the IPC socket and connecting to it. While this might be slightly easier to
 implement, it wastes CPU time and is considerably uglier than this solution
 :). After all, +lib/SocketActivation.pm+ contains only 54 SLOC.
index f3f80c96fbe4c9666d1a052a9d219eafad8266c0..acdc0a587e1834854fb6aebf532388e8cfde8d92 100644 (file)
@@ -152,7 +152,7 @@ and move it to the wanted size.
 
 You can also use <<binding_modes>> to define a mode for resizing via the
 keyboard. To see an example for this, look at the
-https://github.com/i3/i3/blob/next/i3.config.keycodes[default config] provided
+https://github.com/i3/i3/blob/next/etc/config.keycodes[default config] provided
 by i3.
 
 === Restarting i3 inplace
@@ -181,7 +181,7 @@ can also do that by using the <<floating_modifier>>. Another way to resize
 floating windows using the mouse is to right-click on the titlebar and drag.
 
 For resizing floating windows with your keyboard, see the resizing binding mode
-provided by the i3 https://github.com/i3/i3/blob/next/i3.config.keycodes[default config].
+provided by the i3 https://github.com/i3/i3/blob/next/etc/config.keycodes[default config].
 
 Floating windows are always on top of tiling windows.
 
@@ -610,11 +610,13 @@ new_window pixel 3
 
 You can hide container borders adjacent to the screen edges using
 +hide_edge_borders+. This is useful if you are using scrollbars, or do not want
-to waste even two pixels in displayspace. Default is none.
+to waste even two pixels in displayspace. The "smart" setting hides borders on
+workspaces with only one window visible, but keeps them on workspaces with
+multiple windows visible. Default is none.
 
 *Syntax*:
 -----------------------------------------------
-hide_edge_borders none|vertical|horizontal|both
+hide_edge_borders none|vertical|horizontal|both|smart
 -----------------------------------------------
 
 *Example*:
@@ -700,6 +702,38 @@ absolutely no plans to change this. If you need a more dynamic configuration
 you should create a little script which generates a configuration file and run
 it before starting i3 (for example in your +~/.xsession+ file).
 
+Also see <<xresources>> to learn how to create variables based on resources
+loaded from the X resource database.
+
+[[xresources]]
+=== X resources
+
+<<variables>> can also be created using a value configured in the X resource
+database. This is useful, for example, to avoid configuring color values within
+the i3 configuration. Instead, the values can be configured, once, in the X
+resource database to achieve an easily maintainable, consistent color theme
+across many X applications.
+
+Defining a resource will load this resource from the resource database and
+assign its value to the specified variable. A fallback must be specified in
+case the resource cannot be loaded from the database.
+
+*Syntax*:
+----------------------------------------------------
+set_from_resource $<name> <resource_name> <fallback>
+----------------------------------------------------
+
+*Example*:
+----------------------------------------------------------------------------
+# The ~/.Xresources should contain a line such as
+#     *color0: #121212
+# and must be loaded properly, e.g., by using
+#     xrdb ~/.Xresources
+# This value is picked up on by other applications (e.g., the URxvt terminal
+# emulator) and can be used in i3 like this:
+set_from_resource $black i3wm.color0 #000000
+----------------------------------------------------------------------------
+
 [[assign_workspace]]
 === Automatically putting clients on specific workspaces
 
@@ -1115,11 +1149,15 @@ show_marks yes
 Config files support line continuation, meaning when you end a line in a
 backslash character (`\`), the line-break will be ignored by the parser. This
 feature can be used to create more readable configuration files.
+Commented lines are not continued.
 
 *Examples*:
 -------------------
 bindsym Mod1+f \
 fullscreen toggle
+
+# this line is not continued \
+bindsym Mod1+F fullscreen toggle
 -------------------
 
 == Configuring i3bar
@@ -1372,7 +1410,7 @@ NetworkManager, VLC, Pidgin, etc. can place little icons.
 You can configure on which output (monitor) the icons should be displayed or
 you can turn off the functionality entirely.
 
-You can use mutliple +tray_output+ directives in your config to specify a list
+You can use multiple +tray_output+ directives in your config to specify a list
 of outputs on which you want the tray to appear. The first available output in
 that list as defined by the order of the directives will be used for the tray
 output.
@@ -1641,6 +1679,9 @@ bindsym $mod+x [class="Firefox" window_role="About"] kill
 
 # enable floating mode and move container to workspace 4
 for_window [class="^evil-app$"] floating enable, move container to workspace 4
+
+# move all floating windows to the scratchpad
+bindsym $mod+x [floating] move scratchpad
 ------------------------------------
 
 The criteria which are currently implemented are:
@@ -1683,6 +1724,10 @@ con_id::
        Compares the i3-internal container ID, which you can get via the IPC
        interface. Handy for scripting. Use the special value +\_\_focused__+
        to match only the currently focused window.
+floating::
+       Only matches floating windows. This criterion requires no value.
+tiling::
+       Only matches tiling windows. This criterion requires no value.
 
 The criteria +class+, +instance+, +role+, +title+, +workspace+ and +mark+ are
 actually regular expressions (PCRE). See +pcresyntax(3)+ or +perldoc perlre+ for
@@ -2050,6 +2095,7 @@ See <<move_to_outputs>> for how to move a container/workspace to a different
 RandR output.
 
 [[move_to_outputs]]
+[[_moving_containers_workspaces_to_randr_outputs]]
 === Moving containers/workspaces to RandR outputs
 
 To move a container to another RandR output (addressed by names like +LVDS1+ or
@@ -2057,10 +2103,10 @@ To move a container to another RandR output (addressed by names like +LVDS1+ or
 +right+, +up+ or +down+), there are two commands:
 
 *Syntax*:
-----------------------------------------------------
-move container to output left|right|down|up|<output>
-move workspace to output left|right|down|up|<output>
-----------------------------------------------------
+------------------------------------------------------------
+move container to output left|right|down|up|current|<output>
+move workspace to output left|right|down|up|current|<output>
+------------------------------------------------------------
 
 *Examples*:
 --------------------------------------------------------
@@ -2115,7 +2161,7 @@ floating containers.
 
 It is recommended to define bindings for resizing in a dedicated binding mode.
 See <<binding_modes>> and the example in the i3
-https://github.com/i3/i3/blob/next/i3.config.keycodes[default config] for more
+https://github.com/i3/i3/blob/next/etc/config.keycodes[default config] for more
 context.
 
 *Example*:
@@ -2204,7 +2250,7 @@ bindsym $mod+g exec i3-input -p 'goto ' -l 1 -P 'Goto: '
 ---------------------------------------
 
 Alternatively, if you do not want to mess with +i3-input+, you could create
-seperate bindings for a specific set of labels and then only use those labels.
+separate bindings for a specific set of labels and then only use those labels.
 ///////////////////////////////////////////////////////////////////
 
 [[pango_markup]]
@@ -2534,7 +2580,7 @@ have more than one monitor:
    track of which window you put where. Thus, you can use vim-like marks to
    quickly switch between windows. See <<vim_like_marks>>.
 4. For information on how to move existing workspaces between monitors,
-   see <<_moving_containers_workspaces_to_randr_outputs>>.
+   see <<move_to_outputs>>.
 
 == i3 and the rest of your software world
 
index 9e61131fef522214effbebeed01ee97312d7886c..88d37e2613246dc64e3baece460c3bf0e9975d6f 100644 (file)
@@ -44,7 +44,7 @@ process and/or need further help, do not hesitate to contact us!</p></div>
 </div>\r
 </div>\r
 <div class="sect1">\r
-<h2 id="_verify_you_are_using_i3_4_12">1. Verify you are using i3 ≥ 4.12</h2>\r
+<h2 id="_verify_you_are_using_i3_4_13">1. Verify you are using i3 ≥ 4.13</h2>\r
 <div class="sectionbody">\r
 <div class="paragraph"><p>Only the latest major version of i3 is supported. To verify which version\r
 you are running, use:</p></div>\r
index a2a6646508311fcd662c7ef13222e0b11e5d08d7..791b6af2b5f9918807ba66cac49d0e93a37102c2 100644 (file)
@@ -401,7 +401,7 @@ src/util.c
 </dt>\r
 <dd>\r
 <p>\r
-Contains useful functions which are not really dependant on anything.\r
+Contains useful functions which are not really dependent on anything.\r
 </p>\r
 </dd>\r
 <dt class="hdlist1">\r
@@ -973,7 +973,7 @@ Stack windows above each other, in reverse stack order (starting with the
 <li>\r
 <p>\r
 If the pointer needs to be warped to a different position (for example when\r
-   changing focus to a differnt output), it will be warped now.\r
+   changing focus to a different output), it will be warped now.\r
 </p>\r
 </li>\r
 <li>\r
@@ -1319,7 +1319,7 @@ empty.</p></div>
 be flattened.</p></div>\r
 </div>\r
 <div class="sect2">\r
-<h3 id="_case_3_moving_to_non_existant_top_bottom">17.3. Case 3: Moving to non-existant top/bottom</h3>\r
+<h3 id="_case_3_moving_to_non_existent_top_bottom">17.3. Case 3: Moving to non-existent top/bottom</h3>\r
 <div class="paragraph"><p>Like in case 1, the reference layout for this case is a single workspace in\r
 horizontal orientation with two containers on it. Focus is on the left\r
 container:</p></div>\r
@@ -1353,7 +1353,7 @@ container and the container above/below the current one (on the level of
 flattened.</p></div>\r
 </div>\r
 <div class="sect2">\r
-<h3 id="_case_4_moving_to_existant_top_bottom">17.4. Case 4: Moving to existant top/bottom</h3>\r
+<h3 id="_case_4_moving_to_existent_top_bottom">17.4. Case 4: Moving to existent top/bottom</h3>\r
 <div class="paragraph"><p>The reference layout for this case is a vertical workspace with two containers.\r
 The bottom one is a h-split containing two containers (1 and 2). Focus is on\r
 the bottom left container (1).</p></div>\r
index 1e9cb2d6f88f4ea5ce1c76c8f4e8d362c834db88..a9478fc3ac4fb4849c0ece3c2b5f98f0ce301200 100644 (file)
@@ -41,7 +41,7 @@ provides support for colors, urgency, shortening and easy manipulation.</p></div
 </div>\r
 </div>\r
 <div class="sect1">\r
-<h2 id="_rationale_for_chosing_json">1. Rationale for chosing JSON</h2>\r
+<h2 id="_rationale_for_choosing_json">1. Rationale for choosing JSON</h2>\r
 <div class="sectionbody">\r
 <div class="paragraph"><p>Before describing the protocol, let’s cover why JSON is a building block of\r
 this protocol.</p></div>\r
@@ -182,7 +182,7 @@ click_events
 </dt>\r
 <dd>\r
 <p>\r
-        If specified and true i3bar will write a infinite array (same as above)\r
+        If specified and true i3bar will write an infinite array (same as above)\r
         to your stdin.\r
 </p>\r
 </dd>\r
@@ -394,7 +394,7 @@ x, y
 </dt>\r
 <dd>\r
 <p>\r
-        X11 root window coordinates where the click occured\r
+        X11 root window coordinates where the click occurred\r
 </p>\r
 </dd>\r
 <dt class="hdlist1">\r
index 9f55e32d4844e93f0de1785911d7dc45264d21c4..39f6182959aa8b4e95e8ae52e7dfb05daaaf683e 100644 (file)
@@ -170,6 +170,14 @@ GET_VERSION (7)
         with the major, minor, patch and human-readable version.\r
 </p>\r
 </dd>\r
+<dt class="hdlist1">\r
+GET_BINDING_MODES (8)\r
+</dt>\r
+<dd>\r
+<p>\r
+        Gets a list of currently configured binding modes.\r
+</p>\r
+</dd>\r
 </dl></div>\r
 <div class="paragraph"><p>So, a typical message could look like this:</p></div>\r
 <div class="listingblock">\r
@@ -276,6 +284,14 @@ VERSION (7)
         Reply to the GET_VERSION message.\r
 </p>\r
 </dd>\r
+<dt class="hdlist1">\r
+BINDING_MODES (8)\r
+</dt>\r
+<dd>\r
+<p>\r
+        Reply to the GET_BINDING_MODES message.\r
+</p>\r
+</dd>\r
 </dl></div>\r
 </div>\r
 <div class="sect2">\r
@@ -515,7 +531,7 @@ border (string)
 </dt>\r
 <dd>\r
 <p>\r
-        Can be either "normal", "none" or "1pixel", dependending on the\r
+        Can be either "normal", "none" or "pixel", depending on the\r
         container’s border style.\r
 </p>\r
 </dd>\r
@@ -1109,6 +1125,15 @@ loaded_config_file_name (string)
 }</tt></pre>\r
 </div></div>\r
 </div>\r
+<div class="sect2">\r
+<h3 id="_binding_modes_reply">3.10. BINDING_MODES reply</h3>\r
+<div class="paragraph"><p>The reply consists of an array of all currently configured binding modes.</p></div>\r
+<div class="paragraph"><p><strong>Example:</strong></p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>["default", "resize"]</tt></pre>\r
+</div></div>\r
+</div>\r
 </div>\r
 </div>\r
 <div class="sect1">\r
@@ -1282,42 +1307,47 @@ defines whether pango markup shall be used for displaying this mode.</p></div>
 <div class="ulist"><ul>\r
 <li>\r
 <p>\r
-<tt>new</tt> - the window has become managed by i3\r
+<tt>new</tt> – the window has become managed by i3\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+<tt>close</tt> – the window has closed\r
 </p>\r
 </li>\r
 <li>\r
 <p>\r
-<tt>close</tt> - the window has closed\r
+<tt>focus</tt> – the window has received input focus\r
 </p>\r
 </li>\r
 <li>\r
 <p>\r
-<tt>focus</tt> - the window has received input focus\r
+<tt>title</tt> – the window&#8217;s title has changed\r
 </p>\r
 </li>\r
 <li>\r
 <p>\r
-<tt>title</tt> - the window&#8217;s title has changed\r
+<tt>fullscreen_mode</tt> – the window has entered or exited fullscreen mode\r
 </p>\r
 </li>\r
 <li>\r
 <p>\r
-<tt>fullscreen_mode</tt> - the window has entered or exited fullscreen mode\r
+<tt>move</tt> – the window has changed its position in the tree\r
 </p>\r
 </li>\r
 <li>\r
 <p>\r
-<tt>move</tt> - the window has changed its position in the tree\r
+<tt>floating</tt> – the window has transitioned to or from floating\r
 </p>\r
 </li>\r
 <li>\r
 <p>\r
-<tt>floating</tt> - the window has transitioned to or from floating\r
+<tt>urgent</tt> – the window has become urgent or lost its urgent status\r
 </p>\r
 </li>\r
 <li>\r
 <p>\r
-<tt>urgent</tt> - the window has become urgent or lost its urgent status\r
+<tt>mark</tt> – a mark has been added to or removed from the window\r
 </p>\r
 </li>\r
 </ul></div>\r
index 409ccf3f836e8e37e84cfe5653231eb0902afc6b..9fa9202743fd9881c9cc376bff7074c750c3e51f 100644 (file)
@@ -171,7 +171,7 @@ always be found under the symlink <tt>latest/</tt>. Unless told differently, it
 run the tests on a separate X server instance (using Xephyr).</p></div>\r
 <div class="paragraph"><p>Xephyr will open a window where you can inspect the running test. You can run\r
 the tests without an X session with Xvfb, such as with <tt>xvfb-run\r
-./complete-run</tt>. This will also speed up the tests signficantly especially on\r
+./complete-run</tt>. This will also speed up the tests significantly especially on\r
 machines without a powerful video card.</p></div>\r
 <div class="listingblock">\r
 <div class="title">Example invocation of complete-run.pl+</div>\r
@@ -252,7 +252,7 @@ current state (layout tree).</p></div>
 testsuite uses X11::XCB, a new (and quite specific to i3 at the moment) Perl\r
 module which uses the XCB protocol description to generate Perl bindings to\r
 X11. They work in a very similar way to libxcb (which i3 uses) and provide\r
-relatively high-level interfaces (objects such as <tt>X11::XCB::Window</tt>) aswell as\r
+relatively high-level interfaces (objects such as <tt>X11::XCB::Window</tt>) as well as\r
 access to the low-level interface, which is very useful when testing a window\r
 manager.</p></div>\r
 </div>\r
@@ -492,7 +492,7 @@ my $right = open_window($x);
 cmd 'focus left';\r
 is($x-&gt;input_focus, $left-&gt;id, 'left window focused');</tt></pre>\r
 </div></div>\r
-<div class="paragraph"><p>However, the test fails. Sometimes. Apparantly, there is a race condition in\r
+<div class="paragraph"><p>However, the test fails. Sometimes. Apparently, there is a race condition in\r
 your test. If you think about it, this is because you are using two different\r
 pieces of software: You tell i3 to update focus, i3 confirms that, and then you\r
 ask X11 to give you the current focus. There is a certain time i3 needs to\r
@@ -665,7 +665,7 @@ activation, we decreased the total amount of time necessary to run all tests
 (72 files at the time of writing) from &gt; 100 seconds to 16 seconds. This makes\r
 it significantly more attractive to run the test suite more often (or at all)\r
 during development.</p></div>\r
-<div class="paragraph"><p>An alternative approach to using socket activation is polling for the existance\r
+<div class="paragraph"><p>An alternative approach to using socket activation is polling for the existence\r
 of the IPC socket and connecting to it. While this might be slightly easier to\r
 implement, it wastes CPU time and is considerably uglier than this solution\r
 :). After all, <tt>lib/SocketActivation.pm</tt> contains only 54 SLOC.</p></div>\r
index 81c91043ee97be051264db44ee6c3c7184251a6f..e6afdf28c94699e6d8b2c4eed91bd715a4057bab 100644 (file)
@@ -205,7 +205,7 @@ it does not yet exist.</p></div>
 and move it to the wanted size.</p></div>\r
 <div class="paragraph"><p>You can also use <a href="#binding_modes">[binding_modes]</a> to define a mode for resizing via the\r
 keyboard. To see an example for this, look at the\r
-<a href="https://github.com/i3/i3/blob/next/i3.config.keycodes">default config</a> provided\r
+<a href="https://github.com/i3/i3/blob/next/etc/config.keycodes">default config</a> provided\r
 by i3.</p></div>\r
 </div>\r
 <div class="sect2">\r
@@ -232,7 +232,7 @@ around. By grabbing the borders and moving them you can resize the window. You
 can also do that by using the <a href="#floating_modifier">[floating_modifier]</a>. Another way to resize\r
 floating windows using the mouse is to right-click on the titlebar and drag.</p></div>\r
 <div class="paragraph"><p>For resizing floating windows with your keyboard, see the resizing binding mode\r
-provided by the i3 <a href="https://github.com/i3/i3/blob/next/i3.config.keycodes">default config</a>.</p></div>\r
+provided by the i3 <a href="https://github.com/i3/i3/blob/next/etc/config.keycodes">default config</a>.</p></div>\r
 <div class="paragraph"><p>Floating windows are always on top of tiling windows.</p></div>\r
 </div>\r
 </div>\r
@@ -674,11 +674,13 @@ new_window pixel 3</tt></pre>
 <h3 id="_hiding_vertical_borders">4.11. Hiding borders adjacent to the screen edges</h3>\r
 <div class="paragraph"><p>You can hide container borders adjacent to the screen edges using\r
 <tt>hide_edge_borders</tt>. This is useful if you are using scrollbars, or do not want\r
-to waste even two pixels in displayspace. Default is none.</p></div>\r
+to waste even two pixels in displayspace. The "smart" setting hides borders on\r
+workspaces with only one window visible, but keeps them on workspaces with\r
+multiple windows visible. Default is none.</p></div>\r
 <div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
 <div class="listingblock">\r
 <div class="content">\r
-<pre><tt>hide_edge_borders none|vertical|horizontal|both</tt></pre>\r
+<pre><tt>hide_edge_borders none|vertical|horizontal|both|smart</tt></pre>\r
 </div></div>\r
 <div class="paragraph"><p><strong>Example</strong>:</p></div>\r
 <div class="listingblock">\r
@@ -756,9 +758,38 @@ containing another variable. There is no fancy handling and there are
 absolutely no plans to change this. If you need a more dynamic configuration\r
 you should create a little script which generates a configuration file and run\r
 it before starting i3 (for example in your <tt>~/.xsession</tt> file).</p></div>\r
+<div class="paragraph"><p>Also see <a href="#xresources">[xresources]</a> to learn how to create variables based on resources\r
+loaded from the X resource database.</p></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="xresources">4.15. X resources</h3>\r
+<div class="paragraph"><p><a href="#variables">[variables]</a> can also be created using a value configured in the X resource\r
+database. This is useful, for example, to avoid configuring color values within\r
+the i3 configuration. Instead, the values can be configured, once, in the X\r
+resource database to achieve an easily maintainable, consistent color theme\r
+across many X applications.</p></div>\r
+<div class="paragraph"><p>Defining a resource will load this resource from the resource database and\r
+assign its value to the specified variable. A fallback must be specified in\r
+case the resource cannot be loaded from the database.</p></div>\r
+<div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>set_from_resource $&lt;name&gt; &lt;resource_name&gt; &lt;fallback&gt;</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p><strong>Example</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt># The ~/.Xresources should contain a line such as\r
+#     *color0: #121212\r
+# and must be loaded properly, e.g., by using\r
+#     xrdb ~/.Xresources\r
+# This value is picked up on by other applications (e.g., the URxvt terminal\r
+# emulator) and can be used in i3 like this:\r
+set_from_resource $black i3wm.color0 #000000</tt></pre>\r
+</div></div>\r
 </div>\r
 <div class="sect2">\r
-<h3 id="assign_workspace">4.15. Automatically putting clients on specific workspaces</h3>\r
+<h3 id="assign_workspace">4.16. Automatically putting clients on specific workspaces</h3>\r
 <div class="paragraph"><p>To automatically make a specific window show up on a specific workspace, you\r
 can use an <strong>assignment</strong>. You can match windows by using any criteria,\r
 see <a href="#command_criteria">[command_criteria]</a>. It is recommended that you match on window classes\r
@@ -827,7 +858,7 @@ exec --no-startup-id i3-msg 'workspace 3; exec iceweasel; workspace 1'</tt></pre
 </div></div>\r
 </div>\r
 <div class="sect2">\r
-<h3 id="_automatically_starting_applications_on_i3_startup">4.16. Automatically starting applications on i3 startup</h3>\r
+<h3 id="_automatically_starting_applications_on_i3_startup">4.17. Automatically starting applications on i3 startup</h3>\r
 <div class="paragraph"><p>By using the <tt>exec</tt> keyword outside a keybinding, you can configure\r
 which commands will be performed by i3 on initial startup. <tt>exec</tt>\r
 commands will not run when restarting i3, if you need a command to run\r
@@ -854,7 +885,7 @@ exec --no-startup-id urxvt</tt></pre>
 <div class="paragraph"><p>The flag --no-startup-id is explained in <a href="#exec">[exec]</a>.</p></div>\r
 </div>\r
 <div class="sect2">\r
-<h3 id="workspace_screen">4.17. Automatically putting workspaces on specific screens</h3>\r
+<h3 id="workspace_screen">4.18. Automatically putting workspaces on specific screens</h3>\r
 <div class="paragraph"><p>If you assign clients to workspaces, it might be handy to put the\r
 workspaces on specific screens. Also, the assignment of workspaces to screens\r
 will determine which workspace i3 uses for a new screen when adding screens\r
@@ -878,7 +909,7 @@ workspace "2: vim" output VGA1</tt></pre>
 </div></div>\r
 </div>\r
 <div class="sect2">\r
-<h3 id="_changing_colors">4.18. Changing colors</h3>\r
+<h3 id="_changing_colors">4.19. Changing colors</h3>\r
 <div class="paragraph"><p>You can change all colors which i3 uses to draw the window decorations.</p></div>\r
 <div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
 <div class="listingblock">\r
@@ -964,7 +995,7 @@ single windows within a split container, which are otherwise indistinguishable
 from single windows outside of a split container.</p></div>\r
 </div>\r
 <div class="sect2">\r
-<h3 id="_interprocess_communication">4.19. Interprocess communication</h3>\r
+<h3 id="_interprocess_communication">4.20. Interprocess communication</h3>\r
 <div class="paragraph"><p>i3 uses Unix sockets to provide an IPC interface. This allows third-party\r
 programs to get information from i3, such as the current workspaces\r
 (to display a workspace bar), and to control i3.</p></div>\r
@@ -986,7 +1017,7 @@ user can create that directory.</p></div>
 the next section.</p></div>\r
 </div>\r
 <div class="sect2">\r
-<h3 id="_focus_follows_mouse">4.20. Focus follows mouse</h3>\r
+<h3 id="_focus_follows_mouse">4.21. Focus follows mouse</h3>\r
 <div class="paragraph"><p>By default, window focus follows your mouse movements. However, if you have a\r
 setup where your mouse usually is in your way (like a touchpad on your laptop\r
 which you do not want to disable completely), you might want to disable <em>focus\r
@@ -1005,7 +1036,7 @@ links in your browser window).</p></div>
 </div></div>\r
 </div>\r
 <div class="sect2">\r
-<h3 id="_mouse_warping">4.21. Mouse warping</h3>\r
+<h3 id="_mouse_warping">4.22. Mouse warping</h3>\r
 <div class="paragraph"><p>By default, when switching focus to a window on a different output (e.g.\r
 focusing a window on workspace 3 on output VGA-1, coming from workspace 2 on\r
 LVDS-1), the mouse cursor is warped to the center of that window.</p></div>\r
@@ -1024,7 +1055,7 @@ behavior described above.</p></div>
 </div></div>\r
 </div>\r
 <div class="sect2">\r
-<h3 id="_popups_during_fullscreen_mode">4.22. Popups during fullscreen mode</h3>\r
+<h3 id="_popups_during_fullscreen_mode">4.23. Popups during fullscreen mode</h3>\r
 <div class="paragraph"><p>When you are in fullscreen mode, some applications still open popup windows\r
 (take Xpdf for example). This is because these applications may not be aware\r
 that they are in fullscreen mode (they do not check the corresponding hint).\r
@@ -1061,7 +1092,7 @@ Leave fullscreen mode.
 </div></div>\r
 </div>\r
 <div class="sect2">\r
-<h3 id="_focus_wrapping">4.23. Focus wrapping</h3>\r
+<h3 id="_focus_wrapping">4.24. Focus wrapping</h3>\r
 <div class="paragraph"><p>When being in a tabbed or stacked container, the first container will be\r
 focused when you use <tt>focus down</tt> on the last container&#8201;&#8212;&#8201;the focus wraps. If\r
 however there is another stacked/tabbed container in that direction, focus will\r
@@ -1083,7 +1114,7 @@ will always wrap.</p></div>
 </div></div>\r
 </div>\r
 <div class="sect2">\r
-<h3 id="_forcing_xinerama">4.24. Forcing Xinerama</h3>\r
+<h3 id="_forcing_xinerama">4.25. Forcing Xinerama</h3>\r
 <div class="paragraph"><p>As explained in-depth in <a href="http://i3wm.org/docs/multi-monitor.html">http://i3wm.org/docs/multi-monitor.html</a>, some X11\r
 video drivers (especially the nVidia binary driver) only provide support for\r
 Xinerama instead of RandR. In such a situation, i3 must be told to use the\r
@@ -1106,7 +1137,7 @@ that’s it).</p></div>
 Xinerama, instead they are counted up, starting at 0: <tt>xinerama-0</tt>, <tt>xinerama-1</tt>, …</p></div>\r
 </div>\r
 <div class="sect2">\r
-<h3 id="_automatic_back_and_forth_when_switching_to_the_current_workspace">4.25. Automatic back-and-forth when switching to the current workspace</h3>\r
+<h3 id="_automatic_back_and_forth_when_switching_to_the_current_workspace">4.26. Automatic back-and-forth when switching to the current workspace</h3>\r
 <div class="paragraph"><p>This configuration directive enables automatic <tt>workspace back_and_forth</tt> (see\r
 <a href="#back_and_forth">[back_and_forth]</a>) when switching to the workspace that is currently focused.</p></div>\r
 <div class="paragraph"><p>For instance: Assume you are on workspace "1: www" and switch to "2: IM" using\r
@@ -1124,7 +1155,7 @@ came from now, you can just press $mod+2 again to switch back to "1: www".</p></
 </div></div>\r
 </div>\r
 <div class="sect2">\r
-<h3 id="_delaying_urgency_hint_reset_on_workspace_change">4.26. Delaying urgency hint reset on workspace change</h3>\r
+<h3 id="_delaying_urgency_hint_reset_on_workspace_change">4.27. Delaying urgency hint reset on workspace change</h3>\r
 <div class="paragraph"><p>If an application on another workspace sets an urgency hint, switching to this\r
 workspace may lead to immediate focus of the application, which also means the\r
 window decoration color would be immediately reset to <tt>client.focused</tt>. This\r
@@ -1146,7 +1177,7 @@ value to 0 disables this feature.</p></div>
 </div></div>\r
 </div>\r
 <div class="sect2">\r
-<h3 id="focus_on_window_activation">4.27. Focus on window activation</h3>\r
+<h3 id="focus_on_window_activation">4.28. Focus on window activation</h3>\r
 <div class="paragraph"><p>If a window is activated, e.g., via <tt>google-chrome www.google.com</tt>, it may request\r
 to take focus. Since this may not preferable, different reactions can be configured.</p></div>\r
 <div class="paragraph"><p>Note that this may not affect windows that are being opened. To prevent new windows\r
@@ -1194,7 +1225,7 @@ none
 </dl></div>\r
 </div>\r
 <div class="sect2">\r
-<h3 id="show_marks">4.28. Drawing marks on window decoration</h3>\r
+<h3 id="show_marks">4.29. Drawing marks on window decoration</h3>\r
 <div class="paragraph"><p>If activated, marks on windows are drawn in their window decoration. However,\r
 any mark starting with an underscore in its name (<tt>_</tt>) will not be drawn even if\r
 this option is activated.</p></div>\r
@@ -1211,15 +1242,19 @@ this option is activated.</p></div>
 </div></div>\r
 </div>\r
 <div class="sect2">\r
-<h3 id="line_continuation">4.29. Line continuation</h3>\r
+<h3 id="line_continuation">4.30. Line continuation</h3>\r
 <div class="paragraph"><p>Config files support line continuation, meaning when you end a line in a\r
 backslash character (<tt>\</tt>), the line-break will be ignored by the parser. This\r
-feature can be used to create more readable configuration files.</p></div>\r
+feature can be used to create more readable configuration files.\r
+Commented lines are not continued.</p></div>\r
 <div class="paragraph"><p><strong>Examples</strong>:</p></div>\r
 <div class="listingblock">\r
 <div class="content">\r
 <pre><tt>bindsym Mod1+f \\r
-fullscreen toggle</tt></pre>\r
+fullscreen toggle\r
+\r
+# this line is not continued \\r
+bindsym Mod1+F fullscreen toggle</tt></pre>\r
 </div></div>\r
 </div>\r
 </div>\r
@@ -1499,7 +1534,7 @@ bar {
 NetworkManager, VLC, Pidgin, etc. can place little icons.</p></div>\r
 <div class="paragraph"><p>You can configure on which output (monitor) the icons should be displayed or\r
 you can turn off the functionality entirely.</p></div>\r
-<div class="paragraph"><p>You can use mutliple <tt>tray_output</tt> directives in your config to specify a list\r
+<div class="paragraph"><p>You can use multiple <tt>tray_output</tt> directives in your config to specify a list\r
 of outputs on which you want the tray to appear. The first available output in\r
 that list as defined by the order of the directives will be used for the tray\r
 output.</p></div>\r
@@ -1825,7 +1860,10 @@ bindsym $mod+x [class="(?i)firefox"] kill
 bindsym $mod+x [class="Firefox" window_role="About"] kill\r
 \r
 # enable floating mode and move container to workspace 4\r
-for_window [class="^evil-app$"] floating enable, move container to workspace 4</tt></pre>\r
+for_window [class="^evil-app$"] floating enable, move container to workspace 4\r
+\r
+# move all floating windows to the scratchpad\r
+bindsym $mod+x [floating] move scratchpad</tt></pre>\r
 </div></div>\r
 <div class="paragraph"><p>The criteria which are currently implemented are:</p></div>\r
 <div class="dlist"><dl>\r
@@ -1927,6 +1965,22 @@ con_id
         to match only the currently focused window.\r
 </p>\r
 </dd>\r
+<dt class="hdlist1">\r
+floating\r
+</dt>\r
+<dd>\r
+<p>\r
+        Only matches floating windows. This criterion requires no value.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+tiling\r
+</dt>\r
+<dd>\r
+<p>\r
+        Only matches tiling windows. This criterion requires no value.\r
+</p>\r
+</dd>\r
 </dl></div>\r
 <div class="paragraph"><p>The criteria <tt>class</tt>, <tt>instance</tt>, <tt>role</tt>, <tt>title</tt>, <tt>workspace</tt> and <tt>mark</tt> are\r
 actually regular expressions (PCRE). See <tt>pcresyntax(3)</tt> or <tt>perldoc perlre</tt> for\r
@@ -2316,15 +2370,15 @@ bindsym $mod+r exec i3-input -F 'rename workspace to "%s"' -P 'New name: '</tt><
 RandR output.</p></div>\r
 </div>\r
 <div class="sect2">\r
-<h3 id="move_to_outputs">6.9. Moving containers/workspaces to RandR outputs</h3>\r
+<h3 id="_moving_containers_workspaces_to_randr_outputs">6.9. Moving containers/workspaces to RandR outputs</h3>\r
 <div class="paragraph"><p>To move a container to another RandR output (addressed by names like <tt>LVDS1</tt> or\r
 <tt>VGA1</tt>) or to a RandR output identified by a specific direction (like <tt>left</tt>,\r
 <tt>right</tt>, <tt>up</tt> or <tt>down</tt>), there are two commands:</p></div>\r
 <div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
 <div class="listingblock">\r
 <div class="content">\r
-<pre><tt>move container to output left|right|down|up|&lt;output&gt;\r
-move workspace to output left|right|down|up|&lt;output&gt;</tt></pre>\r
+<pre><tt>move container to output left|right|down|up|current|&lt;output&gt;\r
+move workspace to output left|right|down|up|current|&lt;output&gt;</tt></pre>\r
 </div></div>\r
 <div class="paragraph"><p><strong>Examples</strong>:</p></div>\r
 <div class="listingblock">\r
@@ -2376,7 +2430,7 @@ default is 10 percentage points). Note that <tt>resize set</tt> will only work f
 floating containers.</p></div>\r
 <div class="paragraph"><p>It is recommended to define bindings for resizing in a dedicated binding mode.\r
 See <a href="#binding_modes">[binding_modes]</a> and the example in the i3\r
-<a href="https://github.com/i3/i3/blob/next/i3.config.keycodes">default config</a> for more\r
+<a href="https://github.com/i3/i3/blob/next/etc/config.keycodes">default config</a> for more\r
 context.</p></div>\r
 <div class="paragraph"><p><strong>Example</strong>:</p></div>\r
 <div class="listingblock">\r
@@ -2797,7 +2851,7 @@ If you have many workspaces on many monitors, it might get hard to keep
 <li>\r
 <p>\r
 For information on how to move existing workspaces between monitors,\r
-   see <a href="#_moving_containers_workspaces_to_randr_outputs">[_moving_containers_workspaces_to_randr_outputs]</a>.\r
+   see <a href="#move_to_outputs">[move_to_outputs]</a>.\r
 </p>\r
 </li>\r
 </ol></div>\r