From b7b358394f5c709bb8c098e4f3d29e4e2816371f Mon Sep 17 00:00:00 2001 From: Michael Stapelberg Date: Tue, 8 Nov 2016 19:55:30 +0100 Subject: [PATCH] update docs for 4.13 --- _docs/debugging | 2 +- _docs/hacking-howto | 8 +-- _docs/i3bar-protocol | 6 +-- _docs/ipc | 32 ++++++++---- _docs/testsuite | 8 +-- _docs/userguide | 70 ++++++++++++++++++++----- docs/debugging.html | 2 +- docs/hacking-howto.html | 8 +-- docs/i3bar-protocol.html | 6 +-- docs/ipc.html | 48 +++++++++++++---- docs/testsuite.html | 8 +-- docs/userguide.html | 110 +++++++++++++++++++++++++++++---------- 12 files changed, 226 insertions(+), 82 deletions(-) diff --git a/_docs/debugging b/_docs/debugging index 431a67a..e4c4fa9 100644 --- a/_docs/debugging +++ b/_docs/debugging @@ -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: diff --git a/_docs/hacking-howto b/_docs/hacking-howto index 247a179..74a690e 100644 --- a/_docs/hacking-howto +++ b/_docs/hacking-howto @@ -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 diff --git a/_docs/i3bar-protocol b/_docs/i3bar-protocol index 3ae1445..ebd3b83 100644 --- a/_docs/i3bar-protocol +++ b/_docs/i3bar-protocol @@ -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) diff --git a/_docs/ipc b/_docs/ipc index dc4e694..fda289a 100644 --- 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 diff --git a/_docs/testsuite b/_docs/testsuite index 8fdb963..71c6a42 100644 --- a/_docs/testsuite +++ b/_docs/testsuite @@ -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. diff --git a/_docs/userguide b/_docs/userguide index f3f80c9..acdc0a5 100644 --- a/_docs/userguide +++ b/_docs/userguide @@ -152,7 +152,7 @@ and move it to the wanted size. You can also use <> 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 <>. 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 <> to learn how to create variables based on resources +loaded from the X resource database. + +[[xresources]] +=== X resources + +<> 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 $ +---------------------------------------------------- + +*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 <> 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| -move workspace to output left|right|down|up| ----------------------------------------------------- +------------------------------------------------------------ +move container to output left|right|down|up|current| +move workspace to output left|right|down|up|current| +------------------------------------------------------------ *Examples*: -------------------------------------------------------- @@ -2115,7 +2161,7 @@ floating containers. It is recommended to define bindings for resizing in a dedicated binding mode. See <> 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 <>. 4. For information on how to move existing workspaces between monitors, - see <<_moving_containers_workspaces_to_randr_outputs>>. + see <>. == i3 and the rest of your software world diff --git a/docs/debugging.html b/docs/debugging.html index 9e61131..88d37e2 100644 --- a/docs/debugging.html +++ b/docs/debugging.html @@ -44,7 +44,7 @@ process and/or need further help, do not hesitate to contact us!

-

1. Verify you are using i3 ≥ 4.12

+

1. Verify you are using i3 ≥ 4.13

Only the latest major version of i3 is supported. To verify which version you are running, use:

diff --git a/docs/hacking-howto.html b/docs/hacking-howto.html index a2a6646..791b6af 100644 --- a/docs/hacking-howto.html +++ b/docs/hacking-howto.html @@ -401,7 +401,7 @@ src/util.c

-Contains useful functions which are not really dependant on anything. +Contains useful functions which are not really dependent on anything.

@@ -973,7 +973,7 @@ Stack windows above each other, in reverse stack order (starting with the
  • 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.

  • @@ -1319,7 +1319,7 @@ empty.

  • be flattened.

    -

    17.3. Case 3: Moving to non-existant top/bottom

    +

    17.3. 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 container:

    @@ -1353,7 +1353,7 @@ container and the container above/below the current one (on the level of flattened.

    -

    17.4. Case 4: Moving to existant top/bottom

    +

    17.4. 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 the bottom left container (1).

    diff --git a/docs/i3bar-protocol.html b/docs/i3bar-protocol.html index 1e9cb2d..a9478fc 100644 --- a/docs/i3bar-protocol.html +++ b/docs/i3bar-protocol.html @@ -41,7 +41,7 @@ provides support for colors, urgency, shortening and easy manipulation.

    -

    1. Rationale for chosing JSON

    +

    1. Rationale for choosing JSON

    Before describing the protocol, let’s cover why JSON is a building block of this protocol.

    @@ -182,7 +182,7 @@ 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.

    @@ -394,7 +394,7 @@ x, y

    - X11 root window coordinates where the click occured + X11 root window coordinates where the click occurred

    diff --git a/docs/ipc.html b/docs/ipc.html index 9f55e32..39f6182 100644 --- a/docs/ipc.html +++ b/docs/ipc.html @@ -170,6 +170,14 @@ GET_VERSION (7) 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:

    @@ -276,6 +284,14 @@ VERSION (7) Reply to the GET_VERSION message.

    +
    +BINDING_MODES (8) +
    +
    +

    + Reply to the GET_BINDING_MODES message. +

    +
    @@ -515,7 +531,7 @@ 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.

    @@ -1109,6 +1125,15 @@ loaded_config_file_name (string) }
    +
    +

    3.10. BINDING_MODES reply

    +

    The reply consists of an array of all currently configured binding modes.

    +

    Example:

    +
    +
    +
    ["default", "resize"]
    +
    +
    @@ -1282,42 +1307,47 @@ defines whether pango markup shall be used for displaying this mode.

    • -new - the window has become managed by i3 +new – the window has become managed by i3 +

      +
    • +
    • +

      +close – the window has closed

    • -close - the window has closed +focus – the window has received input focus

    • -focus - the window has received input focus +title – the window’s title has changed

    • -title - the window’s title has changed +fullscreen_mode – the window has entered or exited fullscreen mode

    • -fullscreen_mode - the window has entered or exited fullscreen mode +move – the window has changed its position in the tree

    • -move - the window has changed its position in the tree +floating – the window has transitioned to or from floating

    • -floating - the window has transitioned to or from floating +urgent – the window has become urgent or lost its urgent status

    • -urgent - the window has become urgent or lost its urgent status +mark – a mark has been added to or removed from the window

    diff --git a/docs/testsuite.html b/docs/testsuite.html index 409ccf3..9fa9202 100644 --- a/docs/testsuite.html +++ b/docs/testsuite.html @@ -171,7 +171,7 @@ always be found under the symlink latest/. Unless told differently, it 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+
    @@ -252,7 +252,7 @@ current state (layout tree).

    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.

    @@ -492,7 +492,7 @@ my $right = open_window($x); 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 @@ -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 > 100 seconds to 16 seconds. This makes 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.

    diff --git a/docs/userguide.html b/docs/userguide.html index 81c9104..e6afdf2 100644 --- a/docs/userguide.html +++ b/docs/userguide.html @@ -205,7 +205,7 @@ it does not yet exist.

    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 -default config provided +default config provided by i3.

    @@ -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 [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 default config.

    +provided by the i3 default config.

    Floating windows are always on top of tiling windows.

    @@ -674,11 +674,13 @@ new_window pixel 3

    4.11. Hiding borders adjacent to the screen edges

    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:

    @@ -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 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.

    + +
    +

    4.15. 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
    +
    -

    4.15. Automatically putting clients on specific workspaces

    +

    4.16. Automatically putting clients on specific workspaces

    To automatically make a specific window show up on a specific workspace, you can use an assignment. You can match windows by using any criteria, see [command_criteria]. It is recommended that you match on window classes @@ -827,7 +858,7 @@ exec --no-startup-id i3-msg 'workspace 3; exec iceweasel; workspace 1'

    -

    4.16. Automatically starting applications on i3 startup

    +

    4.17. Automatically starting applications on i3 startup

    By using the exec keyword outside a keybinding, you can configure which commands will be performed by i3 on initial startup. exec commands will not run when restarting i3, if you need a command to run @@ -854,7 +885,7 @@ exec --no-startup-id urxvt

    The flag --no-startup-id is explained in [exec].

    -

    4.17. Automatically putting workspaces on specific screens

    +

    4.18. Automatically putting workspaces on specific screens

    If you assign clients to workspaces, it might be handy to put the workspaces on specific screens. Also, the assignment of workspaces to screens will determine which workspace i3 uses for a new screen when adding screens @@ -878,7 +909,7 @@ workspace "2: vim" output VGA1

    -

    4.18. Changing colors

    +

    4.19. Changing colors

    You can change all colors which i3 uses to draw the window decorations.

    Syntax:

    @@ -964,7 +995,7 @@ single windows within a split container, which are otherwise indistinguishable from single windows outside of a split container.

    -

    4.19. Interprocess communication

    +

    4.20. Interprocess communication

    i3 uses Unix sockets to provide an IPC interface. This allows third-party programs to get information from i3, such as the current workspaces (to display a workspace bar), and to control i3.

    @@ -986,7 +1017,7 @@ user can create that directory.

    the next section.

    -

    4.20. Focus follows mouse

    +

    4.21. Focus follows mouse

    By default, window focus follows your mouse movements. However, if you have a setup where your mouse usually is in your way (like a touchpad on your laptop which you do not want to disable completely), you might want to disable focus @@ -1005,7 +1036,7 @@ links in your browser window).

    -

    4.21. Mouse warping

    +

    4.22. Mouse warping

    By default, when switching focus to a window on a different output (e.g. focusing a window on workspace 3 on output VGA-1, coming from workspace 2 on LVDS-1), the mouse cursor is warped to the center of that window.

    @@ -1024,7 +1055,7 @@ behavior described above.

    -

    4.22. Popups during fullscreen mode

    +

    4.23. Popups during fullscreen mode

    When you are in fullscreen mode, some applications still open popup windows (take Xpdf for example). This is because these applications may not be aware that they are in fullscreen mode (they do not check the corresponding hint). @@ -1061,7 +1092,7 @@ Leave fullscreen mode.

    -

    4.23. Focus wrapping

    +

    4.24. Focus wrapping

    When being in a tabbed or stacked container, the first container will be focused when you use focus down on the last container — the focus wraps. If however there is another stacked/tabbed container in that direction, focus will @@ -1083,7 +1114,7 @@ will always wrap.

    -

    4.24. Forcing Xinerama

    +

    4.25. Forcing Xinerama

    As explained in-depth in http://i3wm.org/docs/multi-monitor.html, some X11 video drivers (especially the nVidia binary driver) only provide support for Xinerama instead of RandR. In such a situation, i3 must be told to use the @@ -1106,7 +1137,7 @@ that’s it).

    Xinerama, instead they are counted up, starting at 0: xinerama-0, xinerama-1, …

    -

    4.25. Automatic back-and-forth when switching to the current workspace

    +

    4.26. Automatic back-and-forth when switching to the current workspace

    This configuration directive enables automatic workspace back_and_forth (see [back_and_forth]) when switching to the workspace that is currently focused.

    For instance: Assume you are on workspace "1: www" and switch to "2: IM" using @@ -1124,7 +1155,7 @@ came from now, you can just press $mod+2 again to switch back to "1: www".

    -

    4.26. Delaying urgency hint reset on workspace change

    +

    4.27. Delaying urgency hint reset on workspace change

    If an application on another workspace sets an urgency hint, switching to this workspace may lead to immediate focus of the application, which also means the window decoration color would be immediately reset to client.focused. This @@ -1146,7 +1177,7 @@ value to 0 disables this feature.

    -

    4.27. Focus on window activation

    +

    4.28. Focus on window activation

    If a window is activated, e.g., via google-chrome www.google.com, it may request to take focus. Since this may not preferable, different reactions can be configured.

    Note that this may not affect windows that are being opened. To prevent new windows @@ -1194,7 +1225,7 @@ none

    -

    4.28. Drawing marks on window decoration

    +

    4.29. Drawing marks on window decoration

    If activated, marks on windows are drawn in their window decoration. However, any mark starting with an underscore in its name (_) will not be drawn even if this option is activated.

    @@ -1211,15 +1242,19 @@ this option is activated.

    -

    4.29. Line continuation

    +

    4.30. Line continuation

    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.

    +feature can be used to create more readable configuration files. +Commented lines are not continued.

    Examples:

    bindsym Mod1+f \
    -fullscreen toggle
    +fullscreen toggle + +# this line is not continued \ +bindsym Mod1+F fullscreen toggle
    @@ -1499,7 +1534,7 @@ bar { 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.

    @@ -1825,7 +1860,10 @@ bindsym $mod+x [class="(?i)firefox"] kill 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 +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:

    @@ -1927,6 +1965,22 @@ con_id 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 @@ -2316,15 +2370,15 @@ bindsym $mod+r exec i3-input -F 'rename workspace to "%s"' -P 'New name: '< RandR output.

    -

    6.9. Moving containers/workspaces to RandR outputs

    +

    6.9. Moving containers/workspaces to RandR outputs

    To move a container to another RandR output (addressed by names like LVDS1 or VGA1) or to a RandR output identified by a specific direction (like left, 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:

    @@ -2376,7 +2430,7 @@ default is 10 percentage points). Note that resize set will only work f floating containers.

    It is recommended to define bindings for resizing in a dedicated binding mode. See [binding_modes] and the example in the i3 -default config for more +default config for more context.

    Example:

    @@ -2797,7 +2851,7 @@ If you have many workspaces on many monitors, it might get hard to keep
  • For information on how to move existing workspaces between monitors, - see [_moving_containers_workspaces_to_randr_outputs]. + see [move_to_outputs].

  • -- 2.39.2