]> git.sur5r.net Git - i3/i3.github.io/commitdiff
update docs for 4.9
authorMichael Stapelberg <michael@stapelberg.de>
Sat, 28 Feb 2015 14:10:48 +0000 (15:10 +0100)
committerMichael Stapelberg <michael@stapelberg.de>
Sat, 28 Feb 2015 14:10:48 +0000 (15:10 +0100)
_docs/i3bar-protocol
_docs/ipc
_docs/testsuite
_docs/userguide
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 927631549fe9969622824b53c4435e6af08b77c1..8fd51ae9359cfe92ae1fd6f45a2057bf0a591b1a 100644 (file)
@@ -119,7 +119,8 @@ click_events::
 full_text::
        The most simple block you can think of is one which just includes the
        only required key, the +full_text+ key. i3bar will display the string
-       value and that’s it.
+       value parsed as
+       https://developer.gnome.org/pango/stable/PangoMarkupFormat.html[Pango markup].
 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
@@ -148,7 +149,7 @@ min_width::
         when you want to set a sensible minimum width regardless of which font you
         are using, and at what particular size.
 align::
-       Align text on the +center+ (default), +right+ or +left+ of the block, when
+       Align text on the +center+, +right+ or +left+ (default) of the block, when
        the minimum width of the latter, specified by the +min_width+ key, is not
        reached.
 name and instance::
index c976870583011878dd61e02c3cb40a9b594ceaad..ff7c8aaeb0f185299520dc5f271460060a8d13be 100644 (file)
--- a/_docs/ipc
+++ b/_docs/ipc
@@ -1,7 +1,7 @@
 IPC interface (interprocess communication)
 ==========================================
 Michael Stapelberg <michael@i3wm.org>
-February 2014
+October 2014
 
 This document describes how to interface with i3 from a separate process. This
 is useful for example to remote-control i3 (to write test cases for example) or
@@ -156,7 +156,7 @@ following properties:
 
 num (integer)::
        The logical number of the workspace. Corresponds to the command
-       to switch to this workspace.
+       to switch to this workspace. For named workspaces, this will be -1.
 name (string)::
        The name of this workspace (by default num+1), as changed by the
        user. Encoded in UTF-8.
@@ -316,6 +316,10 @@ window_rect (map)::
        So, when using the +default+ layout, you will have a 2 pixel border on
        each side, making the window_rect +{ "x": 2, "y": 0, "width": 632,
        "height": 366 }+ (for example).
+deco_rect (map)::
+       The coordinates of the *window decoration* inside its container. These
+       coordinates are relative to the container and do not include the actual
+       client window.
 geometry (map)::
        The original geometry the window specified when i3 mapped it. Used when
        switching a window to floating mode, for example.
@@ -613,7 +617,7 @@ you can register to an event.
 *Example:*
 ---------------------------------
 type: SUBSCRIBE
-payload: [ "workspace", "focus" ]
+payload: [ "workspace", "output" ]
 ---------------------------------
 
 
@@ -638,6 +642,9 @@ window (3)::
 barconfig_update (4)::
     Sent when the hidden_state or mode field in the barconfig of any bar
     instance was updated and when the config is reloaded.
+binding (5)::
+       Sent when a configured command binding is triggered with the keyboard or
+       mouse
 
 *Example:*
 --------------------------------------------------------------------
@@ -661,15 +668,16 @@ if ($is_event) {
 
 This event consists of a single serialized map containing a property
 +change (string)+ which indicates the type of the change ("focus", "init",
-"empty", "urgent").
+"empty", "urgent"). A +current (object)+ property will be present with the
+affected workspace whenever the type of event affects a workspace (otherwise,
+it will be +null).
 
-Moreover, when the change is "focus", an +old (object)+ and a +current
-(object)+ properties will be present with the previous and current
-workspace respectively.  When the first switch occurs (when i3 focuses
-the workspace visible at the beginning) there is no previous
-workspace, and the +old+ property will be set to +null+.  Also note
-that if the previous is empty it will get destroyed when switching,
-but will still be present in the "old" property.
+When the change is "focus", an +old (object)+ property will be present with the
+previous workspace.  When the first switch occurs (when i3 focuses the
+workspace visible at the beginning) there is no previous workspace, and the
++old+ property will be set to +null+.  Also note that if the previous is empty
+it will get destroyed when switching, but will still be present in the "old"
+property.
 
 *Example:*
 ---------------------
@@ -717,9 +725,13 @@ 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
 
 Additionally a +container (object)+ field will be present, which consists
 of the window's parent container. Be aware that for the "new" event, the
@@ -745,6 +757,47 @@ This event consists of a single serialized map reporting on options from the
 barconfig of the specified bar_id that were updated in i3. This event is the
 same as a +GET_BAR_CONFIG+ reply for the bar with the given id.
 
+=== binding event
+
+This event consists of a single serialized map reporting on the details of a
+binding that ran a command because of user input. The +change (sring)+ field
+indicates what sort of binding event was triggered (right now it will always be
++"run"+ but may be expanded in the future).
+
+The +binding (object)+ field contains details about the binding that was run:
+
+command (string)::
+       The i3 command that is configured to run for this binding.
+mods (array of strings)::
+       The modifier keys that were configured with this binding.
+input_code (integer)::
+       If the binding was configured with +bindcode+, this will be the key code
+       that was given for the binding. If the binding is a mouse binding, it will be
+       the number of the mouse button that was pressed. Otherwise it will be 0.
+symbol (string or null)::
+       If this is a keyboard binding that was configured with +bindsym+, this
+       field will contain the given symbol. Otherwise it will be +null+.
+input_type (string)::
+       This will be +"keyboard"+ or +"mouse"+ depending on whether or not this was
+       a keyboard or a mouse binding.
+
+*Example:*
+---------------------------
+{
+ "change": "run",
+ "binding": {
+  "command": "nop",
+  "mods": [
+    "shift",
+    "ctrl"
+  ],
+  "input_code": 0,
+  "symbol": "t",
+  "input_type": "keyboard"
+ }
+}
+---------------------------
+
 == See also (existing libraries)
 
 [[libraries]]
@@ -754,15 +807,14 @@ all this on your own). This list names some (if you wrote one, please let me
 know):
 
 C::
-       i3 includes a headerfile +i3/ipc.h+ which provides you all constants.
-
-       https://github.com/acrisci/i3ipc-glib
+       * i3 includes a headerfile +i3/ipc.h+ which provides you all constants.
+       * https://github.com/acrisci/i3ipc-glib
 Go::
        * https://github.com/proxypoke/i3ipc
 JavaScript::
        * https://github.com/acrisci/i3ipc-gjs
 Lua::
-       * https:/github.com/acrisci/i3ipc-lua
+       * https://github.com/acrisci/i3ipc-lua
 Perl::
        * https://metacpan.org/module/AnyEvent::I3
 Python::
@@ -770,4 +822,4 @@ Python::
        * https://github.com/whitelynx/i3ipc (not maintained)
        * https://github.com/ziberna/i3-py (not maintained)
 Ruby::
-       http://github.com/badboy/i3-ipc
+       http://github.com/badboy/i3-ipc
index 6c3a36d9c78e9f253a8b0371eee4be55f0f29c31..29a352185da2f2f39ec2e24cf47224671fda86d6 100644 (file)
@@ -74,6 +74,9 @@ client, simply called +cpan+. It comes with every Perl installation and can be
 used to install the testsuite. Many users prefer to use the more modern
 +cpanminus+ instead, though (because it asks no questions and just works):
 
+The tests additionally require +Xephyr(1)+ to run a nested X server. Install
++xserver-xephyr+ on Debian or +xorg-xserver-xephyr+ on Arch Linux.
+
 .Installing testsuite dependencies using cpanminus (preferred)
 --------------------------------------------------------------------------------
 $ cd ~/i3/testcases
@@ -102,7 +105,12 @@ more testcases. Also, it takes care of starting up a separate instance of i3
 with an appropriate configuration file and creates a folder for each run
 containing the appropriate i3 logfile for each testcase. The latest folder can
 always be found under the symlink +latest/+. Unless told differently, it will
-run the tests on a separate X server instance (using the Xdummy script).
+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
+machines without a powerful video card.
 
 .Example invocation of complete-run.pl+
 ---------------------------------------
@@ -146,12 +154,11 @@ $ less latest/i3-log-for-04-floating.t
 If your attempt to run the tests with a bare call to ./complete-run.pl fails, try this:
 
 ---------------------------------------------------
-$ ./complete-run.pl --parallel=1 --keep-xdummy-output
+$ ./complete-run.pl --parallel=1 --keep-xserver-output
 ---------------------------------------------------
 
-One common cause of failures is not having the X dummy server module
-installed.  Under Debian and Ubuntu this is the package
-+xserver-xorg-video-dummy+.
+This will show the output of Xephyr, which is the X server implementation we
+use for testing.
 
 ==== IPC interface
 
@@ -175,10 +182,9 @@ manager.
 === Filesystem structure
 
 In the git root of i3, the testcases live in the folder +testcases+. This
-folder contains the +complete-run.pl+ and +Xdummy+ scripts and a base
-configuration file which will be used for the tests. The different testcases
-(their file extension is .t, not .pl) themselves can be found in the
-conventionally named subfolder +t+:
+folder contains the +complete-run.pl+ and a base configuration file which will
+be used for the tests. The different testcases (their file extension is .t, not
+.pl) themselves can be found in the conventionally named subfolder +t+:
 
 .Filesystem structure
 --------------------------------------------
@@ -197,7 +203,6 @@ conventionally named subfolder +t+:
 │   │   ├── omitted for brevity
 │   │   ├── ...
 │   │   └── 74-regress-focus-toggle.t
-│   └── Xdummy
 --------------------------------------------
 
 == Anatomy of a testcase
index ff46d62f132b00febbda5829e864ce1f731cfb95..45b05a062fcbaf020521fee55a0362cca997bc5f 100644 (file)
@@ -91,7 +91,7 @@ To display a window in fullscreen mode or to go out of fullscreen mode again,
 press +$mod+f+.
 
 There is also a global fullscreen mode in i3 in which the client will span all
-available outputs (the command is +fullscreen global+).
+available outputs (the command is +fullscreen toggle global+).
 
 === Opening other applications
 
@@ -153,6 +153,7 @@ to upgrade to a newer version of i3) you can use +$mod+Shift+r+.
 === Exiting i3
 
 To cleanly exit i3 without killing your X server, you can use +$mod+Shift+e+.
+By default, a dialog will ask you to confirm if you really want to quit.
 
 === Floating
 
@@ -366,7 +367,7 @@ bindcode [--release] [Modifiers+]keycode command
 *Examples*:
 --------------------------------
 # Fullscreen
-bindsym $mod+f fullscreen
+bindsym $mod+f fullscreen toggle
 
 # Restart
 bindsym $mod+Shift+r restart
@@ -393,6 +394,41 @@ umlauts or special characters 'and' having some comfortably reachable key
 bindings. For example, when typing, capslock+1 or capslock+2 for switching
 workspaces is totally convenient. Try it :-).
 
+[[mousebindings]]
+
+=== Mouse bindings
+
+A mouse binding makes i3 execute a command upon pressing a specific mouse
+button in the scope of the clicked container (see <<command_criteria>>). You
+can configure mouse bindings in a similar way to key bindings.
+
+*Syntax*:
+----------------------------------
+bindsym [--release] [--whole-window] [Modifiers+]button[n] command
+----------------------------------
+
+By default, the binding will only run when you click on the titlebar of the
+window. If the +--whole-window+ flag is given, it will run when any part of the
+window is clicked. If the +--release+ flag is given, it will run when the mouse
+button is released.
+
+*Examples*:
+--------------------------------
+# The middle button over a titlebar kills the window
+bindsym --release button2 kill
+
+# The middle button and a modifer over any part of the window kills the window
+bindsym --whole-window $mod+button2 kill
+
+# The right button toggles floating
+bindsym button3 floating toggle
+bindsym $mod+button3 floating toggle
+
+# The side buttons move the window around
+bindsym button9 move left
+bindsym button8 move right
+--------------------------------
+
 [[floating_modifier]]
 
 === The floating modifier
@@ -1069,6 +1105,27 @@ bar {
 
 Available modifiers are Mod1-Mod5, Shift, Control (see +xmodmap(1)+).
 
+=== Mouse button commands
+
+Specifies a command to run when a button was pressed on i3bar to override the
+default behavior. Currently only the mouse wheel buttons are supported. This is
+useful for disabling the scroll wheel action or running scripts that implement
+custom behavior for these buttons.
+
+*Syntax*:
+---------------------
+wheel_up_cmd <command>
+wheel_down_cmd <command>
+---------------------
+
+*Example*:
+---------------------
+bar {
+    wheel_up_cmd nop
+    wheel_down_cmd exec ~/.i3/scripts/custom_wheel_down
+}
+---------------------
+
 === Bar ID
 
 Specifies the bar ID for the configured bar instance. If this option is missing,
@@ -1446,9 +1503,13 @@ Use +layout toggle split+, +layout stacking+, +layout tabbed+, +layout splitv+
 or +layout splith+ to change the current container layout to splith/splitv,
 stacking, tabbed layout, splitv or splith, respectively.
 
-To make the current window (!) fullscreen, use +fullscreen+, to make
-it floating (or tiling again) use +floating enable+ respectively +floating disable+
-(or +floating toggle+):
+To make the current window (!) fullscreen, use +fullscreen enable+ (or
++fullscreen enable global+ for the global mode), to leave either fullscreen
+mode use +fullscreen disable+, and to toggle between these two states use
++fullscreen toggle+ (or +fullscreen toggle global+).
+
+Likewise, to make the current window floating (or tiling again) use +floating
+enable+ respectively +floating disable+ (or +floating toggle+):
 
 *Syntax*:
 --------------
@@ -1469,7 +1530,7 @@ bindsym $mod+x layout toggle
 bindsym $mod+x layout toggle all
 
 # Toggle fullscreen
-bindsym $mod+f fullscreen
+bindsym $mod+f fullscreen toggle
 
 # Toggle floating/tiling
 bindsym $mod+t floating toggle
@@ -1564,6 +1625,10 @@ container to the next/previous workspace and +move container to workspace curren
 See <<move_to_outputs>> for how to move a container/workspace to a different
 RandR output.
 
+Workspace names are parsed as
+https://developer.gnome.org/pango/stable/PangoMarkupFormat.html[Pango markup]
+by i3bar.
+
 [[back_and_forth]]
 To switch back to the previously focused workspace, use +workspace
 back_and_forth+; likewise, you can move containers to the previously focused
@@ -1585,6 +1650,7 @@ move [window|container] [to] workspace <prev|next|current>
 -------------------------
 bindsym $mod+1 workspace 1
 bindsym $mod+2 workspace 2
+bindsym $mod+3 workspace 3:<span foreground="red">vim</span>
 ...
 
 bindsym $mod+Shift+1 move container to workspace 1
index aee5f07f0d0c2ba1a8eea69c56241d129fc8e001..2bed449e7caf919a6aef74158c5390623b257b14 100644 (file)
@@ -2,9 +2,9 @@
     "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
 <head>\r
-<link rel="icon" type="image/png" href="/favicon.png">\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.8" />\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
@@ -197,7 +197,8 @@ full_text
 <p>\r
         The most simple block you can think of is one which just includes the\r
         only required key, the <tt>full_text</tt> key. i3bar will display the string\r
-        value and that’s it.\r
+        value parsed as\r
+        <a href="https://developer.gnome.org/pango/stable/PangoMarkupFormat.html">Pango markup</a>.\r
 </p>\r
 </dd>\r
 <dt class="hdlist1">\r
@@ -250,7 +251,7 @@ align
 </dt>\r
 <dd>\r
 <p>\r
-        Align text on the <tt>center</tt> (default), <tt>right</tt> or <tt>left</tt> of the block, when\r
+        Align text on the <tt>center</tt>, <tt>right</tt> or <tt>left</tt> (default) of the block, when\r
         the minimum width of the latter, specified by the <tt>min_width</tt> key, is not\r
         reached.\r
 </p>\r
index 1771a14660e37b92a924d4f8503fe96082c30cd7..7ecaaea1f796435584f8215ee9d888a162e142f2 100644 (file)
@@ -2,9 +2,9 @@
     "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
 <head>\r
-<link rel="icon" type="image/png" href="/favicon.png">\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.8" />\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
@@ -31,7 +31,7 @@ document.addEventListener("DOMContentLoaded", function(){asciidoc.footnotes(); a
 <h1>IPC interface (interprocess communication)</h1>\r
 <span id="author">Michael Stapelberg</span><br />\r
 <span id="email"><tt>&lt;<a href="mailto:michael@i3wm.org">michael@i3wm.org</a>&gt;</tt></span><br />\r
-<span id="revdate">February 2014</span>\r
+<span id="revdate">October 2014</span>\r
 <div id="toc">
   <div id="toctitle">Table of Contents</div>
   <noscript><p><b>JavaScript must be enabled in your browser to display the table of contents.</b></p></noscript>
@@ -299,7 +299,7 @@ num (integer)
 <dd>\r
 <p>\r
         The logical number of the workspace. Corresponds to the command\r
-        to switch to this workspace.\r
+        to switch to this workspace. For named workspaces, this will be -1.\r
 </p>\r
 </dd>\r
 <dt class="hdlist1">\r
@@ -584,6 +584,16 @@ window_rect (map)
 </p>\r
 </dd>\r
 <dt class="hdlist1">\r
+deco_rect (map)\r
+</dt>\r
+<dd>\r
+<p>\r
+        The coordinates of the <strong>window decoration</strong> inside its container. These\r
+        coordinates are relative to the container and do not include the actual\r
+        client window.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
 geometry (map)\r
 </dt>\r
 <dd>\r
@@ -1080,7 +1090,7 @@ you can register to an event.</p></div>
 <div class="listingblock">\r
 <div class="content">\r
 <pre><tt>type: SUBSCRIBE\r
-payload: [ "workspace", "focus" ]</tt></pre>\r
+payload: [ "workspace", "output" ]</tt></pre>\r
 </div></div>\r
 </div>\r
 <div class="sect2">\r
@@ -1134,6 +1144,15 @@ barconfig_update (4)
     instance was updated and when the config is reloaded.\r
 </p>\r
 </dd>\r
+<dt class="hdlist1">\r
+binding (5)\r
+</dt>\r
+<dd>\r
+<p>\r
+        Sent when a configured command binding is triggered with the keyboard or\r
+        mouse\r
+</p>\r
+</dd>\r
 </dl></div>\r
 <div class="paragraph"><p><strong>Example:</strong></p></div>\r
 <div class="listingblock">\r
@@ -1158,14 +1177,15 @@ if ($is_event) {
 <h3 id="_workspace_event">4.3. workspace event</h3>\r
 <div class="paragraph"><p>This event consists of a single serialized map containing a property\r
 <tt>change (string)</tt> which indicates the type of the change ("focus", "init",\r
-"empty", "urgent").</p></div>\r
-<div class="paragraph"><p>Moreover, when the change is "focus", an <tt>old (object)</tt> and a <tt>current\r
-(object)</tt> properties will be present with the previous and current\r
-workspace respectively.  When the first switch occurs (when i3 focuses\r
-the workspace visible at the beginning) there is no previous\r
-workspace, and the <tt>old</tt> property will be set to <tt>null</tt>.  Also note\r
-that if the previous is empty it will get destroyed when switching,\r
-but will still be present in the "old" property.</p></div>\r
+"empty", "urgent"). A <tt>current (object)</tt> property will be present with the\r
+affected workspace whenever the type of event affects a workspace (otherwise,\r
+it will be +null).</p></div>\r
+<div class="paragraph"><p>When the change is "focus", an <tt>old (object)</tt> property will be present with the\r
+previous workspace.  When the first switch occurs (when i3 focuses the\r
+workspace visible at the beginning) there is no previous workspace, and the\r
+<tt>old</tt> property will be set to <tt>null</tt>.  Also note that if the previous is empty\r
+it will get destroyed when switching, but will still be present in the "old"\r
+property.</p></div>\r
 <div class="paragraph"><p><strong>Example:</strong></p></div>\r
 <div class="listingblock">\r
 <div class="content">\r
@@ -1219,6 +1239,11 @@ mode is simply named default.</p></div>
 </li>\r
 <li>\r
 <p>\r
+<tt>close</tt> - the window has closed\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
 <tt>focus</tt> - the window has received input focus\r
 </p>\r
 </li>\r
@@ -1232,6 +1257,21 @@ mode is simply named default.</p></div>
 <tt>fullscreen_mode</tt> - the window has entered or exited fullscreen mode\r
 </p>\r
 </li>\r
+<li>\r
+<p>\r
+<tt>move</tt> - the window has changed its position in the tree\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+<tt>floating</tt> - the window has transitioned to or from floating\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+<tt>urgent</tt> - the window has become urgent or lost its urgent status\r
+</p>\r
+</li>\r
 </ul></div>\r
 <div class="paragraph"><p>Additionally a <tt>container (object)</tt> field will be present, which consists\r
 of the window&#8217;s parent container. Be aware that for the "new" event, the\r
@@ -1257,6 +1297,77 @@ this point get the window title as "urxvt").</p></div>
 barconfig of the specified bar_id that were updated in i3. This event is the\r
 same as a <tt>GET_BAR_CONFIG</tt> reply for the bar with the given id.</p></div>\r
 </div>\r
+<div class="sect2">\r
+<h3 id="_binding_event">4.8. binding event</h3>\r
+<div class="paragraph"><p>This event consists of a single serialized map reporting on the details of a\r
+binding that ran a command because of user input. The <tt>change (sring)</tt> field\r
+indicates what sort of binding event was triggered (right now it will always be\r
+<tt>"run"</tt> but may be expanded in the future).</p></div>\r
+<div class="paragraph"><p>The <tt>binding (object)</tt> field contains details about the binding that was run:</p></div>\r
+<div class="dlist"><dl>\r
+<dt class="hdlist1">\r
+command (string)\r
+</dt>\r
+<dd>\r
+<p>\r
+        The i3 command that is configured to run for this binding.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+mods (array of strings)\r
+</dt>\r
+<dd>\r
+<p>\r
+        The modifier keys that were configured with this binding.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+input_code (integer)\r
+</dt>\r
+<dd>\r
+<p>\r
+        If the binding was configured with <tt>bindcode</tt>, this will be the key code\r
+        that was given for the binding. If the binding is a mouse binding, it will be\r
+        the number of the mouse button that was pressed. Otherwise it will be 0.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+symbol (string or null)\r
+</dt>\r
+<dd>\r
+<p>\r
+        If this is a keyboard binding that was configured with <tt>bindsym</tt>, this\r
+        field will contain the given symbol. Otherwise it will be <tt>null</tt>.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+input_type (string)\r
+</dt>\r
+<dd>\r
+<p>\r
+        This will be <tt>"keyboard"</tt> or <tt>"mouse"</tt> depending on whether or not this was\r
+        a keyboard or a mouse binding.\r
+</p>\r
+</dd>\r
+</dl></div>\r
+<div class="paragraph"><p><strong>Example:</strong></p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>{\r
+ "change": "run",\r
+ "binding": {\r
+  "command": "nop",\r
+  "mods": [\r
+    "shift",\r
+    "ctrl"\r
+  ],\r
+  "input_code": 0,\r
+  "symbol": "t",\r
+  "input_type": "keyboard"\r
+ }\r
+}</tt></pre>\r
+</div></div>\r
+</div>\r
 </div>\r
 </div>\r
 <div class="sect1">\r
@@ -1270,27 +1381,100 @@ know):</p></div>
 C\r
 </dt>\r
 <dd>\r
+<div class="ulist"><ul>\r
+<li>\r
 <p>\r
-        i3 includes a headerfile <tt>i3/ipc.h</tt> which provides you all constants.\r
+i3 includes a headerfile <tt>i3/ipc.h</tt> which provides you all constants.\r
 </p>\r
-<div class="literalblock">\r
-<div class="content">\r
-<pre><tt>        https://github.com/acrisci/i3ipc-glib\r
-Go::\r
-        * https://github.com/proxypoke/i3ipc\r
-JavaScript::\r
-        * https://github.com/acrisci/i3ipc-gjs\r
-Lua::\r
-        * https:/github.com/acrisci/i3ipc-lua\r
-Perl::\r
-        * https://metacpan.org/module/AnyEvent::I3\r
-Python::\r
-        * https://github.com/acrisci/i3ipc-python\r
-        * https://github.com/whitelynx/i3ipc (not maintained)\r
-        * https://github.com/ziberna/i3-py (not maintained)\r
-Ruby::\r
-        http://github.com/badboy/i3-ipc</tt></pre>\r
-</div></div>\r
+</li>\r
+<li>\r
+<p>\r
+<a href="https://github.com/acrisci/i3ipc-glib">https://github.com/acrisci/i3ipc-glib</a>\r
+</p>\r
+</li>\r
+</ul></div>\r
+</dd>\r
+<dt class="hdlist1">\r
+Go\r
+</dt>\r
+<dd>\r
+<div class="ulist"><ul>\r
+<li>\r
+<p>\r
+<a href="https://github.com/proxypoke/i3ipc">https://github.com/proxypoke/i3ipc</a>\r
+</p>\r
+</li>\r
+</ul></div>\r
+</dd>\r
+<dt class="hdlist1">\r
+JavaScript\r
+</dt>\r
+<dd>\r
+<div class="ulist"><ul>\r
+<li>\r
+<p>\r
+<a href="https://github.com/acrisci/i3ipc-gjs">https://github.com/acrisci/i3ipc-gjs</a>\r
+</p>\r
+</li>\r
+</ul></div>\r
+</dd>\r
+<dt class="hdlist1">\r
+Lua\r
+</dt>\r
+<dd>\r
+<div class="ulist"><ul>\r
+<li>\r
+<p>\r
+<a href="https://github.com/acrisci/i3ipc-lua">https://github.com/acrisci/i3ipc-lua</a>\r
+</p>\r
+</li>\r
+</ul></div>\r
+</dd>\r
+<dt class="hdlist1">\r
+Perl\r
+</dt>\r
+<dd>\r
+<div class="ulist"><ul>\r
+<li>\r
+<p>\r
+<a href="https://metacpan.org/module/AnyEvent::I3">https://metacpan.org/module/AnyEvent::I3</a>\r
+</p>\r
+</li>\r
+</ul></div>\r
+</dd>\r
+<dt class="hdlist1">\r
+Python\r
+</dt>\r
+<dd>\r
+<div class="ulist"><ul>\r
+<li>\r
+<p>\r
+<a href="https://github.com/acrisci/i3ipc-python">https://github.com/acrisci/i3ipc-python</a>\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+<a href="https://github.com/whitelynx/i3ipc">https://github.com/whitelynx/i3ipc</a> (not maintained)\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+<a href="https://github.com/ziberna/i3-py">https://github.com/ziberna/i3-py</a> (not maintained)\r
+</p>\r
+</li>\r
+</ul></div>\r
+</dd>\r
+<dt class="hdlist1">\r
+Ruby\r
+</dt>\r
+<dd>\r
+<div class="ulist"><ul>\r
+<li>\r
+<p>\r
+<a href="http://github.com/badboy/i3-ipc">http://github.com/badboy/i3-ipc</a>\r
+</p>\r
+</li>\r
+</ul></div>\r
 </dd>\r
 </dl></div>\r
 </div>\r
index e35ce5e7fdc74bdea36ddd92777d1c2dcf856fc2..0eabbfc8a978834693aa188ebd727c955848fa05 100644 (file)
@@ -2,9 +2,9 @@
     "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
 <head>\r
-<link rel="icon" type="image/png" href="/favicon.png">\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.8" />\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
index 26ddcaa679d5fdad5c22b5b6c73f6191825d21ca..3209372d6c7c3d11240bc32c88a4eb4dab93d93c 100644 (file)
@@ -2,9 +2,9 @@
     "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
 <head>\r
-<link rel="icon" type="image/png" href="/favicon.png">\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.8" />\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 ca7b75f893220e121cdc86c5668c057e73a0c63a..7897170733faf564363ab4694ee25136a0c1e13d 100644 (file)
@@ -2,9 +2,9 @@
     "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
 <head>\r
-<link rel="icon" type="image/png" href="/favicon.png">\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.8" />\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
@@ -138,6 +138,8 @@ to install all of them.</p></div>
 client, simply called <tt>cpan</tt>. It comes with every Perl installation and can be\r
 used to install the testsuite. Many users prefer to use the more modern\r
 <tt>cpanminus</tt> instead, though (because it asks no questions and just works):</p></div>\r
+<div class="paragraph"><p>The tests additionally require <tt>Xephyr(1)</tt> to run a nested X server. Install\r
+<tt>xserver-xephyr</tt> on Debian or <tt>xorg-xserver-xephyr</tt> on Arch Linux.</p></div>\r
 <div class="listingblock">\r
 <div class="title">Installing testsuite dependencies using cpanminus (preferred)</div>\r
 <div class="content">\r
@@ -165,7 +167,11 @@ more testcases. Also, it takes care of starting up a separate instance of i3
 with an appropriate configuration file and creates a folder for each run\r
 containing the appropriate i3 logfile for each testcase. The latest folder can\r
 always be found under the symlink <tt>latest/</tt>. Unless told differently, it will\r
-run the tests on a separate X server instance (using the Xdummy script).</p></div>\r
+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
+machines without a powerful video card.</p></div>\r
 <div class="listingblock">\r
 <div class="title">Example invocation of complete-run.pl+</div>\r
 <div class="content">\r
@@ -208,11 +214,10 @@ $ less latest/i3-log-for-04-floating.t</tt></pre>
 <div class="paragraph"><p>If your attempt to run the tests with a bare call to ./complete-run.pl fails, try this:</p></div>\r
 <div class="listingblock">\r
 <div class="content">\r
-<pre><tt>$ ./complete-run.pl --parallel=1 --keep-xdummy-output</tt></pre>\r
+<pre><tt>$ ./complete-run.pl --parallel=1 --keep-xserver-output</tt></pre>\r
 </div></div>\r
-<div class="paragraph"><p>One common cause of failures is not having the X dummy server module\r
-installed.  Under Debian and Ubuntu this is the package\r
-<tt>xserver-xorg-video-dummy</tt>.</p></div>\r
+<div class="paragraph"><p>This will show the output of Xephyr, which is the X server implementation we\r
+use for testing.</p></div>\r
 </div>\r
 <div class="sect3">\r
 <h4 id="_ipc_interface">3.2.2. IPC interface</h4>\r
@@ -236,10 +241,9 @@ manager.</p></div>
 <div class="sect2">\r
 <h3 id="_filesystem_structure">3.3. Filesystem structure</h3>\r
 <div class="paragraph"><p>In the git root of i3, the testcases live in the folder <tt>testcases</tt>. This\r
-folder contains the <tt>complete-run.pl</tt> and <tt>Xdummy</tt> scripts and a base\r
-configuration file which will be used for the tests. The different testcases\r
-(their file extension is .t, not .pl) themselves can be found in the\r
-conventionally named subfolder <tt>t</tt>:</p></div>\r
+folder contains the <tt>complete-run.pl</tt> and a base configuration file which will\r
+be used for the tests. The different testcases (their file extension is .t, not\r
+.pl) themselves can be found in the conventionally named subfolder <tt>t</tt>:</p></div>\r
 <div class="listingblock">\r
 <div class="title">Filesystem structure</div>\r
 <div class="content">\r
@@ -257,8 +261,7 @@ conventionally named subfolder <tt>t</tt>:</p></div>
 │   │   ├── ...\r
 │   │   ├── omitted for brevity\r
 │   │   ├── ...\r
-│   │   └── 74-regress-focus-toggle.t\r
-│   └── Xdummy</tt></pre>\r
+│   │   └── 74-regress-focus-toggle.t</tt></pre>\r
 </div></div>\r
 </div>\r
 </div>\r
index 8192d6ac05863833074185a974841d7088ffcb37..90ec283e0639e8923f3e8299f0009bf8d353d96b 100644 (file)
@@ -2,9 +2,9 @@
     "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
 <head>\r
-<link rel="icon" type="image/png" href="/favicon.png">\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.8" />\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
@@ -148,7 +148,7 @@ stacking and <tt>$mod+w</tt> for tabbed.</p></div>
 <div class="paragraph"><p>To display a window in fullscreen mode or to go out of fullscreen mode again,\r
 press <tt>$mod+f</tt>.</p></div>\r
 <div class="paragraph"><p>There is also a global fullscreen mode in i3 in which the client will span all\r
-available outputs (the command is <tt>fullscreen global</tt>).</p></div>\r
+available outputs (the command is <tt>fullscreen toggle global</tt>).</p></div>\r
 </div>\r
 <div class="sect2">\r
 <h3 id="_opening_other_applications">2.4. Opening other applications</h3>\r
@@ -205,7 +205,8 @@ to upgrade to a newer version of i3) you can use <tt>$mod+Shift+r</tt>.</p></div
 </div>\r
 <div class="sect2">\r
 <h3 id="_exiting_i3">2.10. Exiting i3</h3>\r
-<div class="paragraph"><p>To cleanly exit i3 without killing your X server, you can use <tt>$mod+Shift+e</tt>.</p></div>\r
+<div class="paragraph"><p>To cleanly exit i3 without killing your X server, you can use <tt>$mod+Shift+e</tt>.\r
+By default, a dialog will ask you to confirm if you really want to quit.</p></div>\r
 </div>\r
 <div class="sect2">\r
 <h3 id="_floating">2.11. Floating</h3>\r
@@ -430,7 +431,7 @@ bindcode [--release] [Modifiers+]keycode command</tt></pre>
 <div class="listingblock">\r
 <div class="content">\r
 <pre><tt># Fullscreen\r
-bindsym $mod+f fullscreen\r
+bindsym $mod+f fullscreen toggle\r
 \r
 # Restart\r
 bindsym $mod+Shift+r restart\r
@@ -469,7 +470,39 @@ workspaces is totally convenient. Try it :-).
 </dl></div>\r
 </div>\r
 <div class="sect2">\r
-<h3 id="floating_modifier">4.4. The floating modifier</h3>\r
+<h3 id="mousebindings">4.4. Mouse bindings</h3>\r
+<div class="paragraph"><p>A mouse binding makes i3 execute a command upon pressing a specific mouse\r
+button in the scope of the clicked container (see <a href="#command_criteria">[command_criteria]</a>). You\r
+can configure mouse bindings in a similar way to key bindings.</p></div>\r
+<div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>bindsym [--release] [--whole-window] [Modifiers+]button[n] command</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>By default, the binding will only run when you click on the titlebar of the\r
+window. If the <tt>--whole-window</tt> flag is given, it will run when any part of the\r
+window is clicked. If the <tt>--release</tt> flag is given, it will run when the mouse\r
+button is released.</p></div>\r
+<div class="paragraph"><p><strong>Examples</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt># The middle button over a titlebar kills the window\r
+bindsym --release button2 kill\r
+\r
+# The middle button and a modifer over any part of the window kills the window\r
+bindsym --whole-window $mod+button2 kill\r
+\r
+# The right button toggles floating\r
+bindsym button3 floating toggle\r
+bindsym $mod+button3 floating toggle\r
+\r
+# The side buttons move the window around\r
+bindsym button9 move left\r
+bindsym button8 move right</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="floating_modifier">4.5. The floating modifier</h3>\r
 <div class="paragraph"><p>To move floating windows with your mouse, you can either grab their titlebar\r
 or configure the so called floating modifier which you can then press and\r
 click anywhere in the window itself to move it. The most common setup is to\r
@@ -492,7 +525,7 @@ ratio will be preserved).</p></div>
 </div></div>\r
 </div>\r
 <div class="sect2">\r
-<h3 id="_constraining_floating_window_size">4.5. Constraining floating window size</h3>\r
+<h3 id="_constraining_floating_window_size">4.6. Constraining floating window size</h3>\r
 <div class="paragraph"><p>The maximum and minimum dimensions of floating windows can be specified. If\r
 either dimension of <tt>floating_maximum_size</tt> is specified as -1, that dimension\r
 will be unconstrained with respect to its maximum value. If either dimension of\r
@@ -513,7 +546,7 @@ floating_maximum_size -1 x -1</tt></pre>
 </div></div>\r
 </div>\r
 <div class="sect2">\r
-<h3 id="_orientation_for_new_workspaces">4.6. Orientation for new workspaces</h3>\r
+<h3 id="_orientation_for_new_workspaces">4.7. Orientation for new workspaces</h3>\r
 <div class="paragraph"><p>New workspaces get a reasonable default orientation: Wide-screen monitors\r
 (anything wider than high) get horizontal orientation, rotated monitors\r
 (anything higher than wide) get vertical orientation.</p></div>\r
@@ -531,7 +564,7 @@ behavior.</p></div>
 </div></div>\r
 </div>\r
 <div class="sect2">\r
-<h3 id="_layout_mode_for_new_containers">4.7. Layout mode for new containers</h3>\r
+<h3 id="_layout_mode_for_new_containers">4.8. Layout mode for new containers</h3>\r
 <div class="paragraph"><p>This option determines in which mode new containers on workspace level will\r
 start.</p></div>\r
 <div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
@@ -546,7 +579,7 @@ start.</p></div>
 </div></div>\r
 </div>\r
 <div class="sect2">\r
-<h3 id="_border_style_for_new_windows">4.8. Border style for new windows</h3>\r
+<h3 id="_border_style_for_new_windows">4.9. 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
 "normal". Note that new_float applies only to windows which are starting out as\r
 floating windows, e.g. dialog windows.</p></div>\r
@@ -574,7 +607,7 @@ new_window pixel 3</tt></pre>
 </div></div>\r
 </div>\r
 <div class="sect2">\r
-<h3 id="_hiding_vertical_borders">4.9. Hiding vertical borders</h3>\r
+<h3 id="_hiding_vertical_borders">4.10. Hiding vertical borders</h3>\r
 <div class="paragraph"><p>You can hide vertical 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
@@ -590,7 +623,7 @@ to waste even two pixels in displayspace. Default is none.</p></div>
 </div></div>\r
 </div>\r
 <div class="sect2">\r
-<h3 id="_arbitrary_commands_for_specific_windows_for_window">4.10. Arbitrary commands for specific windows (for_window)</h3>\r
+<h3 id="_arbitrary_commands_for_specific_windows_for_window">4.11. 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
@@ -616,7 +649,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="_variables">4.11. Variables</h3>\r
+<h3 id="_variables">4.12. 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
@@ -640,7 +673,7 @@ you should create a little script which generates a configuration file and run
 it before starting i3 (for example in your <tt>~/.xsession</tt> file).</p></div>\r
 </div>\r
 <div class="sect2">\r
-<h3 id="_automatically_putting_clients_on_specific_workspaces">4.12. Automatically putting clients on specific workspaces</h3>\r
+<h3 id="_automatically_putting_clients_on_specific_workspaces">4.13. Automatically putting clients on specific workspaces</h3>\r
 <div class="paragraph" id="assign_workspace"><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
@@ -709,7 +742,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.13. Automatically starting applications on i3 startup</h3>\r
+<h3 id="_automatically_starting_applications_on_i3_startup">4.14. 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
@@ -733,7 +766,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.14. Automatically putting workspaces on specific screens</h3>\r
+<h3 id="workspace_screen">4.15. 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
@@ -757,7 +790,7 @@ workspace "2: vim" output VGA1</tt></pre>
 </div></div>\r
 </div>\r
 <div class="sect2">\r
-<h3 id="_changing_colors">4.15. Changing colors</h3>\r
+<h3 id="_changing_colors">4.16. 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
@@ -840,7 +873,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.16. Interprocess communication</h3>\r
+<h3 id="_interprocess_communication">4.17. 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
@@ -862,7 +895,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.17. Focus follows mouse</h3>\r
+<h3 id="_focus_follows_mouse">4.18. 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
@@ -881,7 +914,7 @@ links in your browser window).</p></div>
 </div></div>\r
 </div>\r
 <div class="sect2">\r
-<h3 id="_mouse_warping">4.18. Mouse warping</h3>\r
+<h3 id="_mouse_warping">4.19. 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
@@ -900,7 +933,7 @@ behavior described above.</p></div>
 </div></div>\r
 </div>\r
 <div class="sect2">\r
-<h3 id="_popups_during_fullscreen_mode">4.19. Popups during fullscreen mode</h3>\r
+<h3 id="_popups_during_fullscreen_mode">4.20. 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
@@ -937,7 +970,7 @@ Leave fullscreen mode.
 </div></div>\r
 </div>\r
 <div class="sect2">\r
-<h3 id="_focus_wrapping">4.20. Focus wrapping</h3>\r
+<h3 id="_focus_wrapping">4.21. 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
@@ -959,7 +992,7 @@ will always wrap.</p></div>
 </div></div>\r
 </div>\r
 <div class="sect2">\r
-<h3 id="_forcing_xinerama">4.21. Forcing Xinerama</h3>\r
+<h3 id="_forcing_xinerama">4.22. 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
@@ -982,7 +1015,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.22. 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.23. 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
@@ -1000,7 +1033,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.23. Delaying urgency hint reset on workspace change</h3>\r
+<h3 id="_delaying_urgency_hint_reset_on_workspace_change">4.24. 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
@@ -1149,7 +1182,28 @@ modifier &lt;Modifier&gt;</tt></pre>
 <div class="paragraph"><p>Available modifiers are Mod1-Mod5, Shift, Control (see <tt>xmodmap(1)</tt>).</p></div>\r
 </div>\r
 <div class="sect2">\r
-<h3 id="_bar_id">5.4. Bar ID</h3>\r
+<h3 id="_mouse_button_commands">5.4. Mouse button commands</h3>\r
+<div class="paragraph"><p>Specifies a command to run when a button was pressed on i3bar to override the\r
+default behavior. Currently only the mouse wheel buttons are supported. This is\r
+useful for disabling the scroll wheel action or running scripts that implement\r
+custom behavior for these buttons.</p></div>\r
+<div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>wheel_up_cmd &lt;command&gt;\r
+wheel_down_cmd &lt;command&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>bar {\r
+    wheel_up_cmd nop\r
+    wheel_down_cmd exec ~/.i3/scripts/custom_wheel_down\r
+}</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_bar_id">5.5. Bar ID</h3>\r
 <div class="paragraph"><p>Specifies the bar ID for the configured bar instance. If this option is missing,\r
 the ID is set to <em>bar-x</em>, where x corresponds to the position of the embedding\r
 bar block in the config file (<em>bar-0</em>, <em>bar-1</em>, &#8230;).</p></div>\r
@@ -1167,7 +1221,7 @@ bar block in the config file (<em>bar-0</em>, <em>bar-1</em>, &#8230;).</p></div
 </div></div>\r
 </div>\r
 <div class="sect2">\r
-<h3 id="i3bar_position">5.5. Position</h3>\r
+<h3 id="i3bar_position">5.6. Position</h3>\r
 <div class="paragraph"><p>This option determines in which edge of the screen i3bar should show up.</p></div>\r
 <div class="paragraph"><p>The default is bottom.</p></div>\r
 <div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
@@ -1184,7 +1238,7 @@ bar block in the config file (<em>bar-0</em>, <em>bar-1</em>, &#8230;).</p></div
 </div></div>\r
 </div>\r
 <div class="sect2">\r
-<h3 id="_output_s">5.6. Output(s)</h3>\r
+<h3 id="_output_s">5.7. Output(s)</h3>\r
 <div class="paragraph"><p>You can restrict i3bar to one or more outputs (monitors). The default is to\r
 handle all outputs. Restricting the outputs is useful for using different\r
 options for different outputs by using multiple <em>bar</em> blocks.</p></div>\r
@@ -1218,7 +1272,7 @@ bar {
 </div></div>\r
 </div>\r
 <div class="sect2">\r
-<h3 id="_tray_output">5.7. Tray output</h3>\r
+<h3 id="_tray_output">5.8. Tray output</h3>\r
 <div class="paragraph"><p>i3bar by default provides a system tray area where programs such as\r
 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
@@ -1251,7 +1305,7 @@ bar {
 </div></div>\r
 </div>\r
 <div class="sect2">\r
-<h3 id="_font">5.8. Font</h3>\r
+<h3 id="_font">5.9. Font</h3>\r
 <div class="paragraph"><p>Specifies the font to be used in the bar. See <a href="#fonts">[fonts]</a>.</p></div>\r
 <div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
 <div class="listingblock">\r
@@ -1268,7 +1322,7 @@ bar {
 </div></div>\r
 </div>\r
 <div class="sect2">\r
-<h3 id="_workspace_buttons">5.9. Workspace buttons</h3>\r
+<h3 id="_workspace_buttons">5.10. Workspace buttons</h3>\r
 <div class="paragraph"><p>Specifies whether workspace buttons should be shown or not. This is useful if\r
 you want to display a statusline-only bar containing additional information.</p></div>\r
 <div class="paragraph"><p>The default is to show workspace buttons.</p></div>\r
@@ -1286,7 +1340,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.10. Strip workspace numbers</h3>\r
+<h3 id="_strip_workspace_numbers">5.11. Strip workspace numbers</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
@@ -1309,7 +1363,7 @@ workspaces to "1:I", "2:II", "3:III", "4:IV", &#8230;</p></div>
 </div></div>\r
 </div>\r
 <div class="sect2">\r
-<h3 id="_binding_mode_indicator">5.11. Binding Mode indicator</h3>\r
+<h3 id="_binding_mode_indicator">5.12. Binding Mode indicator</h3>\r
 <div class="paragraph"><p>Specifies whether the current binding mode indicator should be shown or not.\r
 This is useful if you want to hide the workspace buttons but still be able\r
 to see the current binding mode indicator.\r
@@ -1329,7 +1383,7 @@ For an example of a <tt>mode</tt> definition, see <a href="#resizingconfig">[res
 </div></div>\r
 </div>\r
 <div class="sect2">\r
-<h3 id="_colors">5.12. Colors</h3>\r
+<h3 id="_colors">5.13. Colors</h3>\r
 <div class="paragraph"><p>As with i3, colors are in HTML hex format (#rrggbb). The following colors can\r
 be configured at the moment:</p></div>\r
 <div class="dlist"><dl>\r
@@ -1599,9 +1653,12 @@ bindsym $mod+h split horizontal</tt></pre>
 <div class="paragraph"><p>Use <tt>layout toggle split</tt>, <tt>layout stacking</tt>, <tt>layout tabbed</tt>, <tt>layout splitv</tt>\r
 or <tt>layout splith</tt> to change the current container layout to splith/splitv,\r
 stacking, tabbed layout, splitv or splith, respectively.</p></div>\r
-<div class="paragraph"><p>To make the current window (!) fullscreen, use <tt>fullscreen</tt>, to make\r
-it floating (or tiling again) use <tt>floating enable</tt> respectively <tt>floating disable</tt>\r
-(or <tt>floating toggle</tt>):</p></div>\r
+<div class="paragraph"><p>To make the current window (!) fullscreen, use <tt>fullscreen enable</tt> (or\r
+<tt>fullscreen enable global</tt> for the global mode), to leave either fullscreen\r
+mode use <tt>fullscreen disable</tt>, and to toggle between these two states use\r
+<tt>fullscreen toggle</tt> (or <tt>fullscreen toggle global</tt>).</p></div>\r
+<div class="paragraph"><p>Likewise, to make the current window floating (or tiling again) use <tt>floating\r
+enable</tt> respectively <tt>floating disable</tt> (or <tt>floating toggle</tt>):</p></div>\r
 <div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
 <div class="listingblock">\r
 <div class="content">\r
@@ -1622,7 +1679,7 @@ bindsym $mod+x layout toggle
 bindsym $mod+x layout toggle all\r
 \r
 # Toggle fullscreen\r
-bindsym $mod+f fullscreen\r
+bindsym $mod+f fullscreen toggle\r
 \r
 # Toggle floating/tiling\r
 bindsym $mod+t floating toggle</tt></pre>\r
@@ -1748,6 +1805,9 @@ container to the next/previous workspace and <tt>move container to workspace cur
 (the last one makes sense only when used with criteria).</p></div>\r
 <div class="paragraph"><p>See <a href="#move_to_outputs">[move_to_outputs]</a> for how to move a container/workspace to a different\r
 RandR output.</p></div>\r
+<div class="paragraph"><p>Workspace names are parsed as\r
+<a href="https://developer.gnome.org/pango/stable/PangoMarkupFormat.html">Pango markup</a>\r
+by i3bar.</p></div>\r
 <div class="paragraph" id="back_and_forth"><p>To switch back to the previously focused workspace, use <tt>workspace\r
 back_and_forth</tt>; likewise, you can move containers to the previously focused\r
 workspace using <tt>move container to workspace back_and_forth</tt>.</p></div>\r
@@ -1768,6 +1828,7 @@ move [window|container] [to] workspace &lt;prev|next|current&gt;</tt></pre>
 <div class="content">\r
 <pre><tt>bindsym $mod+1 workspace 1\r
 bindsym $mod+2 workspace 2\r
+bindsym $mod+3 workspace 3:&lt;span foreground="red"&gt;vim&lt;/span&gt;\r
 ...\r
 \r
 bindsym $mod+Shift+1 move container to workspace 1\r
index a50da7fe8c5f15b902b75ce211d05825554cee3b..8d4744670b7ac4f826f30703b46a2d024624e53f 100644 (file)
@@ -2,9 +2,9 @@
     "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
 <head>\r
-<link rel="icon" type="image/png" href="/favicon.png">\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.8" />\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