]> git.sur5r.net Git - i3/i3.github.io/commitdiff
update docs for 4.16
authorMichael Stapelberg <michael@stapelberg.de>
Sun, 4 Nov 2018 13:50:46 +0000 (14:50 +0100)
committerMichael Stapelberg <michael@stapelberg.de>
Sun, 4 Nov 2018 13:50:46 +0000 (14:50 +0100)
14 files changed:
_docs/debugging
_docs/i3bar-protocol
_docs/ipc
_docs/layout-saving
_docs/userguide
docs/debugging.html
docs/hacking-howto.html
docs/i3bar-protocol.html
docs/ipc.html
docs/layout-saving.html
docs/multi-monitor.html
docs/testsuite.html
docs/userguide.html
docs/wsbar.html

index 9734b212e16325ef5e0d789d2674d95ed8ef71af..2343a7499c5930b56dca9f8b17e0f200d3d9c9e6 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.15
+== Verify you are using i3 ≥ 4.16
 
 Only the latest major version of i3 is supported. To verify which version
 you are running, use:
@@ -160,7 +160,8 @@ flood kicks.
 
 == Debugging i3bar
 
-To debug i3bar problems, add +verbose yes+ to all +bar {}+ blocks in your i3
+To debug i3bar problems, use the +--verbose+ commandline parameter,
+or add +verbose yes+ to all +bar {}+ blocks in your i3
 config, reload your config and then restart all i3bar instances like this:
 
 ---------------------------------------------------------------------
index cf86531cc5f399774e983770719245729693c17a..826cae53f018bcc21abfa34a1457de07552bf9bd 100644 (file)
@@ -107,7 +107,7 @@ stop_signal::
        processing.
        The default value (if none is specified) is SIGSTOP.
 cont_signal::
-       Specify to i3bar the signal (as an integer)to send to continue your
+       Specify to i3bar the signal (as an integer) to send to continue your
        processing.
        The default value (if none is specified) is SIGCONT.
 click_events::
@@ -118,7 +118,8 @@ click_events::
 
 full_text::
        The +full_text+ will be displayed by i3bar on the status line. This is the
-       only required key.
+       only required key. If +full_text+ is an empty string, the block will be
+       skipped.
 short_text::
        Where appropriate, the +short_text+ (string) entry should also be
        provided. It will be used in case the status line needs to be shortened
@@ -242,6 +243,9 @@ relative_x, relative_y::
     of the block
 width, height::
     Width and height (in px) of the block
+modifiers::
+    An array of the modifiers active when the click occurred. The order in which
+    modifiers are listed is not guaranteed.
 
 *Example*:
 ------------------------------------------
@@ -249,6 +253,7 @@ width, height::
  "name": "ethernet",
  "instance": "eth0",
  "button": 1,
+ "modifiers": ["Shift", "Mod1"],
  "x": 1320,
  "y": 1400,
  "relative_x": 12,
index 8b767adebffa127bab432c2c9607b57ce491567b..bcf8df1aa4abe5ba1c86fced66f689aba2fd05b4 100644 (file)
--- a/_docs/ipc
+++ b/_docs/ipc
@@ -65,6 +65,7 @@ to do that).
 | 8 | +GET_BINDING_MODES+ | <<_binding_modes_reply,BINDING_MODES>> | Gets the names of all currently configured binding modes.
 | 9 | +GET_CONFIG+ | <<_config_reply,CONFIG>> | Returns the last loaded i3 config.
 | 10 | +SEND_TICK+ | <<_tick_reply,TICK>> | Sends a tick event with the specified payload.
+| 11 | +SYNC+ | <<_sync_reply,SYNC>> | Sends an i3 sync event with the specified random value to the specified window.
 |======================================================
 
 So, a typical message could look like this:
@@ -327,6 +328,8 @@ window (integer)::
        This field is set to null for split containers or otherwise empty
        containers. This ID corresponds to what xwininfo(1) and other
        X11-related tools display (usually in hex).
+window_properties (map)::
+       X11 window properties title, instance, class, window_role and transient_for.
 urgent (bool)::
        Whether this container (window, split container, floating container or
        workspace) has the urgency hint set, directly or indirectly. All parent
@@ -422,6 +425,12 @@ JSON dump:
            "width": 1280,
            "height": 782
          },
+         "window_properties": {
+           "class": "Evince",
+           "instance": "evince",
+           "title": "Properties",
+           "transient_for": 52428808
+         },
          "floating_nodes": [],
          "nodes": [
 
@@ -654,6 +663,18 @@ events generated prior to the +SEND_TICK+ message (happened-before relation).
 { "success": true }
 -------------------
 
+[[_sync_reply]]
+=== SYNC reply
+
+The reply is a map containing the "success" member. After the reply was
+received, the https://i3wm.org/docs/testsuite.html#i3_sync[i3 sync message] was
+responded to.
+
+*Example:*
+-------------------
+{ "success": true }
+-------------------
+
 == Events
 
 [[events]]
@@ -672,6 +693,14 @@ program does not want to cope which such kinds of race conditions (an
 event based library may not have a problem here), I suggest you create a
 separate connection to receive events.
 
+If an event message needs to be sent and the socket is not writeable (write
+returns EAGAIN, happens when the socket doesn't have enough buffer space for
+writing new data) then i3 uses a queue system to store outgoing messages for
+each client. This is combined with a timer: if the message queue for a client is
+not empty and no data where successfully written in the past 10 seconds, the
+connection is killed. Practically, this means that your client should try to
+always read events from the socket to avoid having its connection closed.
+
 === Subscribing to events
 
 By sending a message of type SUBSCRIBE with a JSON-encoded array as payload
index e90ecada87fdb35c3c4727d55b86faccaa812e74..f31b5e21ab367b48740d189e5a208a021aba15c4 100644 (file)
@@ -219,13 +219,15 @@ the window which matches any of the criteria. As an example:
 
 A layout file as generated by +i3-save-tree(1)+ is not strictly valid JSON:
 
-1. Layout files contain multiple “JSON documents” on the top level, whereas the
-   JSON standard only allows precisely one “document” (array or hash).
+1. Layout files contain multiple “JSON texts” at the top level. The JSON
+   standard doesn't prohibit this, but in practice most JSON parsers only
+   allow precisely one “text” per document/file, and will mark multiple texts
+   as invalid JSON.
 
-2. Layout files contain comments which are not standardized, but understood by
-   many parsers.
+2. Layout files contain comments which are not allowed by the JSON standard,
+   but are understood by many parsers.
 
-Both deviations from the JSON standard are to make manual editing by humans
+Both of these deviations from the norm are to make manual editing by humans
 easier. In case you are writing a more elaborate tool for manipulating these
 layouts, you can either use a JSON parser that supports these deviations (for
 example libyajl), transform the layout file to a JSON-conforming file, or
index a491d4e6a5f06aebf721f0002d16637d5450c06f..91060ab2cc6df006f4c23a80665976d0c503041b 100644 (file)
@@ -245,9 +245,11 @@ you open a new terminal, it will open below the current one.
 
 So, how can you open a new terminal window to the *right* of the current one?
 The solution is to use +focus parent+, which will focus the +Parent Container+ of
-the current +Container+. In this case, you would focus the +Vertical Split
-Container+ which is *inside* the horizontally oriented workspace. Thus, now new
-windows will be opened to the right of the +Vertical Split Container+:
+the current +Container+. In default configuration, use +$mod+a+ to navigate one 
++Container+ up the tree (you can repeat this multiple times until you get to the
++Workspace Container+). In this case, you would focus the +Vertical Split Container+
+which is *inside* the horizontally oriented workspace. Thus, now new windows will be
+opened to the right of the +Vertical Split Container+:
 
 image::tree-shot3.png["shot3",title="Focus parent, then open new terminal"]
 
@@ -585,6 +587,16 @@ workspace_layout default|stacking|tabbed
 workspace_layout tabbed
 ---------------------
 
+=== Window title alignment
+
+This option determines the window title's text alignment.
+Default is +left+
+
+*Syntax*:
+---------------------------------------------
+title_align left|center|right
+---------------------------------------------
+
 === Default border style for new windows
 
 This option determines which border style new windows will have. The default is
@@ -730,7 +742,8 @@ 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
+assign its value to the specified variable. This is done verbatim and the value
+must therefore be in the format that i3 uses. A fallback must be specified in
 case the resource cannot be loaded from the database.
 
 *Syntax*:
@@ -754,14 +767,23 @@ set_from_resource $black i3wm.color0 #000000
 
 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
-(and instances, when appropriate) instead of window titles whenever possible
-because some applications first create their window, and then worry about
-setting the correct title. Firefox with Vimperator comes to mind. The window
-starts up being named Firefox, and only when Vimperator is loaded does the
-title change. As i3 will get the title as soon as the application maps the
-window (mapping means actually displaying it on the screen), you’d need to have
-to match on 'Firefox' in this case.
+see <<command_criteria>>. The difference between +assign+ and
++for_window <criteria> move to workspace+ is that the former will only be
+executed when the application maps the window (mapping means actually displaying
+it on the screen) but the latter will be executed whenever a window changes its
+properties to something that matches the specified criteria.
+
+Thus, it is recommended that you match on window classes (and instances, when
+appropriate) instead of window titles whenever possible because some
+applications first create their window, and then worry about setting the correct
+title. Firefox with Vimperator comes to mind. The window starts up being named
+Firefox, and only when Vimperator is loaded does the title change. As i3 will
+get the title as soon as the application maps the window, you’d need to have to
+match on 'Firefox' in this case.
+Another known issue is with Spotify, which doesn't set the class hints when
+mapping the window, meaning you'll have to use a +for_window+ rule to assign
+Spotify to a specific workspace.
+Finally, using +assign [tiling]+ and +assign [floating]+ is not supported.
 
 You can also assign a window to show up on a specific output. You can use RandR
 names such as +VGA1+ or names relative to the output with the currently focused
@@ -887,7 +909,7 @@ the second screen and so on).
 
 *Syntax*:
 -------------------------------------
-workspace <workspace> output <output>
+workspace <workspace> output <output1> [output2]…
 -------------------------------------
 
 The 'output' is the name of the RandR output you attach your screen to. On a
@@ -906,12 +928,15 @@ monitor name is “Dell UP2414Q”.
 entire monitor, i3 will still use the entire area of the containing monitor
 rather than that of just the output's.)
 
+You can specify multiple outputs. The first available will be used.
+
 If you use named workspaces, they must be quoted:
 
 *Examples*:
 ---------------------------
 workspace 1 output LVDS1
-workspace 5 output VGA1
+workspace 2 output primary
+workspace 5 output VGA1 LVDS1
 workspace "2: vim" output VGA1
 ---------------------------
 
@@ -991,7 +1016,7 @@ ipc-socket ~/.i3/i3-ipc.sock
 ----------------------------
 
 You can then use the +i3-msg+ application to perform any command listed in
-the next section.
+<<list_of_commands>>.
 
 === Focus follows mouse
 
@@ -1117,6 +1142,7 @@ force_xinerama yes
 Also note that your output names are not descriptive (like +HDMI1+) when using
 Xinerama, instead they are counted up, starting at 0: +xinerama-0+, +xinerama-1+, …
 
+[[workspace_auto_back_and_forth]]
 === Automatic back-and-forth when switching to the current workspace
 
 This configuration directive enables automatic +workspace back_and_forth+ (see
@@ -1594,7 +1620,7 @@ bar {
 }
 ------------------------
 
-=== Strip workspace numbers
+=== Strip workspace numbers/name
 
 Specifies whether workspace numbers should be displayed within the workspace
 buttons. This is useful if you want to have a named workspace that stays in
@@ -1605,11 +1631,15 @@ the form "[n]:[NAME]" will display only the name. You could use this, for
 instance, to display Roman numerals rather than digits by naming your
 workspaces to "1:I", "2:II", "3:III", "4:IV", ...
 
+When +strip_workspace_name+ is set to +yes+, any workspace that has a name of
+the form "[n]:[NAME]" will display only the number.
+
 The default is to display the full name within the workspace button.
 
 *Syntax*:
 ------------------------------
 strip_workspace_numbers yes|no
+strip_workspace_name yes|no
 ------------------------------
 
 *Example*:
@@ -1707,6 +1737,7 @@ bar {
 }
 --------------------------------------
 
+[[list_of_commands]]
 == List of commands
 
 Commands are what you bind to specific keypresses. You can also issue commands
@@ -2025,10 +2056,13 @@ Use the +move+ command to move a container.
 # defaults to 10 pixels.
 move <left|right|down|up> [<px> px]
 
-# Moves the container either to a specific location
-# or to the center of the screen. If 'absolute' is
-# used, it is moved to the center of all outputs.
-move [absolute] position <pos_x> [px] <pos_y> [px]
+# Moves the container to the specified pos_x and pos_y
+# coordinates on the screen.
+move position <pos_x> [px] <pos_y> [px]
+
+# Moves the container to the center of the screen.
+# If 'absolute' is used, it is moved to the center of
+# all outputs.
 move [absolute] position center
 
 # Moves the container to the current position of the
@@ -2113,8 +2147,8 @@ for_window [instance=notepad] sticky enable
 
 To change to a specific workspace, use the +workspace+ command, followed by the
 number or name of the workspace. Pass the optional flag
-+--no-auto-back-and-forth+ to disable <<back_and_forth>> for this specific call
-only.
++--no-auto-back-and-forth+ to disable <<workspace_auto_back_and_forth>> for this
+specific call only.
 
 To move containers to specific workspaces, use +move container to workspace+.
 
@@ -2312,20 +2346,21 @@ If you want to resize containers/windows using your keyboard, you can use the
 *Syntax*:
 -------------------------------------------------------
 resize grow|shrink <direction> [<px> px [or <ppt> ppt]]
-resize set <width> [px | ppt] <height> [px | ppt]
+resize set [width] <width> [px | ppt]
+resize set height <height> [px | ppt]
+resize set [width] <width> [px | ppt] [height] <height> [px | ppt]
 -------------------------------------------------------
 
 Direction can either be one of +up+, +down+, +left+ or +right+. Or you can be
-less specific and use +width+ or +height+, in which case i3 will take/give
-space from all the other containers. The optional pixel argument specifies by
-how many pixels a *floating container* should be grown or shrunk (the default
-is 10 pixels). The ppt argument means percentage points and specifies by how
-many percentage points a *tiling container* should be grown or shrunk (the
-default is 10 percentage points).
+less specific and use +width+ or +height+, in which case i3 will take/give space
+from all the other containers. The optional pixel argument specifies by how many
+pixels a container should be grown or shrunk (the default is 10 pixels). The
+optional ppt argument means "percentage points", and if specified it indicates
+that a *tiling container* should be grown or shrunk by that many points, instead
+of by the +px+ value.
 
-Notes about +resize set+: a value of 0 for <width> or <height> means "do
-not resize in this direction", and resizing a tiling container by +px+ is not
-implemented.
+Note about +resize set+: a value of 0 for <width> or <height> means "do not
+resize in this direction".
 
 It is recommended to define bindings for resizing in a dedicated binding mode.
 See <<binding_modes>> and the example in the i3
@@ -2468,7 +2503,9 @@ To change the border of the current client, you can use +border normal+ to use t
 border (including window title), +border pixel 1+ to use a 1-pixel border (no window title)
 and +border none+ to make the client borderless.
 
-There is also +border toggle+ which will toggle the different border styles.
+There is also +border toggle+ which will toggle the different border styles. The
+optional pixel argument can be used to specify the border width when switching
+to the normal and pixel styles.
 
 Note that "pixel" refers to logical pixel. On HiDPI displays, a logical pixel
 may be represented by multiple physical pixels, so +pixel 1+ might not
@@ -2476,8 +2513,8 @@ necessarily translate into a single pixel row wide border.
 
 *Syntax*:
 -----------------------------------------------
-border normal|pixel [<n>]
-border none|toggle
+border normal|pixel|toggle [<n>]
+border none
 
 # legacy syntax, equivalent to "border pixel 1"
 border 1pixel
index da9dca0fb1c503d33cd06cdb1dc4e9b266215775..bfbb12e4df46bff29ecd5ee2c4408c9cd04d0914 100644 (file)
@@ -4,7 +4,7 @@
 <head>\r
 <link rel="icon" type="image/x-icon" href="/favicon.ico">\r
 <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />\r
-<meta name="generator" content="AsciiDoc 8.6.9" />\r
+<meta name="generator" content="AsciiDoc 8.6.10" />\r
 <title>i3: Debugging i3: How To</title>\r
 <link rel="stylesheet" href="/css/style.css" type="text/css" />\r
 <link rel="stylesheet" href="/css/xhtml11.css" type="text/css" />\r
@@ -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_15">1. Verify you are using i3 ≥ 4.15</h2>\r
+<h2 id="_verify_you_are_using_i3_4_16">1. Verify you are using i3 ≥ 4.16</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
@@ -230,7 +230,8 @@ flood kicks.</p></div>
 <div class="sect1">\r
 <h2 id="_debugging_i3bar">7. Debugging i3bar</h2>\r
 <div class="sectionbody">\r
-<div class="paragraph"><p>To debug i3bar problems, add <tt>verbose yes</tt> to all <tt>bar {}</tt> blocks in your i3\r
+<div class="paragraph"><p>To debug i3bar problems, use the <tt>--verbose</tt> commandline parameter,\r
+or add <tt>verbose yes</tt> to all <tt>bar {}</tt> blocks in your i3\r
 config, reload your config and then restart all i3bar instances like this:</p></div>\r
 <div class="listingblock">\r
 <div class="content">\r
index a55a82d2b46c3766d394ae15564d5e3745fb1d52..15e6c593a3cd998d3aed7f83e5e1ab3ba66be1d5 100644 (file)
@@ -4,7 +4,7 @@
 <head>\r
 <link rel="icon" type="image/x-icon" href="/favicon.ico">\r
 <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />\r
-<meta name="generator" content="AsciiDoc 8.6.9" />\r
+<meta name="generator" content="AsciiDoc 8.6.10" />\r
 <title>i3: Hacking i3: How To</title>\r
 <link rel="stylesheet" href="/css/style.css" type="text/css" />\r
 <link rel="stylesheet" href="/css/xhtml11.css" type="text/css" />\r
index e84e177719130eb4e489f8f19376cb2d1b321b1e..ffdc1f71b7d99aa0908535f16bb0f38685f3d891 100644 (file)
@@ -4,7 +4,7 @@
 <head>\r
 <link rel="icon" type="image/x-icon" href="/favicon.ico">\r
 <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />\r
-<meta name="generator" content="AsciiDoc 8.6.9" />\r
+<meta name="generator" content="AsciiDoc 8.6.10" />\r
 <title>i3: i3bar input protocol</title>\r
 <link rel="stylesheet" href="/css/style.css" type="text/css" />\r
 <link rel="stylesheet" href="/css/xhtml11.css" type="text/css" />\r
@@ -172,7 +172,7 @@ cont_signal
 </dt>\r
 <dd>\r
 <p>\r
-        Specify to i3bar the signal (as an integer)to send to continue your\r
+        Specify to i3bar the signal (as an integer) to send to continue your\r
         processing.\r
         The default value (if none is specified) is SIGCONT.\r
 </p>\r
@@ -197,7 +197,8 @@ full_text
 <dd>\r
 <p>\r
         The <tt>full_text</tt> will be displayed by i3bar on the status line. This is the\r
-        only required key.\r
+        only required key. If <tt>full_text</tt> is an empty string, the block will be\r
+        skipped.\r
 </p>\r
 </dd>\r
 <dt class="hdlist1">\r
@@ -423,6 +424,15 @@ width, height
     Width and height (in px) of the block\r
 </p>\r
 </dd>\r
+<dt class="hdlist1">\r
+modifiers\r
+</dt>\r
+<dd>\r
+<p>\r
+    An array of the modifiers active when the click occurred. The order in which\r
+    modifiers are listed is not guaranteed.\r
+</p>\r
+</dd>\r
 </dl></div>\r
 <div class="paragraph"><p><strong>Example</strong>:</p></div>\r
 <div class="listingblock">\r
@@ -431,6 +441,7 @@ width, height
  "name": "ethernet",\r
  "instance": "eth0",\r
  "button": 1,\r
+ "modifiers": ["Shift", "Mod1"],\r
  "x": 1320,\r
  "y": 1400,\r
  "relative_x": 12,\r
index 350483e33f37c8463906ac6da522aa4867504de3..12d7fe831479039151dfd92a5004f60d9d4f6a91 100644 (file)
@@ -4,7 +4,7 @@
 <head>\r
 <link rel="icon" type="image/x-icon" href="/favicon.ico">\r
 <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />\r
-<meta name="generator" content="AsciiDoc 8.6.9" />\r
+<meta name="generator" content="AsciiDoc 8.6.10" />\r
 <title>i3: IPC interface (interprocess communication)</title>\r
 <link rel="stylesheet" href="/css/style.css" type="text/css" />\r
 <link rel="stylesheet" href="/css/xhtml11.css" type="text/css" />\r
@@ -177,6 +177,12 @@ cellspacing="0" cellpadding="4">
 <td align="center" valign="top"><p class="table"><a href="#_tick_reply">TICK</a></p></td>\r
 <td align="center" valign="top"><p class="table">Sends a tick event with the specified payload.</p></td>\r
 </tr>\r
+<tr>\r
+<td align="center" valign="top"><p class="table">11</p></td>\r
+<td align="center" valign="top"><p class="table"><tt>SYNC</tt></p></td>\r
+<td align="center" valign="top"><p class="table"><a href="#_sync_reply">SYNC</a></p></td>\r
+<td align="center" valign="top"><p class="table">Sends an i3 sync event with the specified random value to the specified window.</p></td>\r
+</tr>\r
 </tbody>\r
 </table>\r
 </div>\r
@@ -656,6 +662,14 @@ window (integer)
 </p>\r
 </dd>\r
 <dt class="hdlist1">\r
+window_properties (map)\r
+</dt>\r
+<dd>\r
+<p>\r
+        X11 window properties title, instance, class, window_role and transient_for.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
 urgent (bool)\r
 </dt>\r
 <dd>\r
@@ -826,6 +840,12 @@ VGA1
             "width": 1280,\r
             "height": 782\r
           },\r
+          "window_properties": {\r
+            "class": "Evince",\r
+            "instance": "evince",\r
+            "title": "Properties",\r
+            "transient_for": 52428808\r
+          },\r
           "floating_nodes": [],\r
           "nodes": [\r
 \r
@@ -1213,6 +1233,17 @@ events generated prior to the <tt>SEND_TICK</tt> message (happened-before relati
 <pre><tt>{ "success": true }</tt></pre>\r
 </div></div>\r
 </div>\r
+<div class="sect2">\r
+<h3 id="_sync_reply">3.13. SYNC reply</h3>\r
+<div class="paragraph"><p>The reply is a map containing the "success" member. After the reply was\r
+received, the <a href="https://i3wm.org/docs/testsuite.html#i3_sync">i3 sync message</a> was\r
+responded to.</p></div>\r
+<div class="paragraph"><p><strong>Example:</strong></p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>{ "success": true }</tt></pre>\r
+</div></div>\r
+</div>\r
 </div>\r
 </div>\r
 <div class="sect1">\r
@@ -1230,6 +1261,13 @@ situation can happen: You send a GET_WORKSPACES request but you receive a
 program does not want to cope which such kinds of race conditions (an\r
 event based library may not have a problem here), I suggest you create a\r
 separate connection to receive events.</p></div>\r
+<div class="paragraph"><p>If an event message needs to be sent and the socket is not writeable (write\r
+returns EAGAIN, happens when the socket doesn&#8217;t have enough buffer space for\r
+writing new data) then i3 uses a queue system to store outgoing messages for\r
+each client. This is combined with a timer: if the message queue for a client is\r
+not empty and no data where successfully written in the past 10 seconds, the\r
+connection is killed. Practically, this means that your client should try to\r
+always read events from the socket to avoid having its connection closed.</p></div>\r
 <div class="sect2">\r
 <h3 id="_subscribing_to_events">4.1. Subscribing to events</h3>\r
 <div class="paragraph"><p>By sending a message of type SUBSCRIBE with a JSON-encoded array as payload\r
index f97f2ce43096fc36f24ac6eecf46a1a8057c4693..cddd5827d792e05e643425d93f3df872c6d0c00d 100644 (file)
@@ -4,7 +4,7 @@
 <head>\r
 <link rel="icon" type="image/x-icon" href="/favicon.ico">\r
 <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />\r
-<meta name="generator" content="AsciiDoc 8.6.9" />\r
+<meta name="generator" content="AsciiDoc 8.6.10" />\r
 <title>i3: Layout saving in i3</title>\r
 <link rel="stylesheet" href="/css/style.css" type="text/css" />\r
 <link rel="stylesheet" href="/css/xhtml11.css" type="text/css" />\r
@@ -253,18 +253,20 @@ the window which matches any of the criteria. As an example:</p></div>
 <div class="olist arabic"><ol class="arabic">\r
 <li>\r
 <p>\r
-Layout files contain multiple “JSON documents” on the top level, whereas the\r
-   JSON standard only allows precisely one “document” (array or hash).\r
+Layout files contain multiple “JSON texts” at the top level. The JSON\r
+   standard doesn&#8217;t prohibit this, but in practice most JSON parsers only\r
+   allow precisely one “text” per document/file, and will mark multiple texts\r
+   as invalid JSON.\r
 </p>\r
 </li>\r
 <li>\r
 <p>\r
-Layout files contain comments which are not standardized, but understood by\r
-   many parsers.\r
+Layout files contain comments which are not allowed by the JSON standard,\r
+   but are understood by many parsers.\r
 </p>\r
 </li>\r
 </ol></div>\r
-<div class="paragraph"><p>Both deviations from the JSON standard are to make manual editing by humans\r
+<div class="paragraph"><p>Both of these deviations from the norm are to make manual editing by humans\r
 easier. In case you are writing a more elaborate tool for manipulating these\r
 layouts, you can either use a JSON parser that supports these deviations (for\r
 example libyajl), transform the layout file to a JSON-conforming file, or\r
index ab86e7c6102c1d730511c47c282cb6ea81288e56..f79e00a3f7a355254e49933510aceadf45994661 100644 (file)
@@ -4,7 +4,7 @@
 <head>\r
 <link rel="icon" type="image/x-icon" href="/favicon.ico">\r
 <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />\r
-<meta name="generator" content="AsciiDoc 8.6.9" />\r
+<meta name="generator" content="AsciiDoc 8.6.10" />\r
 <title>i3: The multi-monitor situation</title>\r
 <link rel="stylesheet" href="/css/style.css" type="text/css" />\r
 <link rel="stylesheet" href="/css/xhtml11.css" type="text/css" />\r
index 375b246de02404504681591a08a358683c42cb44..3e3bdb649cb29238e0b44c1fb7360ca45f96b8c0 100644 (file)
@@ -4,7 +4,7 @@
 <head>\r
 <link rel="icon" type="image/x-icon" href="/favicon.ico">\r
 <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />\r
-<meta name="generator" content="AsciiDoc 8.6.9" />\r
+<meta name="generator" content="AsciiDoc 8.6.10" />\r
 <title>i3: i3 testsuite</title>\r
 <link rel="stylesheet" href="/css/style.css" type="text/css" />\r
 <link rel="stylesheet" href="/css/xhtml11.css" type="text/css" />\r
index 4091926c7ff3d50bc34f26889a30594062808244..3431a9ac1284be0e893f46cb5b9e2f0a216391a3 100644 (file)
@@ -4,7 +4,7 @@
 <head>\r
 <link rel="icon" type="image/x-icon" href="/favicon.ico">\r
 <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />\r
-<meta name="generator" content="AsciiDoc 8.6.9" />\r
+<meta name="generator" content="AsciiDoc 8.6.10" />\r
 <title>i3: i3 User’s Guide</title>\r
 <link rel="stylesheet" href="/css/style.css" type="text/css" />\r
 <link rel="stylesheet" href="/css/xhtml11.css" type="text/css" />\r
@@ -312,9 +312,11 @@ vertically split terminals on the right, focus is on the bottom right one. When
 you open a new terminal, it will open below the current one.</p></div>\r
 <div class="paragraph"><p>So, how can you open a new terminal window to the <strong>right</strong> of the current one?\r
 The solution is to use <tt>focus parent</tt>, which will focus the <tt>Parent Container</tt> of\r
-the current <tt>Container</tt>. In this case, you would focus the <tt>Vertical Split\r
-Container</tt> which is <strong>inside</strong> the horizontally oriented workspace. Thus, now new\r
-windows will be opened to the right of the <tt>Vertical Split Container</tt>:</p></div>\r
+the current <tt>Container</tt>. In default configuration, use <tt>$mod+a</tt> to navigate one\r
+<tt>Container</tt> up the tree (you can repeat this multiple times until you get to the\r
+<tt>Workspace Container</tt>). In this case, you would focus the <tt>Vertical Split Container</tt>\r
+which is <strong>inside</strong> the horizontally oriented workspace. Thus, now new windows will be\r
+opened to the right of the <tt>Vertical Split Container</tt>:</p></div>\r
 <div class="imageblock">\r
 <div class="content">\r
 <img src="tree-shot3.png" alt="shot3" />\r
@@ -651,7 +653,17 @@ start.</p></div>
 </div></div>\r
 </div>\r
 <div class="sect2">\r
-<h3 id="_default_border_style_for_new_windows">4.10. Default border style for new windows</h3>\r
+<h3 id="_window_title_alignment">4.10. Window title alignment</h3>\r
+<div class="paragraph"><p>This option determines the window title&#8217;s text alignment.\r
+Default is <tt>left</tt></p></div>\r
+<div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>title_align left|center|right</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_default_border_style_for_new_windows">4.11. Default border style for new windows</h3>\r
 <div class="paragraph"><p>This option determines which border style new windows will have. The default is\r
 <tt>normal</tt>. Note that default_floating_border applies only to windows which are starting out as\r
 floating windows, e.g., dialog windows, but not windows that are floated later on.</p></div>\r
@@ -683,7 +695,7 @@ default_border pixel 3</tt></pre>
 </div></div>\r
 </div>\r
 <div class="sect2">\r
-<h3 id="_hiding_vertical_borders">4.11. Hiding borders adjacent to the screen edges</h3>\r
+<h3 id="_hiding_vertical_borders">4.12. 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. The "smart" setting hides borders on\r
@@ -701,7 +713,7 @@ multiple windows visible. Default is none.</p></div>
 </div></div>\r
 </div>\r
 <div class="sect2">\r
-<h3 id="for_window">4.12. Arbitrary commands for specific windows (for_window)</h3>\r
+<h3 id="for_window">4.13. Arbitrary commands for specific windows (for_window)</h3>\r
 <div class="paragraph"><p>With the <tt>for_window</tt> command, you can let i3 execute any command when it\r
 encounters a specific window. This can be used to set windows to floating or to\r
 change their border style, for example.</p></div>\r
@@ -727,7 +739,7 @@ for_window [title="x200: ~/work"] floating enable</tt></pre>
 <div class="paragraph"><p>The valid criteria are the same as those for commands, see <a href="#command_criteria">[command_criteria]</a>.</p></div>\r
 </div>\r
 <div class="sect2">\r
-<h3 id="no_focus">4.13. Don&#8217;t focus window upon opening</h3>\r
+<h3 id="no_focus">4.14. Don&#8217;t focus window upon opening</h3>\r
 <div class="paragraph"><p>When a new window appears, it will be focused. The <tt>no_focus</tt> directive allows preventing\r
 this from happening and must be used in combination with <a href="#command_criteria">[command_criteria]</a>.</p></div>\r
 <div class="paragraph"><p>Note that this does not apply to all cases, e.g., when feeding data into a running application\r
@@ -748,7 +760,7 @@ combination with <tt>workspace_layout</tt>.</p></div>
 </div></div>\r
 </div>\r
 <div class="sect2">\r
-<h3 id="variables">4.14. Variables</h3>\r
+<h3 id="variables">4.15. Variables</h3>\r
 <div class="paragraph"><p>As you learned in the section about keyboard bindings, you will have\r
 to configure lots of bindings containing modifier keys. If you want to save\r
 yourself some typing and be able to change the modifier you use later,\r
@@ -774,14 +786,15 @@ it before starting i3 (for example in your <tt>~/.xsession</tt> file).</p></div>
 loaded from the X resource database.</p></div>\r
 </div>\r
 <div class="sect2">\r
-<h3 id="xresources">4.15. X resources</h3>\r
+<h3 id="xresources">4.16. 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
+assign its value to the specified variable. This is done verbatim and the value\r
+must therefore be in the format that i3 uses. 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
@@ -801,17 +814,25 @@ set_from_resource $black i3wm.color0 #000000</tt></pre>
 </div></div>\r
 </div>\r
 <div class="sect2">\r
-<h3 id="assign_workspace">4.16. Automatically putting clients on specific workspaces</h3>\r
+<h3 id="assign_workspace">4.17. 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
-(and instances, when appropriate) instead of window titles whenever possible\r
-because some applications first create their window, and then worry about\r
-setting the correct title. Firefox with Vimperator comes to mind. The window\r
-starts up being named Firefox, and only when Vimperator is loaded does the\r
-title change. As i3 will get the title as soon as the application maps the\r
-window (mapping means actually displaying it on the screen), you’d need to have\r
-to match on <em>Firefox</em> in this case.</p></div>\r
+see <a href="#command_criteria">[command_criteria]</a>. The difference between <tt>assign</tt> and\r
+<tt>for_window &lt;criteria&gt; move to workspace</tt> is that the former will only be\r
+executed when the application maps the window (mapping means actually displaying\r
+it on the screen) but the latter will be executed whenever a window changes its\r
+properties to something that matches the specified criteria.</p></div>\r
+<div class="paragraph"><p>Thus, it is recommended that you match on window classes (and instances, when\r
+appropriate) instead of window titles whenever possible because some\r
+applications first create their window, and then worry about setting the correct\r
+title. Firefox with Vimperator comes to mind. The window starts up being named\r
+Firefox, and only when Vimperator is loaded does the title change. As i3 will\r
+get the title as soon as the application maps the window, you’d need to have to\r
+match on <em>Firefox</em> in this case.\r
+Another known issue is with Spotify, which doesn&#8217;t set the class hints when\r
+mapping the window, meaning you&#8217;ll have to use a <tt>for_window</tt> rule to assign\r
+Spotify to a specific workspace.\r
+Finally, using <tt>assign [tiling]</tt> and <tt>assign [floating]</tt> is not supported.</p></div>\r
 <div class="paragraph"><p>You can also assign a window to show up on a specific output. You can use RandR\r
 names such as <tt>VGA1</tt> or names relative to the output with the currently focused\r
 workspace such as <tt>left</tt> and <tt>down</tt>.</p></div>\r
@@ -891,7 +912,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.17. Automatically starting applications on i3 startup</h3>\r
+<h3 id="_automatically_starting_applications_on_i3_startup">4.18. 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
@@ -918,7 +939,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.18. Automatically putting workspaces on specific screens</h3>\r
+<h3 id="workspace_screen">4.19. 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
@@ -927,7 +948,7 @@ the second screen and so on).</p></div>
 <div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
 <div class="listingblock">\r
 <div class="content">\r
-<pre><tt>workspace &lt;workspace&gt; output &lt;output&gt;</tt></pre>\r
+<pre><tt>workspace &lt;workspace&gt; output &lt;output1&gt; [output2]…</tt></pre>\r
 </div></div>\r
 <div class="paragraph"><p>The <em>output</em> is the name of the RandR output you attach your screen to. On a\r
 laptop, you might have VGA1 and LVDS1 as output names. You can see the\r
@@ -942,17 +963,19 @@ monitor name is “Dell UP2414Q”.</p></div>
 <div class="paragraph"><p>(Note that even if you specify the name of an output which doesn&#8217;t span the\r
 entire monitor, i3 will still use the entire area of the containing monitor\r
 rather than that of just the output&#8217;s.)</p></div>\r
+<div class="paragraph"><p>You can specify multiple outputs. The first available will be used.</p></div>\r
 <div class="paragraph"><p>If you use named workspaces, they must be quoted:</p></div>\r
 <div class="paragraph"><p><strong>Examples</strong>:</p></div>\r
 <div class="listingblock">\r
 <div class="content">\r
 <pre><tt>workspace 1 output LVDS1\r
-workspace 5 output VGA1\r
+workspace 2 output primary\r
+workspace 5 output VGA1 LVDS1\r
 workspace "2: vim" output VGA1</tt></pre>\r
 </div></div>\r
 </div>\r
 <div class="sect2">\r
-<h3 id="_changing_colors">4.19. Changing colors</h3>\r
+<h3 id="_changing_colors">4.20. 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
@@ -1038,7 +1061,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.20. Interprocess communication</h3>\r
+<h3 id="_interprocess_communication">4.21. 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
@@ -1057,10 +1080,10 @@ user can create that directory.</p></div>
 <pre><tt>ipc-socket ~/.i3/i3-ipc.sock</tt></pre>\r
 </div></div>\r
 <div class="paragraph"><p>You can then use the <tt>i3-msg</tt> application to perform any command listed in\r
-the next section.</p></div>\r
+<a href="#list_of_commands">[list_of_commands]</a>.</p></div>\r
 </div>\r
 <div class="sect2">\r
-<h3 id="_focus_follows_mouse">4.21. Focus follows mouse</h3>\r
+<h3 id="_focus_follows_mouse">4.22. Focus follows mouse</h3>\r
 <div class="paragraph"><p>By default, window focus follows your mouse movements as the mouse crosses\r
 window borders. However, if you have a setup where your mouse usually is in your\r
 way (like a touchpad on your laptop which you do not want to disable\r
@@ -1079,7 +1102,7 @@ currently active window (for example to click on links in your browser window).<
 </div></div>\r
 </div>\r
 <div class="sect2">\r
-<h3 id="_mouse_warping">4.22. Mouse warping</h3>\r
+<h3 id="_mouse_warping">4.23. 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
@@ -1098,7 +1121,7 @@ behavior described above.</p></div>
 </div></div>\r
 </div>\r
 <div class="sect2">\r
-<h3 id="_popups_during_fullscreen_mode">4.23. Popups during fullscreen mode</h3>\r
+<h3 id="_popups_during_fullscreen_mode">4.24. 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
@@ -1135,7 +1158,7 @@ Leave fullscreen mode.
 </div></div>\r
 </div>\r
 <div class="sect2">\r
-<h3 id="_focus_wrapping">4.24. Focus wrapping</h3>\r
+<h3 id="_focus_wrapping">4.25. Focus wrapping</h3>\r
 <div class="paragraph"><p>By default, when in a container with several windows or child containers, the\r
 opposite window will be focused when trying to move the focus over the edge of\r
 a container (and there are no other containers in that direction)&#8201;&#8212;&#8201;the focus\r
@@ -1168,7 +1191,7 @@ focus_wrapping force</tt></pre>
 </div></div>\r
 </div>\r
 <div class="sect2">\r
-<h3 id="_forcing_xinerama">4.25. Forcing Xinerama</h3>\r
+<h3 id="_forcing_xinerama">4.26. Forcing Xinerama</h3>\r
 <div class="paragraph"><p>As explained in-depth in <a href="https://i3wm.org/docs/multi-monitor.html">https://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
@@ -1191,7 +1214,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.26. Automatic back-and-forth when switching to the current workspace</h3>\r
+<h3 id="workspace_auto_back_and_forth">4.27. 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
@@ -1209,7 +1232,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.27. Delaying urgency hint reset on workspace change</h3>\r
+<h3 id="_delaying_urgency_hint_reset_on_workspace_change">4.28. 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
@@ -1231,7 +1254,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.28. Focus on window activation</h3>\r
+<h3 id="focus_on_window_activation">4.29. 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
@@ -1279,7 +1302,7 @@ none
 </dl></div>\r
 </div>\r
 <div class="sect2">\r
-<h3 id="show_marks">4.29. Drawing marks on window decoration</h3>\r
+<h3 id="show_marks">4.30. Drawing marks on window decoration</h3>\r
 <div class="paragraph"><p>If activated, marks (see <a href="#vim_like_marks">[vim_like_marks]</a>) on windows are drawn in their window\r
 decoration. However, any mark starting with an underscore in its name (<tt>_</tt>) will\r
 not be drawn even if this option is activated.</p></div>\r
@@ -1296,7 +1319,7 @@ not be drawn even if this option is activated.</p></div>
 </div></div>\r
 </div>\r
 <div class="sect2">\r
-<h3 id="line_continuation">4.30. Line continuation</h3>\r
+<h3 id="line_continuation">4.31. 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.\r
@@ -1709,7 +1732,7 @@ you want to display a statusline-only bar containing additional information.</p>
 </div></div>\r
 </div>\r
 <div class="sect2">\r
-<h3 id="_strip_workspace_numbers">5.13. Strip workspace numbers</h3>\r
+<h3 id="_strip_workspace_numbers_name">5.13. Strip workspace numbers/name</h3>\r
 <div class="paragraph"><p>Specifies whether workspace numbers should be displayed within the workspace\r
 buttons. This is useful if you want to have a named workspace that stays in\r
 order on the bar according to its number without displaying the number prefix.</p></div>\r
@@ -1717,11 +1740,14 @@ order on the bar according to its number without displaying the number prefix.</
 the form "[n]:[NAME]" will display only the name. You could use this, for\r
 instance, to display Roman numerals rather than digits by naming your\r
 workspaces to "1:I", "2:II", "3:III", "4:IV", &#8230;</p></div>\r
+<div class="paragraph"><p>When <tt>strip_workspace_name</tt> is set to <tt>yes</tt>, any workspace that has a name of\r
+the form "[n]:[NAME]" will display only the number.</p></div>\r
 <div class="paragraph"><p>The default is to display the full name within the workspace button.</p></div>\r
 <div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
 <div class="listingblock">\r
 <div class="content">\r
-<pre><tt>strip_workspace_numbers yes|no</tt></pre>\r
+<pre><tt>strip_workspace_numbers yes|no\r
+strip_workspace_name yes|no</tt></pre>\r
 </div></div>\r
 <div class="paragraph"><p><strong>Example</strong>:</p></div>\r
 <div class="listingblock">\r
@@ -1888,7 +1914,7 @@ binding_mode
 </div>\r
 </div>\r
 <div class="sect1">\r
-<h2 id="_list_of_commands">6. List of commands</h2>\r
+<h2 id="list_of_commands">6. List of commands</h2>\r
 <div class="sectionbody">\r
 <div class="paragraph"><p>Commands are what you bind to specific keypresses. You can also issue commands\r
 at runtime without pressing a key by using the IPC interface. An easy way to\r
@@ -2307,10 +2333,13 @@ bindsym $mod+x focus output primary</tt></pre>
 # defaults to 10 pixels.\r
 move &lt;left|right|down|up&gt; [&lt;px&gt; px]\r
 \r
-# Moves the container either to a specific location\r
-# or to the center of the screen. If 'absolute' is\r
-# used, it is moved to the center of all outputs.\r
-move [absolute] position &lt;pos_x&gt; [px] &lt;pos_y&gt; [px]\r
+# Moves the container to the specified pos_x and pos_y\r
+# coordinates on the screen.\r
+move position &lt;pos_x&gt; [px] &lt;pos_y&gt; [px]\r
+\r
+# Moves the container to the center of the screen.\r
+# If 'absolute' is used, it is moved to the center of\r
+# all outputs.\r
 move [absolute] position center\r
 \r
 # Moves the container to the current position of the\r
@@ -2414,8 +2443,8 @@ for_window [instance=notepad] sticky enable</tt></pre>
 <h3 id="_changing_named_workspaces_moving_to_workspaces">6.8. Changing (named) workspaces/moving to workspaces</h3>\r
 <div class="paragraph"><p>To change to a specific workspace, use the <tt>workspace</tt> command, followed by the\r
 number or name of the workspace. Pass the optional flag\r
-<tt>--no-auto-back-and-forth</tt> to disable <a href="#back_and_forth">[back_and_forth]</a> for this specific call\r
-only.</p></div>\r
+<tt>--no-auto-back-and-forth</tt> to disable <a href="#workspace_auto_back_and_forth">[workspace_auto_back_and_forth]</a> for this\r
+specific call only.</p></div>\r
 <div class="paragraph"><p>To move containers to specific workspaces, use <tt>move container to workspace</tt>.</p></div>\r
 <div class="paragraph"><p>You can also switch to the next and previous workspace with the commands\r
 <tt>workspace next</tt> and <tt>workspace prev</tt>, which is handy, for example, if you have\r
@@ -2598,18 +2627,19 @@ after the currently focused child within that container.</p></div>
 <div class="listingblock">\r
 <div class="content">\r
 <pre><tt>resize grow|shrink &lt;direction&gt; [&lt;px&gt; px [or &lt;ppt&gt; ppt]]\r
-resize set &lt;width&gt; [px | ppt] &lt;height&gt; [px | ppt]</tt></pre>\r
+resize set [width] &lt;width&gt; [px | ppt]\r
+resize set height &lt;height&gt; [px | ppt]\r
+resize set [width] &lt;width&gt; [px | ppt] [height] &lt;height&gt; [px | ppt]</tt></pre>\r
 </div></div>\r
 <div class="paragraph"><p>Direction can either be one of <tt>up</tt>, <tt>down</tt>, <tt>left</tt> or <tt>right</tt>. Or you can be\r
-less specific and use <tt>width</tt> or <tt>height</tt>, in which case i3 will take/give\r
-space from all the other containers. The optional pixel argument specifies by\r
-how many pixels a <strong>floating container</strong> should be grown or shrunk (the default\r
-is 10 pixels). The ppt argument means percentage points and specifies by how\r
-many percentage points a <strong>tiling container</strong> should be grown or shrunk (the\r
-default is 10 percentage points).</p></div>\r
-<div class="paragraph"><p>Notes about <tt>resize set</tt>: a value of 0 for &lt;width&gt; or &lt;height&gt; means "do\r
-not resize in this direction", and resizing a tiling container by <tt>px</tt> is not\r
-implemented.</p></div>\r
+less specific and use <tt>width</tt> or <tt>height</tt>, in which case i3 will take/give space\r
+from all the other containers. The optional pixel argument specifies by how many\r
+pixels a container should be grown or shrunk (the default is 10 pixels). The\r
+optional ppt argument means "percentage points", and if specified it indicates\r
+that a <strong>tiling container</strong> should be grown or shrunk by that many points, instead\r
+of by the <tt>px</tt> value.</p></div>\r
+<div class="paragraph"><p>Note about <tt>resize set</tt>: a value of 0 for &lt;width&gt; or &lt;height&gt; means "do not\r
+resize in this direction".</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/etc/config.keycodes">default config</a> for more\r
@@ -2747,15 +2777,17 @@ for_window [class="(?i)firefox"] title_format "&lt;span foreground='red'&gt;%tit
 <div class="paragraph"><p>To change the border of the current client, you can use <tt>border normal</tt> to use the normal\r
 border (including window title), <tt>border pixel 1</tt> to use a 1-pixel border (no window title)\r
 and <tt>border none</tt> to make the client borderless.</p></div>\r
-<div class="paragraph"><p>There is also <tt>border toggle</tt> which will toggle the different border styles.</p></div>\r
+<div class="paragraph"><p>There is also <tt>border toggle</tt> which will toggle the different border styles. The\r
+optional pixel argument can be used to specify the border width when switching\r
+to the normal and pixel styles.</p></div>\r
 <div class="paragraph"><p>Note that "pixel" refers to logical pixel. On HiDPI displays, a logical pixel\r
 may be represented by multiple physical pixels, so <tt>pixel 1</tt> might not\r
 necessarily translate into a single pixel row wide border.</p></div>\r
 <div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
 <div class="listingblock">\r
 <div class="content">\r
-<pre><tt>border normal|pixel [&lt;n&gt;]\r
-border none|toggle\r
+<pre><tt>border normal|pixel|toggle [&lt;n&gt;]\r
+border none\r
 \r
 # legacy syntax, equivalent to "border pixel 1"\r
 border 1pixel</tt></pre>\r
index b598f77a25b28246338f1e52694ee0ddba76e2bd..2dc13aa0fe2b0421a14cc1933b624f41a5c30d7a 100644 (file)
@@ -4,7 +4,7 @@
 <head>\r
 <link rel="icon" type="image/x-icon" href="/favicon.ico">\r
 <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />\r
-<meta name="generator" content="AsciiDoc 8.6.9" />\r
+<meta name="generator" content="AsciiDoc 8.6.10" />\r
 <title>i3: External workspace bars</title>\r
 <link rel="stylesheet" href="/css/style.css" type="text/css" />\r
 <link rel="stylesheet" href="/css/xhtml11.css" type="text/css" />\r