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
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::
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
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.
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.
*Example:*
---------------------------------
type: SUBSCRIBE
-payload: [ "workspace", "focus" ]
+payload: [ "workspace", "output" ]
---------------------------------
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:*
--------------------------------------------------------------------
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:*
---------------------
+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
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]]
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::
* 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
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
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+
---------------------------------------
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
=== 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
--------------------------------------------
│ │ ├── omitted for brevity
│ │ ├── ...
│ │ └── 74-regress-focus-toggle.t
-│ └── Xdummy
--------------------------------------------
== Anatomy of a testcase
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
=== 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
*Examples*:
--------------------------------
# Fullscreen
-bindsym $mod+f fullscreen
+bindsym $mod+f fullscreen toggle
# Restart
bindsym $mod+Shift+r restart
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
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,
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*:
--------------
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
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
-------------------------
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
"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
<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
</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
"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
<h1>IPC interface (interprocess communication)</h1>\r
<span id="author">Michael Stapelberg</span><br />\r
<span id="email"><tt><<a href="mailto:michael@i3wm.org">michael@i3wm.org</a>></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>
<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
</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
<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
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
<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
</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
<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’s parent container. Be aware that for the "new" event, the\r
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
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
"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
"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
"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
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
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
<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
<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
│ │ ├── ...\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
"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
<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
</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
<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
</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
</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
</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
</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
</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
</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
</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
<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
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
</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
<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
</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
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
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
</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
</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
</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 — the focus wraps. If\r
however there is another stacked/tabbed container in that direction, focus will\r
</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
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
</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
<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 <command>\r
+wheel_down_cmd <command></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>, …).</p></div>\r
</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
</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
</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
</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
</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
</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
</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
</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
<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
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
(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
<div class="content">\r
<pre><tt>bindsym $mod+1 workspace 1\r
bindsym $mod+2 workspace 2\r
+bindsym $mod+3 workspace 3:<span foreground="red">vim</span>\r
...\r
\r
bindsym $mod+Shift+1 move container to workspace 1\r
"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