]> git.sur5r.net Git - i3/i3.github.io/blobdiff - docs/4.15/userguide.html
save docs for 4.15
[i3/i3.github.io] / docs / 4.15 / userguide.html
diff --git a/docs/4.15/userguide.html b/docs/4.15/userguide.html
new file mode 100644 (file)
index 0000000..4091926
--- /dev/null
@@ -0,0 +1,3106 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\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/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
+<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
+<script type="text/javascript">\r
+/*<![CDATA[*/\r
+document.addEventListener("DOMContentLoaded", function(){asciidoc.footnotes(); asciidoc.toc(2);}, false);\r
+/*]]>*/\r
+</script>\r
+<script type="text/javascript" src="/js/asciidoc-xhtml11.js"></script>\r
+</head>\r
+<body class="article">\r
+\r
+        <div id="main">\r
+            <a href="/"><h1 id="title">i3 - improved tiling WM</h1></a>\r
+                        <ul id="nav">\r
+                                <li><a style="border-bottom: 2px solid #fff" href="/docs">Docs</a></li>\r
+                                <li><a href="/screenshots">Screens</a></li>\r
+                                <li><a href="https://www.reddit.com/r/i3wm/">FAQ</a></li>\r
+                                <li><a href="/contact">Contact</a></li>\r
+                                <li><a href="https://github.com/i3/i3/issues">Bugs</a></li>\r
+                        </ul>\r
+        <br style="clear: both">\r
+<div id="content">\r
+<div id="header">\r
+<h1>i3 User’s Guide</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
+<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>
+</div>\r
+</div>\r
+<div id="preamble">\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>This document contains all the information you need to configure and use the i3\r
+window manager. If it does not, please check <a href="https://www.reddit.com/r/i3wm/">https://www.reddit.com/r/i3wm/</a>\r
+first, then contact us on IRC (preferred) or post your question(s) on the\r
+mailing list.</p></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_default_keybindings">1. Default keybindings</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>For the "too long; didn’t read" people, here is an overview of the default\r
+keybindings (click to see the full-size image):</p></div>\r
+<div class="paragraph"><p><strong>Keys to use with $mod (Alt):</strong></p></div>\r
+<div class="paragraph"><p><span class="image">\r
+<a class="image" href="keyboard-layer1.png">\r
+<img src="keyboard-layer1.png" alt="Keys to use with $mod (Alt)" width="600" />\r
+</a>\r
+</span></p></div>\r
+<div class="paragraph"><p><strong>Keys to use with Shift+$mod:</strong></p></div>\r
+<div class="paragraph"><p><span class="image">\r
+<a class="image" href="keyboard-layer2.png">\r
+<img src="keyboard-layer2.png" alt="Keys to use with Shift+$mod" width="600" />\r
+</a>\r
+</span></p></div>\r
+<div class="paragraph"><p>The red keys are the modifiers you need to press (by default), the blue keys\r
+are your homerow.</p></div>\r
+<div class="paragraph"><p>Note that when starting i3 without a config file, i3-config-wizard will offer\r
+you to create a config file in which the key positions (!) match what you see\r
+in the image above, regardless of the keyboard layout you are using. If you\r
+prefer to use a config file where the key letters match what you are seeing\r
+above, just decline i3-config-wizard’s offer and base your config on\r
+<tt>/etc/i3/config</tt>.</p></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_using_i3">2. Using i3</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>Throughout this guide, the keyword <tt>$mod</tt> will be used to refer to the\r
+configured modifier. This is the Alt key (<tt>Mod1</tt>) by default, with the Windows\r
+key (<tt>Mod4</tt>) being a popular alternative that largely prevents conflicts with\r
+application-defined shortcuts.</p></div>\r
+<div class="sect2">\r
+<h3 id="_opening_terminals_and_moving_around">2.1. Opening terminals and moving around</h3>\r
+<div class="paragraph"><p>One very basic operation is opening a new terminal. By default, the keybinding\r
+for this is <tt>$mod+Enter</tt>, that is Alt+Enter (<tt>Mod1+Enter</tt>) in the default\r
+configuration. By pressing <tt>$mod+Enter</tt>, a new terminal will be opened.  It\r
+will fill the whole space available on your screen.</p></div>\r
+<div class="paragraph"><p><span class="image">\r
+<img src="single_terminal.png" alt="Single terminal" />\r
+</span></p></div>\r
+<div class="paragraph"><p>If you now open another terminal, i3 will place it next to the current one,\r
+splitting the screen size in half. Depending on your monitor, i3 will put the\r
+created window beside the existing window (on wide displays) or below the\r
+existing window (rotated displays).</p></div>\r
+<div class="paragraph"><p><span class="image">\r
+<img src="two_terminals.png" alt="Two terminals" />\r
+</span></p></div>\r
+<div class="paragraph"><p>To move the focus between the two terminals, you can use the direction keys\r
+which you may know from the editor <tt>vi</tt>. However, in i3, your homerow is used\r
+for these keys (in <tt>vi</tt>, the keys are shifted to the left by one for\r
+compatibility with most keyboard layouts). Therefore, <tt>$mod+j</tt> is left, <tt>$mod+k</tt>\r
+is down, <tt>$mod+l</tt> is up and <tt>$mod+;</tt> is right. So, to switch between the\r
+terminals, use <tt>$mod+k</tt> or <tt>$mod+l</tt>. Of course, you can also use the arrow keys.</p></div>\r
+<div class="paragraph"><p>At the moment, your workspace is split (it contains two terminals) in a\r
+specific direction (horizontal by default). Every window can be split\r
+horizontally or vertically again, just like the workspace. The terminology is\r
+"window" for a container that actually contains an X11 window (like a terminal\r
+or browser) and "split container" for containers that consist of one or more\r
+windows.</p></div>\r
+<div class="paragraph"><p>TODO: picture of the tree</p></div>\r
+<div class="paragraph"><p>To split a window vertically, press <tt>$mod+v</tt> before you create the new window.\r
+To split it horizontally, press <tt>$mod+h</tt>.</p></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_changing_the_container_layout">2.2. Changing the container layout</h3>\r
+<div class="paragraph"><p>A split container can have one of the following layouts:</p></div>\r
+<div class="dlist"><dl>\r
+<dt class="hdlist1">\r
+splith/splitv\r
+</dt>\r
+<dd>\r
+<p>\r
+Windows are sized so that every window gets an equal amount of space in the\r
+container. splith distributes the windows horizontally (windows are right next\r
+to each other), splitv distributes them vertically (windows are on top of each\r
+other).\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+stacking\r
+</dt>\r
+<dd>\r
+<p>\r
+Only the focused window in the container is displayed. You get a list of\r
+windows at the top of the container.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+tabbed\r
+</dt>\r
+<dd>\r
+<p>\r
+The same principle as <tt>stacking</tt>, but the list of windows at the top is only\r
+a single line which is vertically split.\r
+</p>\r
+</dd>\r
+</dl></div>\r
+<div class="paragraph"><p>To switch modes, press <tt>$mod+e</tt> for splith/splitv (it toggles), <tt>$mod+s</tt> for\r
+stacking and <tt>$mod+w</tt> for tabbed.</p></div>\r
+<div class="paragraph"><p><span class="image">\r
+<img src="modes.png" alt="Container modes" />\r
+</span></p></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_toggling_fullscreen_mode_for_a_window">2.3. Toggling fullscreen mode for a window</h3>\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 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 class="paragraph"><p>Aside from opening applications from a terminal, you can also use the handy\r
+<tt>dmenu</tt> which is opened by pressing <tt>$mod+d</tt> by default. Just type the name\r
+(or a part of it) of the application which you want to open. The corresponding\r
+application has to be in your <tt>$PATH</tt> for this to work.</p></div>\r
+<div class="paragraph"><p>Additionally, if you have applications you open very frequently, you can\r
+create a keybinding for starting the application directly. See the section\r
+<a href="#configuring">[configuring]</a> for details.</p></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_closing_windows">2.5. Closing windows</h3>\r
+<div class="paragraph"><p>If an application does not provide a mechanism for closing (most applications\r
+provide a menu, the escape key or a shortcut like <tt>Control+w</tt> to close), you\r
+can press <tt>$mod+Shift+q</tt> to kill a window. For applications which support\r
+the WM_DELETE protocol, this will correctly close the application (saving\r
+any modifications or doing other cleanup). If the application doesn’t support\r
+the WM_DELETE protocol your X server will kill the window and the behaviour\r
+depends on the application.</p></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_using_workspaces">2.6. Using workspaces</h3>\r
+<div class="paragraph"><p>Workspaces are an easy way to group a set of windows. By default, you are on\r
+the first workspace, as the bar on the bottom left indicates. To switch to\r
+another workspace, press <tt>$mod+num</tt> where <tt>num</tt> is the number of the workspace\r
+you want to use. If the workspace does not exist yet, it will be created.</p></div>\r
+<div class="paragraph"><p>A common paradigm is to put the web browser on one workspace, communication\r
+applications (<tt>mutt</tt>, <tt>irssi</tt>, &#8230;) on another one, and the ones with which you\r
+work, on the third one. Of course, there is no need to follow this approach.</p></div>\r
+<div class="paragraph"><p>If you have multiple screens, a workspace will be created on each screen at\r
+startup. If you open a new workspace, it will be bound to the screen you\r
+created it on.  When you switch to a workspace on another screen, i3 will set\r
+focus to that screen.</p></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_moving_windows_to_workspaces">2.7. Moving windows to workspaces</h3>\r
+<div class="paragraph"><p>To move a window to another workspace, simply press <tt>$mod+Shift+num</tt> where\r
+<tt>num</tt> is (like when switching workspaces) the number of the target workspace.\r
+Similarly to switching workspaces, the target workspace will be created if\r
+it does not yet exist.</p></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_resizing">2.8. Resizing</h3>\r
+<div class="paragraph"><p>The easiest way to resize a container is by using the mouse: Grab the border\r
+and move it to the wanted size.</p></div>\r
+<div class="paragraph"><p>You can also use <a href="#binding_modes">[binding_modes]</a> to define a mode for resizing via the\r
+keyboard. To see an example for this, look at the\r
+<a href="https://github.com/i3/i3/blob/next/etc/config.keycodes">default config</a> provided\r
+by i3.</p></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_restarting_i3_inplace">2.9. Restarting i3 inplace</h3>\r
+<div class="paragraph"><p>To restart i3 in place (and thus get into a clean state if there is a bug, or\r
+to upgrade to a newer version of i3) you can use <tt>$mod+Shift+r</tt>.</p></div>\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>.\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="paragraph"><p>Floating mode is the opposite of tiling mode. The position and size of\r
+a window are not managed automatically by i3, but manually by\r
+you. Using this mode violates the tiling paradigm but can be useful\r
+for some corner cases like "Save as" dialog windows, or toolbar\r
+windows (GIMP or similar). Those windows usually set the appropriate\r
+hint and are opened in floating mode by default.</p></div>\r
+<div class="paragraph"><p>You can toggle floating mode for a window by pressing <tt>$mod+Shift+Space</tt>. By\r
+dragging the window’s titlebar with your mouse you can move the window\r
+around. By grabbing the borders and moving them you can resize the window. You\r
+can also do that by using the <a href="#floating_modifier">[floating_modifier]</a>. Another way to resize\r
+floating windows using the mouse is to right-click on the titlebar and drag.</p></div>\r
+<div class="paragraph"><p>For resizing floating windows with your keyboard, see the resizing binding mode\r
+provided by the i3 <a href="https://github.com/i3/i3/blob/next/etc/config.keycodes">default config</a>.</p></div>\r
+<div class="paragraph"><p>Floating windows are always on top of tiling windows.</p></div>\r
+</div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_tree">3. Tree</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>i3 stores all information about the X11 outputs, workspaces and layout of the\r
+windows on them in a tree. The root node is the X11 root window, followed by\r
+the X11 outputs, then dock areas and a content container, then workspaces and\r
+finally the windows themselves. In previous versions of i3 we had multiple lists\r
+(of outputs, workspaces) and a table for each workspace. That approach turned\r
+out to be complicated to use (snapping), understand and implement.</p></div>\r
+<div class="sect2">\r
+<h3 id="_the_tree_consists_of_containers">3.1. The tree consists of Containers</h3>\r
+<div class="paragraph"><p>The building blocks of our tree are so-called <tt>Containers</tt>. A <tt>Container</tt> can\r
+host a window (meaning an X11 window, one that you can actually see and use,\r
+like a browser). Alternatively, it could contain one or more <tt>Containers</tt>. A\r
+simple example is the workspace: When you start i3 with a single monitor, a\r
+single workspace and you open two terminal windows, you will end up with a tree\r
+like this:</p></div>\r
+<div class="imageblock" style="float:right;">\r
+<div class="content">\r
+<img src="tree-layout2.png" alt="layout2" />\r
+</div>\r
+</div>\r
+<div class="imageblock">\r
+<div class="content">\r
+<img src="tree-shot4.png" alt="shot4" />\r
+</div>\r
+<div class="title">Figure 1. Two terminals on standard workspace</div>\r
+</div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="OrientationSplit">3.2. Orientation and Split Containers</h3>\r
+<div class="paragraph"><p>It is only natural to use so-called <tt>Split Containers</tt> in order to build a\r
+layout when using a tree as data structure. In i3, every <tt>Container</tt> has an\r
+orientation (horizontal, vertical or unspecified) and the orientation depends\r
+on the layout the container is in (vertical for splitv and stacking, horizontal\r
+for splith and tabbed). So, in our example with the workspace, the default\r
+layout of the workspace <tt>Container</tt> is splith (most monitors are widescreen\r
+nowadays). If you change the layout to splitv (<tt>$mod+v</tt> in the default config)\r
+and <strong>then</strong> open two terminals, i3 will configure your windows like this:</p></div>\r
+<div class="imageblock">\r
+<div class="content">\r
+<img src="tree-shot2.png" alt="shot2" />\r
+</div>\r
+<div class="title">Figure 2. Vertical Workspace Orientation</div>\r
+</div>\r
+<div class="paragraph"><p>An interesting new feature of i3 since version 4 is the ability to split anything:\r
+Let’s assume you have two terminals on a workspace (with splith layout, that is\r
+horizontal orientation), focus is on the right terminal. Now you want to open\r
+another terminal window below the current one. If you would just open a new\r
+terminal window, it would show up to the right due to the splith layout.\r
+Instead, press <tt>$mod+v</tt> to split the container with the splitv layout (to\r
+open a <tt>Horizontal Split Container</tt>, use <tt>$mod+h</tt>). Now you can open a new\r
+terminal and it will open below the current one:</p></div>\r
+<div class="imageblock" style="float:right;">\r
+<div class="content">\r
+<img src="tree-layout1.png" alt="Layout" />\r
+</div>\r
+</div>\r
+<div class="imageblock">\r
+<div class="content">\r
+<img src="tree-shot1.png" alt="shot" />\r
+</div>\r
+<div class="title">Figure 3. Vertical Split Container</div>\r
+</div>\r
+<div style="clear:both;"></div>\r
+<div class="paragraph"><p>You probably guessed it already: There is no limit on how deep your hierarchy\r
+of splits can be.</p></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_focus_parent">3.3. Focus parent</h3>\r
+<div class="paragraph"><p>Let’s stay with our example from above. We have a terminal on the left and two\r
+vertically split terminals on the right, focus is on the bottom right one. When\r
+you open a new terminal, it will open below the current one.</p></div>\r
+<div class="paragraph"><p>So, how can you open a new terminal window to the <strong>right</strong> of the current one?\r
+The solution is to use <tt>focus parent</tt>, which will focus the <tt>Parent Container</tt> of\r
+the current <tt>Container</tt>. In this case, you would focus the <tt>Vertical Split\r
+Container</tt> which is <strong>inside</strong> the horizontally oriented workspace. Thus, now new\r
+windows will be opened to the right of the <tt>Vertical Split Container</tt>:</p></div>\r
+<div class="imageblock">\r
+<div class="content">\r
+<img src="tree-shot3.png" alt="shot3" />\r
+</div>\r
+<div class="title">Figure 4. Focus parent, then open new terminal</div>\r
+</div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_implicit_containers">3.4. Implicit containers</h3>\r
+<div class="paragraph"><p>In some cases, i3 needs to implicitly create a container to fulfill your\r
+command.</p></div>\r
+<div class="paragraph"><p>One example is the following scenario: You start i3 with a single monitor and a\r
+single workspace on which you open three terminal windows. All these terminal\r
+windows are directly attached to one node inside i3’s layout tree, the\r
+workspace node. By default, the workspace node’s orientation is <tt>horizontal</tt>.</p></div>\r
+<div class="paragraph"><p>Now you move one of these terminals down (<tt>$mod+Shift+k</tt> by default). The\r
+workspace node’s orientation will be changed to <tt>vertical</tt>. The terminal window\r
+you moved down is directly attached to the workspace and appears on the bottom\r
+of the screen. A new (horizontal) container was created to accommodate the\r
+other two terminal windows. You will notice this when switching to tabbed mode\r
+(for example). You would end up having one tab with a representation of the split\r
+container (e.g., "H[urxvt firefox]") and the other one being the terminal window\r
+you moved down.</p></div>\r
+</div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="configuring">4. Configuring i3</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>This is where the real fun begins ;-). Most things are very dependent on your\r
+ideal working environment so we can’t make reasonable defaults for them.</p></div>\r
+<div class="paragraph"><p>While not using a programming language for the configuration, i3 stays\r
+quite flexible in regards to the things you usually want your window manager\r
+to do.</p></div>\r
+<div class="paragraph"><p>For example, you can configure bindings to jump to specific windows,\r
+you can set specific applications to start on specific workspaces, you can\r
+automatically start applications, you can change the colors of i3, and you\r
+can bind your keys to do useful things.</p></div>\r
+<div class="paragraph"><p>To change the configuration of i3, copy <tt>/etc/i3/config</tt> to <tt>~/.i3/config</tt>\r
+(or <tt>~/.config/i3/config</tt> if you like the XDG directory scheme) and edit it\r
+with a text editor.</p></div>\r
+<div class="paragraph"><p>On first start (and on all following starts, unless you have a configuration\r
+file), i3 will offer you to create a configuration file. You can tell the\r
+wizard to use either Alt (<tt>Mod1</tt>) or Windows (<tt>Mod4</tt>) as modifier in the config\r
+file. Also, the created config file will use the key symbols of your current\r
+keyboard layout. To start the wizard, use the command <tt>i3-config-wizard</tt>.\r
+Please note that you must not have <tt>~/.i3/config</tt>, otherwise the wizard will\r
+exit.</p></div>\r
+<div class="paragraph"><p>Since i3 4.0, a new configuration format is used. i3 will try to automatically\r
+detect the format version of a config file based on a few different keywords,\r
+but if you want to make sure that your config is read with the new format,\r
+include the following line in your config file:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt># i3 config file (v4)</tt></pre>\r
+</div></div>\r
+<div class="sect2">\r
+<h3 id="_comments">4.1. Comments</h3>\r
+<div class="paragraph"><p>It is possible and recommended to use comments in your configuration file to\r
+properly document your setup for later reference. Comments are started with\r
+a # and can only be used at the beginning of a line:</p></div>\r
+<div class="paragraph"><p><strong>Examples</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt># This is a comment</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="fonts">4.2. Fonts</h3>\r
+<div class="paragraph"><p>i3 has support for both X core fonts and FreeType fonts (through Pango) to\r
+render window titles.</p></div>\r
+<div class="paragraph"><p>To generate an X core font description, you can use <tt>xfontsel(1)</tt>. To see\r
+special characters (Unicode), you need to use a font which supports the\r
+ISO-10646 encoding.</p></div>\r
+<div class="paragraph"><p>A FreeType font description is composed by a font family, a style, a weight,\r
+a variant, a stretch and a size.\r
+FreeType fonts support right-to-left rendering and contain often more\r
+Unicode glyphs than X core fonts.</p></div>\r
+<div class="paragraph"><p>If i3 cannot open the configured font, it will output an error in the logfile\r
+and fall back to a working font.</p></div>\r
+<div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>font &lt;X core font description&gt;\r
+font pango:&lt;family list&gt; [&lt;style options&gt;] &lt;size&gt;</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p><strong>Examples</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1\r
+font pango:DejaVu Sans Mono 10\r
+font pango:DejaVu Sans Mono, Terminus Bold Semi-Condensed 11\r
+font pango:Terminus 11px</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="keybindings">4.3. Keyboard bindings</h3>\r
+<div class="paragraph"><p>A keyboard binding makes i3 execute a command (see below) upon pressing a\r
+specific key. i3 allows you to bind either on keycodes or on keysyms (you can\r
+also mix your bindings, though i3 will not protect you from overlapping ones).</p></div>\r
+<div class="ulist"><ul>\r
+<li>\r
+<p>\r
+A keysym (key symbol) is a description for a specific symbol, like "a"\r
+  or "b", but also more strange ones like "underscore" instead of "_". These\r
+  are the ones you use in Xmodmap to remap your keys. To get the current\r
+  mapping of your keys, use <tt>xmodmap -pke</tt>. To interactively enter a key and\r
+  see what keysym it is configured to, use <tt>xev</tt>.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Keycodes do not need to have a symbol assigned (handy for custom vendor\r
+  hotkeys on some notebooks) and they will not change their meaning as you\r
+  switch to a different keyboard layout (when using <tt>xmodmap</tt>).\r
+</p>\r
+</li>\r
+</ul></div>\r
+<div class="paragraph"><p>My recommendation is: If you often switch keyboard layouts but you want to keep\r
+your bindings in the same physical location on the keyboard, use keycodes.\r
+If you don’t switch layouts, and want a clean and simple config file, use\r
+keysyms.</p></div>\r
+<div class="paragraph"><p>Some tools (such as <tt>import</tt> or <tt>xdotool</tt>) might be unable to run upon a\r
+KeyPress event, because the keyboard/pointer is still grabbed. For these\r
+situations, the <tt>--release</tt> flag can be used, which will execute the command\r
+after the keys have been released.</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] [&lt;Group&gt;+][&lt;Modifiers&gt;+]&lt;keysym&gt; command\r
+bindcode [--release] [&lt;Group&gt;+][&lt;Modifiers&gt;+]&lt;keycode&gt; command</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p><strong>Examples</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt># Fullscreen\r
+bindsym $mod+f fullscreen toggle\r
+\r
+# Restart\r
+bindsym $mod+Shift+r restart\r
+\r
+# Notebook-specific hotkeys\r
+bindcode 214 exec --no-startup-id /home/michael/toggle_beamer.sh\r
+\r
+# Simulate ctrl+v upon pressing $mod+x\r
+bindsym --release $mod+x exec --no-startup-id xdotool key --clearmodifiers ctrl+v\r
+\r
+# Take a screenshot upon pressing $mod+x (select an area)\r
+bindsym --release $mod+x exec --no-startup-id import /tmp/latest-screenshot.png</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>Available Modifiers:</p></div>\r
+<div class="dlist"><dl>\r
+<dt class="hdlist1">\r
+Mod1-Mod5, Shift, Control\r
+</dt>\r
+<dd>\r
+<p>\r
+Standard modifiers, see <tt>xmodmap(1)</tt>\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+Group1, Group2, Group3, Group4\r
+</dt>\r
+<dd>\r
+<p>\r
+When using multiple keyboard layouts (e.g. with <tt>setxkbmap -layout us,ru</tt>), you\r
+can specify in which XKB group (also called “layout”) a keybinding should be\r
+active. By default, keybindings are translated in Group1 and are active in all\r
+groups. If you want to override keybindings in one of your layouts, specify the\r
+corresponding group. For backwards compatibility, the group “Mode_switch” is an\r
+alias for Group2.\r
+</p>\r
+</dd>\r
+</dl></div>\r
+</div>\r
+<div class="sect2">\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] [--border] [--whole-window] [--exclude-titlebar] [&lt;Modifiers&gt;+]button&lt;n&gt; 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>--release</tt> flag is given, it will run when the mouse button\r
+is released.</p></div>\r
+<div class="paragraph"><p>If the <tt>--whole-window</tt> flag is given, the binding will also run when any part\r
+of the window is clicked, with the exception of the border. To have a bind run\r
+when the border is clicked, specify the <tt>--border</tt> flag.</p></div>\r
+<div class="paragraph"><p>If the <tt>--exclude-titlebar</tt> flag is given, the titlebar will not be considered\r
+for the keybinding.</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="binding_modes">4.5. Binding modes</h3>\r
+<div class="paragraph"><p>You can have multiple sets of bindings by using different binding modes. When\r
+you switch to another binding mode, all bindings from the current mode are\r
+released and only the bindings defined in the new mode are valid for as long as\r
+you stay in that binding mode. The only predefined binding mode is <tt>default</tt>,\r
+which is the mode i3 starts out with and to which all bindings not defined in a\r
+specific binding mode belong.</p></div>\r
+<div class="paragraph"><p>Working with binding modes consists of two parts: defining a binding mode and\r
+switching to it. For these purposes, there are one config directive and one\r
+command, both of which are called <tt>mode</tt>. The directive is used to define the\r
+bindings belonging to a certain binding mode, while the command will switch to\r
+the specified mode.</p></div>\r
+<div class="paragraph"><p>It is recommended to use binding modes in combination with <a href="#variables">[variables]</a> in\r
+order to make maintenance easier. Below is an example of how to use a binding\r
+mode.</p></div>\r
+<div class="paragraph"><p>Note that it is advisable to define bindings for switching back to the default\r
+mode.</p></div>\r
+<div class="paragraph"><p>Note that it is possible to use <a href="#pango_markup">[pango_markup]</a> for binding modes, but you\r
+need to enable it explicitly by passing the <tt>--pango_markup</tt> flag to the mode\r
+definition.</p></div>\r
+<div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt># config directive\r
+mode [--pango_markup] &lt;name&gt;\r
+\r
+# command\r
+mode &lt;name&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># Press $mod+o followed by either f, t, Escape or Return to launch firefox,\r
+# thunderbird or return to the default mode, respectively.\r
+set $mode_launcher Launch: [f]irefox [t]hunderbird\r
+bindsym $mod+o mode "$mode_launcher"\r
+\r
+mode "$mode_launcher" {\r
+    bindsym f exec firefox\r
+    bindsym t exec thunderbird\r
+\r
+    bindsym Escape mode "default"\r
+    bindsym Return mode "default"\r
+}</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="floating_modifier">4.6. 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
+use the same key you use for managing windows (Mod1 for example). Then\r
+you can press Mod1, click into a window using your left mouse button, and drag\r
+it to the position you want.</p></div>\r
+<div class="paragraph"><p>When holding the floating modifier, you can resize a floating window by\r
+pressing the right mouse button on it and moving around while holding it. If\r
+you hold the shift button as well, the resize will be proportional (the aspect\r
+ratio will be preserved).</p></div>\r
+<div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>floating_modifier &lt;Modifier&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>floating_modifier Mod1</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_constraining_floating_window_size">4.7. 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
+<tt>floating_maximum_size</tt> is undefined, or specified as 0, i3 will use a default\r
+value to constrain the maximum size. <tt>floating_minimum_size</tt> is treated in a\r
+manner analogous to <tt>floating_maximum_size</tt>.</p></div>\r
+<div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>floating_minimum_size &lt;width&gt; x &lt;height&gt;\r
+floating_maximum_size &lt;width&gt; x &lt;height&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>floating_minimum_size 75 x 50\r
+floating_maximum_size -1 x -1</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_orientation_for_new_workspaces">4.8. 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 class="paragraph"><p>With the <tt>default_orientation</tt> configuration directive, you can override that\r
+behavior.</p></div>\r
+<div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>default_orientation horizontal|vertical|auto</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>default_orientation vertical</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_layout_mode_for_new_containers">4.9. 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 class="listingblock">\r
+<div class="content">\r
+<pre><tt>workspace_layout default|stacking|tabbed</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>workspace_layout tabbed</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_default_border_style_for_new_windows">4.10. Default border style for new windows</h3>\r
+<div class="paragraph"><p>This option determines which border style new windows will have. The default is\r
+<tt>normal</tt>. Note that default_floating_border applies only to windows which are starting out as\r
+floating windows, e.g., dialog windows, but not windows that are floated later on.</p></div>\r
+<div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>default_border normal|none|pixel\r
+default_border normal|pixel &lt;px&gt;\r
+default_floating_border normal|none|pixel\r
+default_floating_border normal|pixel &lt;px&gt;</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>Please note that <tt>new_window</tt> and <tt>new_float</tt> have been deprecated in favor of the above options\r
+and will be removed in a future release. We strongly recommend using the new options instead.</p></div>\r
+<div class="paragraph"><p><strong>Example</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>default_border pixel</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>The "normal" and "pixel" border styles support an optional border width in\r
+pixels:</p></div>\r
+<div class="paragraph"><p><strong>Example</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt># The same as default_border none\r
+default_border pixel 0\r
+\r
+# A 3 px border\r
+default_border pixel 3</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_hiding_vertical_borders">4.11. Hiding borders adjacent to the screen edges</h3>\r
+<div class="paragraph"><p>You can hide container borders adjacent to the screen edges using\r
+<tt>hide_edge_borders</tt>. This is useful if you are using scrollbars, or do not want\r
+to waste even two pixels in displayspace. The "smart" setting hides borders on\r
+workspaces with only one window visible, but keeps them on workspaces with\r
+multiple windows visible. Default is none.</p></div>\r
+<div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>hide_edge_borders none|vertical|horizontal|both|smart</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>hide_edge_borders vertical</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="for_window">4.12. 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><strong>Syntax</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>for_window &lt;criteria&gt; &lt;command&gt;</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p><strong>Examples</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt># enable floating mode for all XTerm windows\r
+for_window [class="XTerm"] floating enable\r
+\r
+# Make all urxvts use a 1-pixel border:\r
+for_window [class="urxvt"] border pixel 1\r
+\r
+# A less useful, but rather funny example:\r
+# makes the window floating as soon as I change\r
+# directory to ~/work\r
+for_window [title="x200: ~/work"] floating enable</tt></pre>\r
+</div></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="no_focus">4.13. Don&#8217;t focus window upon opening</h3>\r
+<div class="paragraph"><p>When a new window appears, it will be focused. The <tt>no_focus</tt> directive allows preventing\r
+this from happening and must be used in combination with <a href="#command_criteria">[command_criteria]</a>.</p></div>\r
+<div class="paragraph"><p>Note that this does not apply to all cases, e.g., when feeding data into a running application\r
+causing it to request being focused. To configure the behavior in such cases, refer to\r
+<a href="#focus_on_window_activation">[focus_on_window_activation]</a>.</p></div>\r
+<div class="paragraph"><p><tt>no_focus</tt> will also be ignored for the first window on a workspace as there shouldn&#8217;t be\r
+a reason to not focus the window in this case. This allows for better usability in\r
+combination with <tt>workspace_layout</tt>.</p></div>\r
+<div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>no_focus &lt;criteria&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>no_focus [window_role="pop-up"]</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="variables">4.14. 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
+variables can be handy.</p></div>\r
+<div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>set $&lt;name&gt; &lt;value&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>set $m Mod1\r
+bindsym $m+Shift+r restart</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>Variables are directly replaced in the file when parsing. Variables expansion\r
+is not recursive so it is not possible to define a variable with a value\r
+containing another variable. There is no fancy handling and there are\r
+absolutely no plans to change this. If you need a more dynamic configuration\r
+you should create a little script which generates a configuration file and run\r
+it before starting i3 (for example in your <tt>~/.xsession</tt> file).</p></div>\r
+<div class="paragraph"><p>Also see <a href="#xresources">[xresources]</a> to learn how to create variables based on resources\r
+loaded from the X resource database.</p></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="xresources">4.15. X resources</h3>\r
+<div class="paragraph"><p><a href="#variables">[variables]</a> can also be created using a value configured in the X resource\r
+database. This is useful, for example, to avoid configuring color values within\r
+the i3 configuration. Instead, the values can be configured, once, in the X\r
+resource database to achieve an easily maintainable, consistent color theme\r
+across many X applications.</p></div>\r
+<div class="paragraph"><p>Defining a resource will load this resource from the resource database and\r
+assign its value to the specified variable. A fallback must be specified in\r
+case the resource cannot be loaded from the database.</p></div>\r
+<div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>set_from_resource $&lt;name&gt; &lt;resource_name&gt; &lt;fallback&gt;</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p><strong>Example</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt># The ~/.Xresources should contain a line such as\r
+#     *color0: #121212\r
+# and must be loaded properly, e.g., by using\r
+#     xrdb ~/.Xresources\r
+# This value is picked up on by other applications (e.g., the URxvt terminal\r
+# emulator) and can be used in i3 like this:\r
+set_from_resource $black i3wm.color0 #000000</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="assign_workspace">4.16. Automatically putting clients on specific workspaces</h3>\r
+<div class="paragraph"><p>To automatically make a specific window show up on a specific workspace, you\r
+can use an <strong>assignment</strong>. You can match windows by using any criteria,\r
+see <a href="#command_criteria">[command_criteria]</a>. It is recommended that you match on window classes\r
+(and instances, when appropriate) instead of window titles whenever possible\r
+because some applications first create their window, and then worry about\r
+setting the correct title. Firefox with Vimperator comes to mind. The window\r
+starts up being named Firefox, and only when Vimperator is loaded does the\r
+title change. As i3 will get the title as soon as the application maps the\r
+window (mapping means actually displaying it on the screen), you’d need to have\r
+to match on <em>Firefox</em> in this case.</p></div>\r
+<div class="paragraph"><p>You can also assign a window to show up on a specific output. You can use RandR\r
+names such as <tt>VGA1</tt> or names relative to the output with the currently focused\r
+workspace such as <tt>left</tt> and <tt>down</tt>.</p></div>\r
+<div class="paragraph"><p>Assignments are processed by i3 in the order in which they appear in the config\r
+file. The first one which matches the window wins and later assignments are not\r
+considered.</p></div>\r
+<div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>assign &lt;criteria&gt; [→] [workspace] [number] &lt;workspace&gt;\r
+assign &lt;criteria&gt; [→] output left|right|up|down|primary|&lt;output&gt;</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p><strong>Examples</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt># Assign URxvt terminals to workspace 2\r
+assign [class="URxvt"] 2\r
+\r
+# Same thing, but more precise (exact match instead of substring)\r
+assign [class="^URxvt$"] 2\r
+\r
+# Same thing, but with a beautiful arrow :)\r
+assign [class="^URxvt$"] → 2\r
+\r
+# Assignment to a named workspace\r
+assign [class="^URxvt$"] → work\r
+\r
+# Assign to the workspace with number 2, regardless of name\r
+assign [class="^URxvt$"] → number 2\r
+\r
+# You can also specify a number + name. If the workspace with number 2 exists, assign will skip the text part.\r
+assign [class="^URxvt$"] → number "2: work"\r
+\r
+# Start urxvt -name irssi\r
+assign [class="^URxvt$" instance="^irssi$"] → 3\r
+\r
+# Assign urxvt to the output right of the current one\r
+assign [class="^URxvt$"] → output right\r
+\r
+# Assign urxvt to the primary output\r
+assign [class="^URxvt$"] → output primary</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>Note that you might not have a primary output configured yet. To do so, run:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>xrandr --output &lt;output&gt; --primary</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>Also, the arrow is not required, it just looks good :-). If you decide to\r
+use it, it has to be a UTF-8 encoded arrow, not <tt>-&gt;</tt> or something like that.</p></div>\r
+<div class="paragraph"><p>To get the class and instance, you can use <tt>xprop</tt>. After clicking on the\r
+window, you will see the following output:</p></div>\r
+<div class="paragraph"><p><strong>xprop</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>WM_CLASS(STRING) = "irssi", "URxvt"</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>The first part of the WM_CLASS is the instance ("irssi" in this example), the\r
+second part is the class ("URxvt" in this example).</p></div>\r
+<div class="paragraph"><p>Should you have any problems with assignments, make sure to check the i3\r
+logfile first (see <a href="https://i3wm.org/docs/debugging.html">https://i3wm.org/docs/debugging.html</a>). It includes more\r
+details about the matching process and the window’s actual class, instance and\r
+title when starting up.</p></div>\r
+<div class="paragraph"><p>Note that if you want to start an application just once on a specific\r
+workspace, but you don’t want to assign all instances of it permanently, you\r
+can make use of i3’s startup-notification support (see <a href="#exec">[exec]</a>) in your config\r
+file in the following way:</p></div>\r
+<div class="paragraph"><p><strong>Start iceweasel on workspace 3 (once)</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt># Start iceweasel on workspace 3, then switch back to workspace 1\r
+# (Being a command-line utility, i3-msg does not support startup notifications,\r
+#  hence the exec --no-startup-id.)\r
+# (Starting iceweasel with i3’s exec command is important in order to make i3\r
+#  create a startup notification context, without which the iceweasel window(s)\r
+#  cannot be matched onto the workspace on which the command was started.)\r
+exec --no-startup-id i3-msg 'workspace 3; exec iceweasel; workspace 1'</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_automatically_starting_applications_on_i3_startup">4.17. Automatically starting applications on i3 startup</h3>\r
+<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
+also when restarting i3 you should use the <tt>exec_always</tt>\r
+keyword. These commands will be run in order.</p></div>\r
+<div class="paragraph"><p>See <a href="#command_chaining">[command_chaining]</a> for details on the special meaning of <tt>;</tt> (semicolon)\r
+and <tt>,</tt> (comma): they chain commands together in i3, so you need to use quoted\r
+strings (as shown in <a href="#exec_quoting">[exec_quoting]</a>) if they appear in your command.</p></div>\r
+<div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>exec [--no-startup-id] &lt;command&gt;\r
+exec_always [--no-startup-id] &lt;command&gt;</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p><strong>Examples</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>exec chromium\r
+exec_always ~/my_script.sh\r
+\r
+# Execute the terminal emulator urxvt, which is not yet startup-notification aware.\r
+exec --no-startup-id urxvt</tt></pre>\r
+</div></div>\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.18. Automatically putting workspaces on specific screens</h3>\r
+<div class="paragraph"><p>If you assign clients to workspaces, it might be handy to put the\r
+workspaces on specific screens. Also, the assignment of workspaces to screens\r
+will determine which workspace i3 uses for a new screen when adding screens\r
+or when starting (e.g., by default it will use 1 for the first screen, 2 for\r
+the second screen and so on).</p></div>\r
+<div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>workspace &lt;workspace&gt; output &lt;output&gt;</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>The <em>output</em> is the name of the RandR output you attach your screen to. On a\r
+laptop, you might have VGA1 and LVDS1 as output names. You can see the\r
+available outputs by running <tt>xrandr --current</tt>.</p></div>\r
+<div class="paragraph"><p>If your X server supports RandR 1.5 or newer, i3 will use RandR monitor objects\r
+instead of output objects. Run <tt>xrandr --listmonitors</tt> to see a list. Usually,\r
+a monitor object contains exactly one output, and has the same name as the\r
+output; but should that not be the case, you may specify the name of either the\r
+monitor or the output in i3&#8217;s configuration. For example, the Dell UP2414Q uses\r
+two scalers internally, so its output names might be “DP1” and “DP2”, but the\r
+monitor name is “Dell UP2414Q”.</p></div>\r
+<div class="paragraph"><p>(Note that even if you specify the name of an output which doesn&#8217;t span the\r
+entire monitor, i3 will still use the entire area of the containing monitor\r
+rather than that of just the output&#8217;s.)</p></div>\r
+<div class="paragraph"><p>If you use named workspaces, they must be quoted:</p></div>\r
+<div class="paragraph"><p><strong>Examples</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>workspace 1 output LVDS1\r
+workspace 5 output VGA1\r
+workspace "2: vim" output VGA1</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_changing_colors">4.19. Changing colors</h3>\r
+<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
+<div class="content">\r
+<pre><tt>&lt;colorclass&gt; &lt;border&gt; &lt;background&gt; &lt;text&gt; &lt;indicator&gt; &lt;child_border&gt;</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>Where colorclass can be one of:</p></div>\r
+<div class="dlist"><dl>\r
+<dt class="hdlist1">\r
+client.focused\r
+</dt>\r
+<dd>\r
+<p>\r
+        A client which currently has the focus.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+client.focused_inactive\r
+</dt>\r
+<dd>\r
+<p>\r
+        A client which is the focused one of its container, but it does not have\r
+        the focus at the moment.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+client.unfocused\r
+</dt>\r
+<dd>\r
+<p>\r
+        A client which is not the focused one of its container.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+client.urgent\r
+</dt>\r
+<dd>\r
+<p>\r
+        A client which has its urgency hint activated.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+client.placeholder\r
+</dt>\r
+<dd>\r
+<p>\r
+        Background and text color are used to draw placeholder window contents\r
+        (when restoring layouts). Border and indicator are ignored.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+client.background\r
+</dt>\r
+<dd>\r
+<p>\r
+        Background color which will be used to paint the background of the\r
+        client window on top of which the client will be rendered. Only clients\r
+        which do not cover the whole area of this window expose the color. Note\r
+        that this colorclass only takes a single color.\r
+</p>\r
+</dd>\r
+</dl></div>\r
+<div class="paragraph"><p>Colors are in HTML hex format (#rrggbb), see the following example:</p></div>\r
+<div class="paragraph"><p><strong>Examples (default colors)</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt># class                 border  backgr. text    indicator child_border\r
+client.focused          #4c7899 #285577 #ffffff #2e9ef4   #285577\r
+client.focused_inactive #333333 #5f676a #ffffff #484e50   #5f676a\r
+client.unfocused        #333333 #222222 #888888 #292d2e   #222222\r
+client.urgent           #2f343a #900000 #ffffff #900000   #900000\r
+client.placeholder      #000000 #0c0c0c #ffffff #000000   #0c0c0c\r
+\r
+client.background       #ffffff</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>Note that for the window decorations, the color around the child window is the\r
+"child_border", and "border" color is only the two thin lines around the\r
+titlebar.</p></div>\r
+<div class="paragraph"><p>The indicator color is used for indicating where a new window will be opened.\r
+For horizontal split containers, the right border will be painted in indicator\r
+color, for vertical split containers, the bottom border. This only applies to\r
+single windows within a split container, which are otherwise indistinguishable\r
+from single windows outside of a split container.</p></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_interprocess_communication">4.20. Interprocess communication</h3>\r
+<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
+<div class="paragraph"><p>The IPC socket is enabled by default and will be created in\r
+<tt>/tmp/i3-%u.XXXXXX/ipc-socket.%p</tt> where <tt>%u</tt> is your UNIX username, <tt>%p</tt> is\r
+the PID of i3 and XXXXXX is a string of random characters from the portable\r
+filename character set (see mkdtemp(3)).</p></div>\r
+<div class="paragraph"><p>You can override the default path through the environment-variable <tt>I3SOCK</tt> or\r
+by specifying the <tt>ipc-socket</tt> directive. This is discouraged, though, since i3\r
+does the right thing by default. If you decide to change it, it is strongly\r
+recommended to set this to a location in your home directory so that no other\r
+user can create that directory.</p></div>\r
+<div class="paragraph"><p><strong>Examples</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>ipc-socket ~/.i3/i3-ipc.sock</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>You can then use the <tt>i3-msg</tt> application to perform any command listed in\r
+the next section.</p></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_focus_follows_mouse">4.21. Focus follows mouse</h3>\r
+<div class="paragraph"><p>By default, window focus follows your mouse movements as the mouse crosses\r
+window borders. However, if you have a setup where your mouse usually is in your\r
+way (like a touchpad on your laptop which you do not want to disable\r
+completely), you might want to disable <em>focus follows mouse</em> and control focus\r
+only by using your keyboard.  The mouse will still be useful inside the\r
+currently active window (for example to click on links in your browser window).</p></div>\r
+<div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>focus_follows_mouse yes|no</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>focus_follows_mouse no</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_mouse_warping">4.22. Mouse warping</h3>\r
+<div class="paragraph"><p>By default, when switching focus to a window on a different output (e.g.\r
+focusing a window on workspace 3 on output VGA-1, coming from workspace 2 on\r
+LVDS-1), the mouse cursor is warped to the center of that window.</p></div>\r
+<div class="paragraph"><p>With the <tt>mouse_warping</tt> option, you can control when the mouse cursor should\r
+be warped. <tt>none</tt> disables warping entirely, whereas <tt>output</tt> is the default\r
+behavior described above.</p></div>\r
+<div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>mouse_warping output|none</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>mouse_warping none</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_popups_during_fullscreen_mode">4.23. Popups during fullscreen mode</h3>\r
+<div class="paragraph"><p>When you are in fullscreen mode, some applications still open popup windows\r
+(take Xpdf for example). This is because these applications may not be aware\r
+that they are in fullscreen mode (they do not check the corresponding hint).\r
+There are three things which are possible to do in this situation:</p></div>\r
+<div class="olist arabic"><ol class="arabic">\r
+<li>\r
+<p>\r
+Display the popup if it belongs to the fullscreen application only. This is\r
+   the default and should be reasonable behavior for most users.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Just ignore the popup (don’t map it). This won’t interrupt you while you are\r
+   in fullscreen. However, some apps might react badly to this (deadlock until\r
+   you go out of fullscreen).\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Leave fullscreen mode.\r
+</p>\r
+</li>\r
+</ol></div>\r
+<div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>popup_during_fullscreen smart|ignore|leave_fullscreen</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>popup_during_fullscreen smart</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_focus_wrapping">4.24. Focus wrapping</h3>\r
+<div class="paragraph"><p>By default, when in a container with several windows or child containers, the\r
+opposite window will be focused when trying to move the focus over the edge of\r
+a container (and there are no other containers in that direction)&#8201;&#8212;&#8201;the focus\r
+wraps.</p></div>\r
+<div class="paragraph"><p>If desired, you can disable this behavior by setting the <tt>focus_wrapping</tt>\r
+configuration directive to the value <tt>no</tt>.</p></div>\r
+<div class="paragraph"><p>When enabled, focus wrapping does not occur by default if there is another\r
+window or container in the specified direction, and focus will instead be set\r
+on that window or container. This is the default behavior so you can navigate\r
+to all your windows without having to use <tt>focus parent</tt>.</p></div>\r
+<div class="paragraph"><p>If you want the focus to <strong>always</strong> wrap and you are aware of using <tt>focus\r
+parent</tt> to switch to different containers, you can instead set <tt>focus_wrapping</tt>\r
+to the value <tt>force</tt>.</p></div>\r
+<div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>focus_wrapping yes|no|force\r
+\r
+# Legacy syntax, equivalent to "focus_wrapping force"\r
+force_focus_wrapping yes</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p><strong>Examples</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt># Disable focus wrapping\r
+focus_wrapping no\r
+\r
+# Force focus wrapping\r
+focus_wrapping force</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_forcing_xinerama">4.25. Forcing Xinerama</h3>\r
+<div class="paragraph"><p>As explained in-depth in <a href="https://i3wm.org/docs/multi-monitor.html">https://i3wm.org/docs/multi-monitor.html</a>, some X11\r
+video drivers (especially the nVidia binary driver) only provide support for\r
+Xinerama instead of RandR. In such a situation, i3 must be told to use the\r
+inferior Xinerama API explicitly and therefore don’t provide support for\r
+reconfiguring your screens on the fly (they are read only once on startup and\r
+that’s it).</p></div>\r
+<div class="paragraph"><p>For people who cannot modify their <tt>~/.xsession</tt> to add the\r
+<tt>--force-xinerama</tt> commandline parameter, a configuration option is provided:</p></div>\r
+<div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>force_xinerama yes|no</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>force_xinerama yes</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>Also note that your output names are not descriptive (like <tt>HDMI1</tt>) when using\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.26. Automatic back-and-forth when switching to the current workspace</h3>\r
+<div class="paragraph"><p>This configuration directive enables automatic <tt>workspace back_and_forth</tt> (see\r
+<a href="#back_and_forth">[back_and_forth]</a>) when switching to the workspace that is currently focused.</p></div>\r
+<div class="paragraph"><p>For instance: Assume you are on workspace "1: www" and switch to "2: IM" using\r
+mod+2 because somebody sent you a message. You don’t need to remember where you\r
+came from now, you can just press $mod+2 again to switch back to "1: www".</p></div>\r
+<div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>workspace_auto_back_and_forth yes|no</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>workspace_auto_back_and_forth yes</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_delaying_urgency_hint_reset_on_workspace_change">4.27. Delaying urgency hint reset on workspace change</h3>\r
+<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
+may make it unnecessarily hard to tell which window originally raised the\r
+event.</p></div>\r
+<div class="paragraph"><p>In order to prevent this, you can tell i3 to delay resetting the urgency state\r
+by a certain time using the <tt>force_display_urgency_hint</tt> directive. Setting the\r
+value to 0 disables this feature.</p></div>\r
+<div class="paragraph"><p>The default is 500ms.</p></div>\r
+<div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>force_display_urgency_hint &lt;timeout&gt; ms</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>force_display_urgency_hint 500 ms</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="focus_on_window_activation">4.28. Focus on window activation</h3>\r
+<div class="paragraph"><p>If a window is activated, e.g., via <tt>google-chrome www.google.com</tt>, it may request\r
+to take focus. Since this may not preferable, different reactions can be configured.</p></div>\r
+<div class="paragraph"><p>Note that this may not affect windows that are being opened. To prevent new windows\r
+from being focused, see <a href="#no_focus">[no_focus]</a>.</p></div>\r
+<div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>focus_on_window_activation smart|urgent|focus|none</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>The different modes will act as follows:</p></div>\r
+<div class="dlist"><dl>\r
+<dt class="hdlist1">\r
+smart\r
+</dt>\r
+<dd>\r
+<p>\r
+    This is the default behavior. If the window requesting focus is on an active\r
+    workspace, it will receive the focus. Otherwise, the urgency hint will be set.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+urgent\r
+</dt>\r
+<dd>\r
+<p>\r
+    The window will always be marked urgent, but the focus will not be stolen.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+focus\r
+</dt>\r
+<dd>\r
+<p>\r
+    The window will always be focused and not be marked urgent.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+none\r
+</dt>\r
+<dd>\r
+<p>\r
+    The window will neither be focused, nor be marked urgent.\r
+</p>\r
+</dd>\r
+</dl></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="show_marks">4.29. Drawing marks on window decoration</h3>\r
+<div class="paragraph"><p>If activated, marks (see <a href="#vim_like_marks">[vim_like_marks]</a>) on windows are drawn in their window\r
+decoration. However, any mark starting with an underscore in its name (<tt>_</tt>) will\r
+not be drawn even if this option is activated.</p></div>\r
+<div class="paragraph"><p>The default for this option is <tt>yes</tt>.</p></div>\r
+<div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>show_marks yes|no</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>show_marks yes</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="line_continuation">4.30. Line continuation</h3>\r
+<div class="paragraph"><p>Config files support line continuation, meaning when you end a line in a\r
+backslash character (<tt>\</tt>), the line-break will be ignored by the parser. This\r
+feature can be used to create more readable configuration files.\r
+Commented lines are not continued.</p></div>\r
+<div class="paragraph"><p><strong>Examples</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>bindsym Mod1+f \\r
+fullscreen toggle\r
+\r
+# this line is not continued \\r
+bindsym Mod1+F fullscreen toggle</tt></pre>\r
+</div></div>\r
+</div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_configuring_i3bar">5. Configuring i3bar</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>The bar at the bottom of your monitor is drawn by a separate process called\r
+i3bar. Having this part of "the i3 user interface" in a separate process has\r
+several advantages:</p></div>\r
+<div class="olist arabic"><ol class="arabic">\r
+<li>\r
+<p>\r
+It is a modular approach. If you don’t need a workspace bar at all, or if\r
+   you prefer a different one (dzen2, xmobar, maybe even gnome-panel?), you can\r
+   just remove the i3bar configuration and start your favorite bar instead.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+It follows the UNIX philosophy of "Make each program do one thing well".\r
+   While i3 manages your windows well, i3bar is good at displaying a bar on\r
+   each monitor (unless you configure it otherwise).\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+It leads to two separate, clean codebases. If you want to understand i3, you\r
+   don’t need to bother with the details of i3bar and vice versa.\r
+</p>\r
+</li>\r
+</ol></div>\r
+<div class="paragraph"><p>That said, i3bar is configured in the same configuration file as i3. This is\r
+because it is tightly coupled with i3 (in contrary to i3lock or i3status which\r
+are useful for people using other window managers). Therefore, it makes no\r
+sense to use a different configuration place when we already have a good\r
+configuration infrastructure in place.</p></div>\r
+<div class="paragraph"><p>Configuring your workspace bar starts with opening a <tt>bar</tt> block. You can have\r
+multiple bar blocks to use different settings for different outputs (monitors):</p></div>\r
+<div class="paragraph"><p><strong>Example</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>bar {\r
+    status_command i3status\r
+}</tt></pre>\r
+</div></div>\r
+<div class="sect2">\r
+<h3 id="_i3bar_command">5.1. i3bar command</h3>\r
+<div class="paragraph"><p>By default i3 will just pass <tt>i3bar</tt> and let your shell handle the execution,\r
+searching your <tt>$PATH</tt> for a correct version.\r
+If you have a different <tt>i3bar</tt> somewhere or the binary is not in your <tt>$PATH</tt> you can\r
+tell i3 what to execute.</p></div>\r
+<div class="paragraph"><p>The specified command will be passed to <tt>sh -c</tt>, so you can use globbing and\r
+have to have correct quoting etc.</p></div>\r
+<div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>i3bar_command &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
+    i3bar_command /home/user/bin/i3bar\r
+}</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="status_command">5.2. Statusline command</h3>\r
+<div class="paragraph"><p>i3bar can run a program and display every line of its <tt>stdout</tt> output on the\r
+right hand side of the bar. This is useful to display system information like\r
+your current IP address, battery status or date/time.</p></div>\r
+<div class="paragraph"><p>The specified command will be passed to <tt>sh -c</tt>, so you can use globbing and\r
+have to have correct quoting etc. Note that for signal handling, depending on\r
+your shell (users of dash(1) are known to be affected), you have to use the\r
+shell’s exec command so that signals are passed to your program, not to the\r
+shell.</p></div>\r
+<div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>status_command &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
+    status_command i3status --config ~/.i3status.conf\r
+\r
+    # For dash(1) users who want signal handling to work:\r
+    status_command exec ~/.bin/my_status_command\r
+}</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_display_mode">5.3. Display mode</h3>\r
+<div class="paragraph"><p>You can either have i3bar be visible permanently at one edge of the screen\r
+(<tt>dock</tt> mode) or make it show up when you press your modifier key (<tt>hide</tt> mode).\r
+It is also possible to force i3bar to always stay hidden (<tt>invisible</tt>\r
+mode). The modifier key can be configured using the <tt>modifier</tt> option.</p></div>\r
+<div class="paragraph"><p>The mode option can be changed during runtime through the <tt>bar mode</tt> command.\r
+On reload the mode will be reverted to its configured value.</p></div>\r
+<div class="paragraph"><p>The hide mode maximizes screen space that can be used for actual windows. Also,\r
+i3bar sends the <tt>SIGSTOP</tt> and <tt>SIGCONT</tt> signals to the statusline process to\r
+save battery power.</p></div>\r
+<div class="paragraph"><p>Invisible mode allows to permanently maximize screen space, as the bar is never\r
+shown. Thus, you can configure i3bar to not disturb you by popping up because\r
+of an urgency hint or because the modifier key is pressed.</p></div>\r
+<div class="paragraph"><p>In order to control whether i3bar is hidden or shown in hide mode, there exists\r
+the hidden_state option, which has no effect in dock mode or invisible mode. It\r
+indicates the current hidden_state of the bar: (1) The bar acts like in normal\r
+hide mode, it is hidden and is only unhidden in case of urgency hints or by\r
+pressing the modifier key (<tt>hide</tt> state), or (2) it is drawn on top of the\r
+currently visible workspace (<tt>show</tt> state).</p></div>\r
+<div class="paragraph"><p>Like the mode, the hidden_state can also be controlled through i3, this can be\r
+done by using the <tt>bar hidden_state</tt> command.</p></div>\r
+<div class="paragraph"><p>The default mode is dock mode; in hide mode, the default modifier is Mod4 (usually\r
+the windows key). The default value for the hidden_state is hide.</p></div>\r
+<div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>mode dock|hide|invisible\r
+hidden_state hide|show\r
+modifier &lt;Modifier&gt;|none</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
+    mode hide\r
+    hidden_state hide\r
+    modifier Mod1\r
+}</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>Available modifiers are Mod1-Mod5, Shift, Control (see <tt>xmodmap(1)</tt>). You can\r
+also use "none" if you don&#8217;t want any modifier to trigger this behavior.</p></div>\r
+</div>\r
+<div class="sect2">\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. This is useful, e.g., for disabling the scroll wheel action\r
+or running scripts that implement custom behavior for these buttons.</p></div>\r
+<div class="paragraph"><p>A button is always named <tt>button&lt;n&gt;</tt>, where 1 to 5 are default buttons as follows and higher\r
+numbers can be special buttons on devices offering more buttons:</p></div>\r
+<div class="dlist"><dl>\r
+<dt class="hdlist1">\r
+button1\r
+</dt>\r
+<dd>\r
+<p>\r
+    Left mouse button.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+button2\r
+</dt>\r
+<dd>\r
+<p>\r
+    Middle mouse button.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+button3\r
+</dt>\r
+<dd>\r
+<p>\r
+    Right mouse button.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+button4\r
+</dt>\r
+<dd>\r
+<p>\r
+    Scroll wheel up.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+button5\r
+</dt>\r
+<dd>\r
+<p>\r
+    Scroll wheel down.\r
+</p>\r
+</dd>\r
+</dl></div>\r
+<div class="paragraph"><p>Please note that the old <tt>wheel_up_cmd</tt> and <tt>wheel_down_cmd</tt> commands are deprecated\r
+and will be removed in a future release. We strongly recommend using the more general\r
+<tt>bindsym</tt> with <tt>button4</tt> and <tt>button5</tt> instead.</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] button&lt;n&gt; &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
+    # disable clicking on workspace buttons\r
+    bindsym button1 nop\r
+    # Take a screenshot by right clicking on the bar\r
+    bindsym --release button3 exec --no-startup-id import /tmp/latest-screenshot.png\r
+    # execute custom script when scrolling downwards\r
+    bindsym button5 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
+<div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>id &lt;bar_id&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
+    id bar-1\r
+}</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\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 class="listingblock">\r
+<div class="content">\r
+<pre><tt>position top|bottom</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
+    position top\r
+}</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\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 class="paragraph"><p>To make a particular i3bar instance handle multiple outputs, specify the output\r
+directive multiple times.</p></div>\r
+<div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>output primary|&lt;output&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># big monitor: everything\r
+bar {\r
+    # The display is connected either via HDMI or via DisplayPort\r
+    output HDMI2\r
+    output DP2\r
+    status_command i3status\r
+}\r
+\r
+# laptop monitor: bright colors and i3status with less modules.\r
+bar {\r
+    output LVDS1\r
+    status_command i3status --config ~/.i3status-small.conf\r
+    colors {\r
+        background #000000\r
+        statusline #ffffff\r
+    }\r
+}\r
+\r
+# show bar on the primary monitor and on HDMI2\r
+bar {\r
+    output primary\r
+    output HDMI2\r
+    status_command i3status\r
+}</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>Note that you might not have a primary output configured yet. To do so, run:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>xrandr --output &lt;output&gt; --primary</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\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
+you can turn off the functionality entirely.</p></div>\r
+<div class="paragraph"><p>You can use multiple <tt>tray_output</tt> directives in your config to specify a list\r
+of outputs on which you want the tray to appear. The first available output in\r
+that list as defined by the order of the directives will be used for the tray\r
+output.</p></div>\r
+<div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>tray_output none|primary|&lt;output&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># disable system tray\r
+bar {\r
+    tray_output none\r
+}\r
+\r
+# show tray icons on the primary monitor\r
+bar {\r
+    tray_output primary\r
+}\r
+\r
+# show tray icons on the big monitor\r
+bar {\r
+    tray_output HDMI2\r
+}</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>Note that you might not have a primary output configured yet. To do so, run:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>xrandr --output &lt;output&gt; --primary</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>Note that when you use multiple bar configuration blocks, either specify\r
+<tt>tray_output primary</tt> in all of them or explicitly specify <tt>tray_output none</tt>\r
+in bars which should not display the tray, otherwise the different instances\r
+might race each other in trying to display tray icons.</p></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_tray_padding">5.9. Tray padding</h3>\r
+<div class="paragraph"><p>The tray is shown on the right-hand side of the bar. By default, a padding of 2\r
+pixels is used for the upper, lower and right-hand side of the tray area and\r
+between the individual icons.</p></div>\r
+<div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>tray_padding &lt;px&gt; [px]</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># Obey Fitts's law\r
+tray_padding 0</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_font">5.10. 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 class="content">\r
+<pre><tt>font &lt;font&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
+    font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1\r
+    font pango:DejaVu Sans Mono 10\r
+}</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_custom_separator_symbol">5.11. Custom separator symbol</h3>\r
+<div class="paragraph"><p>Specifies a custom symbol to be used for the separator as opposed to the vertical,\r
+one pixel thick separator.</p></div>\r
+<div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>separator_symbol &lt;symbol&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
+    separator_symbol ":|:"\r
+}</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_workspace_buttons">5.12. 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 class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>workspace_buttons yes|no</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
+    workspace_buttons no\r
+}</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_strip_workspace_numbers">5.13. 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 class="paragraph"><p>When <tt>strip_workspace_numbers</tt> is set to <tt>yes</tt>, any workspace that has a name of\r
+the form "[n]:[NAME]" will display only the name. You could use this, for\r
+instance, to display Roman numerals rather than digits by naming your\r
+workspaces to "1:I", "2:II", "3:III", "4:IV", &#8230;</p></div>\r
+<div class="paragraph"><p>The default is to display the full name within the workspace button.</p></div>\r
+<div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>strip_workspace_numbers yes|no</tt></pre>\r
+</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
+    strip_workspace_numbers yes\r
+}</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_binding_mode_indicator">5.14. 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. See <a href="#binding_modes">[binding_modes]</a> to learn what\r
+modes are and how to use them.</p></div>\r
+<div class="paragraph"><p>The default is to show the mode indicator.</p></div>\r
+<div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>binding_mode_indicator yes|no</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
+    binding_mode_indicator no\r
+}</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_colors">5.15. 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
+<dt class="hdlist1">\r
+background\r
+</dt>\r
+<dd>\r
+<p>\r
+        Background color of the bar.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+statusline\r
+</dt>\r
+<dd>\r
+<p>\r
+        Text color to be used for the statusline.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+separator\r
+</dt>\r
+<dd>\r
+<p>\r
+        Text color to be used for the separator.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+focused_background\r
+</dt>\r
+<dd>\r
+<p>\r
+        Background color of the bar on the currently focused monitor output. If\r
+        not used, the color will be taken from <tt>background</tt>.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+focused_statusline\r
+</dt>\r
+<dd>\r
+<p>\r
+        Text color to be used for the statusline on the currently focused\r
+        monitor output. If not used, the color will be taken from <tt>statusline</tt>.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+focused_separator\r
+</dt>\r
+<dd>\r
+<p>\r
+        Text color to be used for the separator on the currently focused\r
+        monitor output. If not used, the color will be taken from <tt>separator</tt>.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+focused_workspace\r
+</dt>\r
+<dd>\r
+<p>\r
+        Border, background and text color for a workspace button when the workspace\r
+        has focus.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+active_workspace\r
+</dt>\r
+<dd>\r
+<p>\r
+        Border, background and text color for a workspace button when the workspace\r
+        is active (visible) on some output, but the focus is on another one.\r
+        You can only tell this apart from the focused workspace when you are\r
+        using multiple monitors.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+inactive_workspace\r
+</dt>\r
+<dd>\r
+<p>\r
+        Border, background and text color for a workspace button when the workspace\r
+        does not have focus and is not active (visible) on any output. This\r
+        will be the case for most workspaces.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+urgent_workspace\r
+</dt>\r
+<dd>\r
+<p>\r
+        Border, background and text color for a workspace button when the workspace\r
+        contains a window with the urgency hint set.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+binding_mode\r
+</dt>\r
+<dd>\r
+<p>\r
+        Border, background and text color for the binding mode indicator. If not used,\r
+        the colors will be taken from <tt>urgent_workspace</tt>.\r
+</p>\r
+</dd>\r
+</dl></div>\r
+<div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>colors {\r
+    background &lt;color&gt;\r
+    statusline &lt;color&gt;\r
+    separator &lt;color&gt;\r
+\r
+    &lt;colorclass&gt; &lt;border&gt; &lt;background&gt; &lt;text&gt;\r
+}</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p><strong>Example (default colors)</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>bar {\r
+    colors {\r
+        background #000000\r
+        statusline #ffffff\r
+        separator #666666\r
+\r
+        focused_workspace  #4c7899 #285577 #ffffff\r
+        active_workspace   #333333 #5f676a #ffffff\r
+        inactive_workspace #333333 #222222 #888888\r
+        urgent_workspace   #2f343a #900000 #ffffff\r
+        binding_mode       #2f343a #900000 #ffffff\r
+    }\r
+}</tt></pre>\r
+</div></div>\r
+</div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_list_of_commands">6. List of commands</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>Commands are what you bind to specific keypresses. You can also issue commands\r
+at runtime without pressing a key by using the IPC interface. An easy way to\r
+do this is to use the <tt>i3-msg</tt> utility:</p></div>\r
+<div class="paragraph"><p><strong>Example</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt># execute this on your shell to make the current container borderless\r
+i3-msg border none</tt></pre>\r
+</div></div>\r
+<div class="paragraph" id="command_chaining"><p>Commands can be chained by using <tt>;</tt> (a semicolon). So, to move a window to a\r
+specific workspace and immediately switch to that workspace, you can configure\r
+the following keybinding:</p></div>\r
+<div class="paragraph"><p><strong>Example</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>bindsym $mod+x move container to workspace 3; workspace 3</tt></pre>\r
+</div></div>\r
+<div class="paragraph" id="command_criteria"><p>Furthermore, you can change the scope of a command - that is, which containers\r
+should be affected by that command, by using various criteria. The criteria\r
+are specified before any command in a pair of square brackets and are separated\r
+by space.</p></div>\r
+<div class="paragraph"><p>When using multiple commands, separate them by using a <tt>,</tt> (a comma) instead of\r
+a semicolon. Criteria apply only until the next semicolon, so if you use a\r
+semicolon to separate commands, only the first one will be executed for the\r
+matched window(s).</p></div>\r
+<div class="paragraph"><p><strong>Example</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt># if you want to kill all windows which have the class Firefox, use:\r
+bindsym $mod+x [class="Firefox"] kill\r
+\r
+# same thing, but case-insensitive\r
+bindsym $mod+x [class="(?i)firefox"] kill\r
+\r
+# kill only the About dialog from Firefox\r
+bindsym $mod+x [class="Firefox" window_role="About"] kill\r
+\r
+# enable floating mode and move container to workspace 4\r
+for_window [class="^evil-app$"] floating enable, move container to workspace 4\r
+\r
+# move all floating windows to the scratchpad\r
+bindsym $mod+x [floating] move scratchpad</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>The criteria which are currently implemented are:</p></div>\r
+<div class="dlist"><dl>\r
+<dt class="hdlist1">\r
+class\r
+</dt>\r
+<dd>\r
+<p>\r
+        Compares the window class (the second part of WM_CLASS). Use the\r
+        special value <tt>__focused__</tt> to match all windows having the same window\r
+        class as the currently focused window.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+instance\r
+</dt>\r
+<dd>\r
+<p>\r
+        Compares the window instance (the first part of WM_CLASS). Use the\r
+        special value <tt>__focused__</tt> to match all windows having the same window\r
+        instance as the currently focused window.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+window_role\r
+</dt>\r
+<dd>\r
+<p>\r
+        Compares the window role (WM_WINDOW_ROLE). Use the special value\r
+        <tt>__focused__</tt> to match all windows having the same window role as the\r
+        currently focused window.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+window_type\r
+</dt>\r
+<dd>\r
+<p>\r
+        Compare the window type (_NET_WM_WINDOW_TYPE). Possible values are\r
+        <tt>normal</tt>, <tt>dialog</tt>, <tt>utility</tt>, <tt>toolbar</tt>, <tt>splash</tt>, <tt>menu</tt>, <tt>dropdown_menu</tt>,\r
+        <tt>popup_menu</tt>, <tt>tooltip</tt> and <tt>notification</tt>.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+id\r
+</dt>\r
+<dd>\r
+<p>\r
+        Compares the X11 window ID, which you can get via <tt>xwininfo</tt> for example.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+title\r
+</dt>\r
+<dd>\r
+<p>\r
+        Compares the X11 window title (_NET_WM_NAME or WM_NAME as fallback).\r
+        Use the special value <tt>__focused__</tt> to match all windows having the\r
+        same window title as the currently focused window.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+urgent\r
+</dt>\r
+<dd>\r
+<p>\r
+        Compares the urgent state of the window. Can be "latest" or "oldest".\r
+        Matches the latest or oldest urgent window, respectively.\r
+        (The following aliases are also available: newest, last, recent, first)\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+workspace\r
+</dt>\r
+<dd>\r
+<p>\r
+        Compares the workspace name of the workspace the window belongs to. Use\r
+        the special value <tt>__focused__</tt> to match all windows in the currently\r
+        focused workspace.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+con_mark\r
+</dt>\r
+<dd>\r
+<p>\r
+        Compares the marks set for this container, see <a href="#vim_like_marks">[vim_like_marks]</a>. A\r
+        match is made if any of the container&#8217;s marks matches the specified\r
+        mark.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+con_id\r
+</dt>\r
+<dd>\r
+<p>\r
+        Compares the i3-internal container ID, which you can get via the IPC\r
+        interface. Handy for scripting. Use the special value <tt>__focused__</tt>\r
+        to match only the currently focused window.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+floating\r
+</dt>\r
+<dd>\r
+<p>\r
+        Only matches floating windows. This criterion requires no value.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+tiling\r
+</dt>\r
+<dd>\r
+<p>\r
+        Only matches tiling windows. This criterion requires no value.\r
+</p>\r
+</dd>\r
+</dl></div>\r
+<div class="paragraph"><p>The criteria <tt>class</tt>, <tt>instance</tt>, <tt>role</tt>, <tt>title</tt>, <tt>workspace</tt> and <tt>mark</tt> are\r
+actually regular expressions (PCRE). See <tt>pcresyntax(3)</tt> or <tt>perldoc perlre</tt> for\r
+information on how to use them.</p></div>\r
+<div class="sect2">\r
+<h3 id="exec">6.1. Executing applications (exec)</h3>\r
+<div class="paragraph"><p>What good is a window manager if you can’t actually start any applications?\r
+The exec command starts an application by passing the command you specify to a\r
+shell. This implies that you can use globbing (wildcards) and programs will be\r
+searched in your <tt>$PATH</tt>.</p></div>\r
+<div class="paragraph"><p>See <a href="#command_chaining">[command_chaining]</a> for details on the special meaning of <tt>;</tt> (semicolon)\r
+and <tt>,</tt> (comma): they chain commands together in i3, so you need to use quoted\r
+strings (as shown in <a href="#exec_quoting">[exec_quoting]</a>) if they appear in your command.</p></div>\r
+<div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>exec [--no-startup-id] &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># Start the GIMP\r
+bindsym $mod+g exec gimp\r
+\r
+# Start the terminal emulator urxvt which is not yet startup-notification-aware\r
+bindsym $mod+Return exec --no-startup-id urxvt</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>The <tt>--no-startup-id</tt> parameter disables startup-notification support for this\r
+particular exec command. With startup-notification, i3 can make sure that a\r
+window appears on the workspace on which you used the exec command. Also, it\r
+will change the X11 cursor to <tt>watch</tt> (a clock) while the application is\r
+launching. So, if an application is not startup-notification aware (most GTK\r
+and Qt using applications seem to be, though), you will end up with a watch\r
+cursor for 60 seconds.</p></div>\r
+<div class="paragraph" id="exec_quoting"><p>If the command to be executed contains a <tt>;</tt> (semicolon) and/or a <tt>,</tt> (comma),\r
+the entire command must be quoted. For example, to have a keybinding for the\r
+shell command <tt>notify-send Hello, i3</tt>, you would add an entry to your\r
+configuration file like this:</p></div>\r
+<div class="paragraph"><p><strong>Example</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt># Execute a command with a comma in it\r
+bindsym $mod+p exec "notify-send Hello, i3"</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>If however a command with a comma and/or semicolon itself requires quotes, you\r
+must escape the internal quotation marks with double backslashes, like this:</p></div>\r
+<div class="paragraph"><p><strong>Example</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt># Execute a command with a comma, semicolon and internal quotes\r
+bindsym $mod+p exec "notify-send \\"Hello, i3; from $USER\\""</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_splitting_containers">6.2. Splitting containers</h3>\r
+<div class="paragraph"><p>The split command makes the current window a split container. Split containers\r
+can contain multiple windows. Depending on the layout of the split container,\r
+new windows get placed to the right of the current one (splith) or new windows\r
+get placed below the current one (splitv).</p></div>\r
+<div class="paragraph"><p>If you apply this command to a split container with the same orientation,\r
+nothing will happen. If you use a different orientation, the split container’s\r
+orientation will be changed (if it does not have more than one window).\r
+The <tt>toggle</tt> option will toggle the orientation of the split container if it\r
+contains a single window. Otherwise it makes the current window a split\r
+container with opposite orientation compared to the parent container.\r
+Use <tt>layout toggle split</tt> to change the layout of any split container from\r
+splitv to splith or vice-versa. You can also define a custom sequence of layouts\r
+to cycle through with <tt>layout toggle</tt>, see <a href="#manipulating_layout">[manipulating_layout]</a>.</p></div>\r
+<div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>split vertical|horizontal|toggle</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>bindsym $mod+v split vertical\r
+bindsym $mod+h split horizontal\r
+bindsym $mod+t split toggle</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_manipulating_layout">6.3. Manipulating layout</h3>\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>Specify up to four layouts after <tt>layout toggle</tt> to cycle through them. Every\r
+time the command is executed, the layout specified after the currently active\r
+one will be applied. If the currently active layout is not in the list, the\r
+first layout in the list will be activated.</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
+<pre><tt>layout default|tabbed|stacking|splitv|splith\r
+layout toggle [split|all]\r
+layout toggle [split|tabbed|stacking|splitv|splith] [split|tabbed|stacking|splitv|splith]…</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p><strong>Examples</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>bindsym $mod+s layout stacking\r
+bindsym $mod+l layout toggle split\r
+bindsym $mod+w layout tabbed\r
+\r
+# Toggle between stacking/tabbed/split:\r
+bindsym $mod+x layout toggle\r
+\r
+# Toggle between stacking/tabbed/splith/splitv:\r
+bindsym $mod+x layout toggle all\r
+\r
+# Toggle between stacking/tabbed/splith:\r
+bindsym $mod+x layout toggle stacking tabbed splith\r
+\r
+# Toggle between splitv/tabbed\r
+bindsym $mod+x layout toggle splitv tabbed\r
+\r
+# Toggle between last split layout/tabbed/stacking\r
+bindsym $mod+x layout toggle split tabbed stacking\r
+\r
+# Toggle fullscreen\r
+bindsym $mod+f fullscreen toggle\r
+\r
+# Toggle floating/tiling\r
+bindsym $mod+t floating toggle</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_focusing_moving_containers">6.4. Focusing containers</h3>\r
+<div class="paragraph"><p>To change focus, you can use the <tt>focus</tt> command. The following options are\r
+available:</p></div>\r
+<div class="dlist"><dl>\r
+<dt class="hdlist1">\r
+&lt;criteria&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+    Sets focus to the container that matches the specified criteria.\r
+    See <a href="#command_criteria">[command_criteria]</a>.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+left|right|up|down\r
+</dt>\r
+<dd>\r
+<p>\r
+        Sets focus to the nearest container in the given direction.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+parent\r
+</dt>\r
+<dd>\r
+<p>\r
+        Sets focus to the parent container of the current container.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+child\r
+</dt>\r
+<dd>\r
+<p>\r
+        The opposite of <tt>focus parent</tt>, sets the focus to the last focused\r
+        child container.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+floating\r
+</dt>\r
+<dd>\r
+<p>\r
+        Sets focus to the last focused floating container.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+tiling\r
+</dt>\r
+<dd>\r
+<p>\r
+        Sets focus to the last focused tiling container.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+mode_toggle\r
+</dt>\r
+<dd>\r
+<p>\r
+        Toggles between floating/tiling containers.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+output\r
+</dt>\r
+<dd>\r
+<p>\r
+        Followed by a direction or an output name, this will focus the\r
+        corresponding output.\r
+</p>\r
+</dd>\r
+</dl></div>\r
+<div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>&lt;criteria&gt; focus\r
+focus left|right|down|up\r
+focus parent|child|floating|tiling|mode_toggle\r
+focus output left|right|up|down|primary|&lt;output&gt;</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p><strong>Examples</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt># Focus firefox\r
+bindsym $mod+F1 [class="Firefox"] focus\r
+\r
+# Focus container on the left, bottom, top, right\r
+bindsym $mod+j focus left\r
+bindsym $mod+k focus down\r
+bindsym $mod+l focus up\r
+bindsym $mod+semicolon focus right\r
+\r
+# Focus parent container\r
+bindsym $mod+u focus parent\r
+\r
+# Focus last floating/tiling container\r
+bindsym $mod+g focus mode_toggle\r
+\r
+# Focus the output right to the current one\r
+bindsym $mod+x focus output right\r
+\r
+# Focus the big output\r
+bindsym $mod+x focus output HDMI-2\r
+\r
+# Focus the primary output\r
+bindsym $mod+x focus output primary</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>Note that you might not have a primary output configured yet. To do so, run:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>xrandr --output &lt;output&gt; --primary</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_moving_containers">6.5. Moving containers</h3>\r
+<div class="paragraph"><p>Use the <tt>move</tt> command to move a container.</p></div>\r
+<div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt># Moves the container into the given direction.\r
+# The optional pixel argument specifies how far the\r
+# container should be moved if it is floating and\r
+# defaults to 10 pixels.\r
+move &lt;left|right|down|up&gt; [&lt;px&gt; px]\r
+\r
+# Moves the container either to a specific location\r
+# or to the center of the screen. If 'absolute' is\r
+# used, it is moved to the center of all outputs.\r
+move [absolute] position &lt;pos_x&gt; [px] &lt;pos_y&gt; [px]\r
+move [absolute] position center\r
+\r
+# Moves the container to the current position of the\r
+# mouse cursor. Only affects floating containers.\r
+move position mouse</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p><strong>Examples</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt># Move container to the left, bottom, top, right\r
+bindsym $mod+j move left\r
+bindsym $mod+k move down\r
+bindsym $mod+l move up\r
+bindsym $mod+semicolon move right\r
+\r
+# Move container, but make floating containers\r
+# move more than the default\r
+bindsym $mod+j move left 20 px\r
+\r
+# Move floating container to the center of all outputs\r
+bindsym $mod+c move absolute position center\r
+\r
+# Move container to the current position of the cursor\r
+bindsym $mod+m move position mouse</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_swapping_containers">6.6. Swapping containers</h3>\r
+<div class="paragraph"><p>Two containers can be swapped (i.e., move to each other&#8217;s position) by using\r
+the <tt>swap</tt> command. They will assume the position and geometry of the container\r
+they are swapped with.</p></div>\r
+<div class="paragraph"><p>The first container to participate in the swapping can be selected through the\r
+normal command criteria process with the focused window being the usual\r
+fallback if no criteria are specified. The second container can be selected\r
+using one of the following methods:</p></div>\r
+<div class="dlist"><dl>\r
+<dt class="hdlist1">\r
+<tt>id</tt>\r
+</dt>\r
+<dd>\r
+<p>\r
+The X11 window ID of a client window.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+<tt>con_id</tt>\r
+</dt>\r
+<dd>\r
+<p>\r
+The i3 container ID of a container.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+<tt>mark</tt>\r
+</dt>\r
+<dd>\r
+<p>\r
+A container with the specified mark, see <a href="#vim_like_marks">[vim_like_marks]</a>.\r
+</p>\r
+</dd>\r
+</dl></div>\r
+<div class="paragraph"><p>Note that swapping does not work with all containers. Most notably, swapping\r
+floating containers or containers that have a parent-child relationship to one\r
+another does not work.</p></div>\r
+<div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>swap container with id|con_id|mark &lt;arg&gt;</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p><strong>Examples</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt># Swaps the focused container with the container marked »swapee«.\r
+swap container with mark swapee\r
+\r
+# Swaps container marked »A« and »B«\r
+[con_mark="^A$"] swap container with mark B</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_sticky_floating_windows">6.7. Sticky floating windows</h3>\r
+<div class="paragraph"><p>If you want a window to stick to the glass, i.e., have it stay on screen even\r
+if you switch to another workspace, you can use the <tt>sticky</tt> command. For\r
+example, this can be useful for notepads, a media player or a video chat\r
+window.</p></div>\r
+<div class="paragraph"><p>Note that while any window can be made sticky through this command, it will\r
+only take effect if the window is floating.</p></div>\r
+<div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>sticky enable|disable|toggle</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p><strong>Examples</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt># make a terminal sticky that was started as a notepad\r
+for_window [instance=notepad] sticky enable</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_changing_named_workspaces_moving_to_workspaces">6.8. Changing (named) workspaces/moving to workspaces</h3>\r
+<div class="paragraph"><p>To change to a specific workspace, use the <tt>workspace</tt> command, followed by the\r
+number or name of the workspace. Pass the optional flag\r
+<tt>--no-auto-back-and-forth</tt> to disable <a href="#back_and_forth">[back_and_forth]</a> for this specific call\r
+only.</p></div>\r
+<div class="paragraph"><p>To move containers to specific workspaces, use <tt>move container to workspace</tt>.</p></div>\r
+<div class="paragraph"><p>You can also switch to the next and previous workspace with the commands\r
+<tt>workspace next</tt> and <tt>workspace prev</tt>, which is handy, for example, if you have\r
+workspace 1, 3, 4 and 9 and you want to cycle through them with a single key\r
+combination. To restrict those to the current output, use <tt>workspace\r
+next_on_output</tt> and <tt>workspace prev_on_output</tt>. Similarly, you can use <tt>move\r
+container to workspace next</tt>, <tt>move container to workspace prev</tt> to move a\r
+container to the next/previous workspace and <tt>move container to workspace current</tt>\r
+(the last one makes sense only when used with criteria).</p></div>\r
+<div class="paragraph"><p><tt>workspace next</tt> cycles through either numbered or named workspaces. But when it\r
+reaches the last numbered/named workspace, it looks for named workspaces after\r
+exhausting numbered ones and looks for numbered ones after exhausting named ones.</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="paragraph"><p><strong>Syntax</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>workspace next|prev|next_on_output|prev_on_output\r
+workspace back_and_forth\r
+workspace [--no-auto-back-and-forth] &lt;name&gt;\r
+workspace [--no-auto-back-and-forth] number &lt;name&gt;\r
+\r
+move [--no-auto-back-and-forth] [window|container] [to] workspace &lt;name&gt;\r
+move [--no-auto-back-and-forth] [window|container] [to] workspace number &lt;name&gt;\r
+move [window|container] [to] workspace prev|next|current</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p><strong>Examples</strong>:</p></div>\r
+<div class="listingblock">\r
+<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
+bindsym $mod+Shift+2 move container to workspace 2\r
+...\r
+\r
+# switch between the current and the previously focused one\r
+bindsym $mod+b workspace back_and_forth\r
+bindsym $mod+Shift+b move container to workspace back_and_forth\r
+\r
+# move the whole workspace to the next output\r
+bindsym $mod+x move workspace to output right\r
+\r
+# move firefox to current workspace\r
+bindsym $mod+F1 [class="Firefox"] move workspace current</tt></pre>\r
+</div></div>\r
+<div class="sect3">\r
+<h4 id="_named_workspaces">6.8.1. Named workspaces</h4>\r
+<div class="paragraph"><p>Workspaces are identified by their name. So, instead of using numbers in the\r
+workspace command, you can use an arbitrary name:</p></div>\r
+<div class="paragraph"><p><strong>Example</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>bindsym $mod+1 workspace mail\r
+...</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>If you want the workspace to have a number <strong>and</strong> a name, just prefix the\r
+number, like this:</p></div>\r
+<div class="paragraph"><p><strong>Example</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>bindsym $mod+1 workspace 1: mail\r
+bindsym $mod+2 workspace 2: www\r
+...</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>Note that the workspace will really be named "1: mail". i3 treats workspace\r
+names beginning with a number in a slightly special way. Normally, named\r
+workspaces are ordered the way they appeared. When they start with a number, i3\r
+will order them numerically. Also, you will be able to use <tt>workspace number 1</tt>\r
+to switch to the workspace which begins with number 1, regardless of which name\r
+it has. This is useful in case you are changing the workspace’s name\r
+dynamically. To combine both commands you can use <tt>workspace number 1: mail</tt> to\r
+specify a default name if there&#8217;s currently no workspace starting with a "1".</p></div>\r
+</div>\r
+<div class="sect3">\r
+<h4 id="_renaming_workspaces">6.8.2. Renaming workspaces</h4>\r
+<div class="paragraph"><p>You can rename workspaces. This might be useful to start with the default\r
+numbered workspaces, do your work, and rename the workspaces afterwards to\r
+reflect what’s actually on them. You can also omit the old name to rename\r
+the currently focused workspace. This is handy if you want to use the\r
+rename command with <tt>i3-input</tt>.</p></div>\r
+<div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>rename workspace &lt;old_name&gt; to &lt;new_name&gt;\r
+rename workspace to &lt;new_name&gt;</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p><strong>Examples</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>i3-msg 'rename workspace 5 to 6'\r
+i3-msg 'rename workspace 1 to "1: www"'\r
+i3-msg 'rename workspace "1: www" to "10: www"'\r
+i3-msg 'rename workspace to "2: mail"'\r
+bindsym $mod+r exec i3-input -F 'rename workspace to "%s"' -P 'New name: '</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>If you want to rename workspaces on demand while keeping the navigation stable,\r
+you can use a setup like this:</p></div>\r
+<div class="paragraph"><p><strong>Example</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>bindsym $mod+1 workspace number "1: www"\r
+bindsym $mod+2 workspace number "2: mail"\r
+...</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>If a workspace does not exist, the command <tt>workspace number "1: mail"</tt> will\r
+create workspace "1: mail".</p></div>\r
+<div class="paragraph"><p>If a workspace with number 1 does already exist, the command will switch to this\r
+workspace and ignore the text part. So even when the workspace has been renamed\r
+to "1: web", the above command will still switch to it.</p></div>\r
+</div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_moving_workspaces_to_a_different_screen">6.9. Moving workspaces to a different screen</h3>\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>\r
+<div class="sect2">\r
+<h3 id="move_to_outputs">6.10. <a id="_moving_containers_workspaces_to_randr_outputs"></a>Moving containers/workspaces to RandR outputs</h3>\r
+<div class="paragraph"><p>To move a container to another RandR output (addressed by names like <tt>LVDS1</tt> or\r
+<tt>VGA1</tt>) or to a RandR output identified by a specific direction (like <tt>left</tt>,\r
+<tt>right</tt>, <tt>up</tt> or <tt>down</tt>), there are two commands:</p></div>\r
+<div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>move container to output left|right|down|up|current|primary|&lt;output&gt;\r
+move workspace to output left|right|down|up|current|primary|&lt;output&gt;</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p><strong>Examples</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt># Move the current workspace to the next output\r
+# (effectively toggles when you only have two outputs)\r
+bindsym $mod+x move workspace to output right\r
+\r
+# Put this window on the presentation output.\r
+bindsym $mod+x move container to output VGA1\r
+\r
+# Put this window on the primary output.\r
+bindsym $mod+x move container to output primary</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>Note that you might not have a primary output configured yet. To do so, run:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>xrandr --output &lt;output&gt; --primary</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_moving_containers_windows_to_marks">6.11. Moving containers/windows to marks</h3>\r
+<div class="paragraph"><p>To move a container to another container with a specific mark (see <a href="#vim_like_marks">[vim_like_marks]</a>),\r
+you can use the following command.</p></div>\r
+<div class="paragraph"><p>The window will be moved right after the marked container in the tree, i.e., it ends up\r
+in the same position as if you had opened a new window when the marked container was\r
+focused. If the mark is on a split container, the window will appear as a new child\r
+after the currently focused child within that container.</p></div>\r
+<div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>move window|container to mark &lt;mark&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>for_window [instance="tabme"] move window to mark target</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="resizingconfig">6.12. Resizing containers/windows</h3>\r
+<div class="paragraph"><p>If you want to resize containers/windows using your keyboard, you can use the\r
+<tt>resize</tt> command:</p></div>\r
+<div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>resize grow|shrink &lt;direction&gt; [&lt;px&gt; px [or &lt;ppt&gt; ppt]]\r
+resize set &lt;width&gt; [px | ppt] &lt;height&gt; [px | ppt]</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>Direction can either be one of <tt>up</tt>, <tt>down</tt>, <tt>left</tt> or <tt>right</tt>. Or you can be\r
+less specific and use <tt>width</tt> or <tt>height</tt>, in which case i3 will take/give\r
+space from all the other containers. The optional pixel argument specifies by\r
+how many pixels a <strong>floating container</strong> should be grown or shrunk (the default\r
+is 10 pixels). The ppt argument means percentage points and specifies by how\r
+many percentage points a <strong>tiling container</strong> should be grown or shrunk (the\r
+default is 10 percentage points).</p></div>\r
+<div class="paragraph"><p>Notes about <tt>resize set</tt>: a value of 0 for &lt;width&gt; or &lt;height&gt; means "do\r
+not resize in this direction", and resizing a tiling container by <tt>px</tt> is not\r
+implemented.</p></div>\r
+<div class="paragraph"><p>It is recommended to define bindings for resizing in a dedicated binding mode.\r
+See <a href="#binding_modes">[binding_modes]</a> and the example in the i3\r
+<a href="https://github.com/i3/i3/blob/next/etc/config.keycodes">default config</a> for more\r
+context.</p></div>\r
+<div class="paragraph"><p><strong>Example</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>for_window [class="urxvt"] resize set 640 480</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_jumping_to_specific_windows">6.13. Jumping to specific windows</h3>\r
+<div class="paragraph"><p>Often when in a multi-monitor environment, you want to quickly jump to a\r
+specific window. For example, while working on workspace 3 you may want to\r
+jump to your mail client to email your boss that you’ve achieved some\r
+important goal. Instead of figuring out how to navigate to your mail client,\r
+it would be more convenient to have a shortcut. You can use the <tt>focus</tt> command\r
+with criteria for that.</p></div>\r
+<div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>[class="class"] focus\r
+[title="title"] focus</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p><strong>Examples</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt># Get me to the next open VIM instance\r
+bindsym $mod+a [class="urxvt" title="VIM"] focus</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="vim_like_marks">6.14. VIM-like marks (mark/goto)</h3>\r
+<div class="paragraph"><p>This feature is like the jump feature: It allows you to directly jump to a\r
+specific window (this means switching to the appropriate workspace and setting\r
+focus to the windows). However, you can directly mark a specific window with\r
+an arbitrary label and use it afterwards. You can unmark the label in the same\r
+way, using the unmark command. If you don&#8217;t specify a label, unmark removes all\r
+marks. You do not need to ensure that your windows have unique classes or\r
+titles, and you do not need to change your configuration file.</p></div>\r
+<div class="paragraph"><p>As the command needs to include the label with which you want to mark the\r
+window, you cannot simply bind it to a key.  <tt>i3-input</tt> is a tool created\r
+for this purpose: It lets you input a command and sends the command to i3. It\r
+can also prefix this command and display a custom prompt for the input dialog.</p></div>\r
+<div class="paragraph"><p>The additional <tt>--toggle</tt> option will remove the mark if the window already has\r
+this mark or add it otherwise. Note that you may need to use this in\r
+combination with <tt>--add</tt> (see below) as any other marks will otherwise be\r
+removed.</p></div>\r
+<div class="paragraph"><p>By default, a window can only have one mark. You can use the <tt>--add</tt> flag to\r
+put more than one mark on a window.</p></div>\r
+<div class="paragraph"><p>Refer to <a href="#show_marks">[show_marks]</a> if you don&#8217;t want marks to be shown in the window decoration.</p></div>\r
+<div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>mark [--add|--replace] [--toggle] &lt;identifier&gt;\r
+[con_mark="identifier"] focus\r
+unmark &lt;identifier&gt;</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p><strong>Example (in a terminal)</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt># marks the focused container\r
+mark irssi\r
+\r
+# focus the container with the mark "irssi"\r
+'[con_mark="irssi"] focus'\r
+\r
+# remove the mark "irssi" from whichever container has it\r
+unmark irssi\r
+\r
+# remove all marks on all firefox windows\r
+[class="(?i)firefox"] unmark</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="pango_markup">6.15. Window title format</h3>\r
+<div class="paragraph"><p>By default, i3 will simply print the X11 window title. Using <tt>title_format</tt>,\r
+this can be customized by setting the format to the desired output. This\r
+directive supports\r
+<a href="https://developer.gnome.org/pango/stable/PangoMarkupFormat.html">Pango markup</a>\r
+and the following placeholders which will be replaced:</p></div>\r
+<div class="dlist"><dl>\r
+<dt class="hdlist1">\r
+<tt>%title</tt>\r
+</dt>\r
+<dd>\r
+<p>\r
+    For normal windows, this is the X11 window title (_NET_WM_NAME or WM_NAME\r
+    as fallback). When used on containers without a window (e.g., a split\r
+    container inside a tabbed/stacked layout), this will be the tree\r
+    representation of the container (e.g., "H[xterm xterm]").\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+<tt>%class</tt>\r
+</dt>\r
+<dd>\r
+<p>\r
+    The X11 window class (second part of WM_CLASS). This corresponds to the\r
+    <tt>class</tt> criterion, see <a href="#command_criteria">[command_criteria]</a>.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+<tt>%instance</tt>\r
+</dt>\r
+<dd>\r
+<p>\r
+    The X11 window instance (first part of WM_CLASS). This corresponds to the\r
+    <tt>instance</tt> criterion, see <a href="#command_criteria">[command_criteria]</a>.\r
+</p>\r
+</dd>\r
+</dl></div>\r
+<div class="paragraph"><p>Using the <a href="#for_window">[for_window]</a> directive, you can set the title format for any window\r
+based on <a href="#command_criteria">[command_criteria]</a>.</p></div>\r
+<div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>title_format &lt;format&gt;</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p><strong>Examples</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt># give the focused window a prefix\r
+bindsym $mod+p title_format "Important | %title"\r
+\r
+# print all window titles bold\r
+for_window [class=".*"] title_format "&lt;b&gt;%title&lt;/b&gt;"\r
+\r
+# print window titles of firefox windows red\r
+for_window [class="(?i)firefox"] title_format "&lt;span foreground='red'&gt;%title&lt;/span&gt;"</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_changing_border_style">6.16. Changing border style</h3>\r
+<div class="paragraph"><p>To change the border of the current client, you can use <tt>border normal</tt> to use the normal\r
+border (including window title), <tt>border pixel 1</tt> to use a 1-pixel border (no window title)\r
+and <tt>border none</tt> to make the client borderless.</p></div>\r
+<div class="paragraph"><p>There is also <tt>border toggle</tt> which will toggle the different border styles.</p></div>\r
+<div class="paragraph"><p>Note that "pixel" refers to logical pixel. On HiDPI displays, a logical pixel\r
+may be represented by multiple physical pixels, so <tt>pixel 1</tt> might not\r
+necessarily translate into a single pixel row wide border.</p></div>\r
+<div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>border normal|pixel [&lt;n&gt;]\r
+border none|toggle\r
+\r
+# legacy syntax, equivalent to "border pixel 1"\r
+border 1pixel</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p><strong>Examples</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt># use window title, but no border\r
+bindsym $mod+t border normal 0\r
+# use no window title and a thick border\r
+bindsym $mod+y border pixel 3\r
+# use neither window title nor border\r
+bindsym $mod+u border none</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="shmlog">6.17. Enabling shared memory logging</h3>\r
+<div class="paragraph"><p>As described in <a href="https://i3wm.org/docs/debugging.html">https://i3wm.org/docs/debugging.html</a>, i3 can log to a shared\r
+memory buffer, which you can dump using <tt>i3-dump-log</tt>. The <tt>shmlog</tt> command\r
+allows you to enable or disable the shared memory logging at runtime.</p></div>\r
+<div class="paragraph"><p>Note that when using <tt>shmlog &lt;size_in_bytes&gt;</tt>, the current log will be\r
+discarded and a new one will be started.</p></div>\r
+<div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>shmlog &lt;size_in_bytes&gt;\r
+shmlog on|off|toggle</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p><strong>Examples</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt># Enable/disable logging\r
+bindsym $mod+x shmlog toggle\r
+\r
+# or, from a terminal:\r
+# increase the shared memory log buffer to 50 MiB\r
+i3-msg shmlog $((50*1024*1024))</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_enabling_debug_logging">6.18. Enabling debug logging</h3>\r
+<div class="paragraph"><p>The <tt>debuglog</tt> command allows you to enable or disable debug logging at\r
+runtime. Debug logging is much more verbose than non-debug logging. This\r
+command does not activate shared memory logging (shmlog), and as such is most\r
+likely useful in combination with the above-described <a href="#shmlog">[shmlog]</a> command.</p></div>\r
+<div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>debuglog on|off|toggle</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p><strong>Examples</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt># Enable/disable logging\r
+bindsym $mod+x debuglog toggle</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_reloading_restarting_exiting">6.19. Reloading/Restarting/Exiting</h3>\r
+<div class="paragraph"><p>You can make i3 reload its configuration file with <tt>reload</tt>. You can also\r
+restart i3 inplace with the <tt>restart</tt> command to get it out of some weird state\r
+(if that should ever happen) or to perform an upgrade without having to restart\r
+your X session. To exit i3 properly, you can use the <tt>exit</tt> command,\r
+however you don’t need to (simply killing your X session is fine as well).</p></div>\r
+<div class="paragraph"><p><strong>Examples</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>bindsym $mod+Shift+r restart\r
+bindsym $mod+Shift+w reload\r
+bindsym $mod+Shift+e exit</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_scratchpad">6.20. Scratchpad</h3>\r
+<div class="paragraph"><p>There are two commands to use any existing window as scratchpad window. <tt>move\r
+scratchpad</tt> will move a window to the scratchpad workspace. This will make it\r
+invisible until you show it again. There is no way to open that workspace.\r
+Instead, when using <tt>scratchpad show</tt>, the window will be shown again, as a\r
+floating window, centered on your current workspace (using <tt>scratchpad show</tt> on\r
+a visible scratchpad window will make it hidden again, so you can have a\r
+keybinding to toggle). Note that this is just a normal floating window, so if\r
+you want to "remove it from scratchpad", you can simple make it tiling again\r
+(<tt>floating toggle</tt>).</p></div>\r
+<div class="paragraph"><p>As the name indicates, this is useful for having a window with your favorite\r
+editor always at hand. However, you can also use this for other permanently\r
+running applications which you don’t want to see all the time: Your music\r
+player, alsamixer, maybe even your mail client…?</p></div>\r
+<div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>move scratchpad\r
+\r
+scratchpad show</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p><strong>Examples</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt># Make the currently focused window a scratchpad\r
+bindsym $mod+Shift+minus move scratchpad\r
+\r
+# Show the first scratchpad window\r
+bindsym $mod+minus scratchpad show\r
+\r
+# Show the sup-mail scratchpad window, if any.\r
+bindsym mod4+s [title="^Sup ::"] scratchpad show</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_nop">6.21. Nop</h3>\r
+<div class="paragraph"><p>There is a no operation command <tt>nop</tt> which allows you to override default\r
+behavior. This can be useful for, e.g., disabling a focus change on clicks with\r
+the middle mouse button.</p></div>\r
+<div class="paragraph"><p>The optional <tt>comment</tt> argument is ignored, but will be printed to the log file\r
+for debugging purposes.</p></div>\r
+<div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>nop [&lt;comment&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># Disable focus change for clicks on titlebars\r
+# with the middle mouse button\r
+bindsym button2 nop</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_i3bar_control">6.22. i3bar control</h3>\r
+<div class="paragraph"><p>There are two options in the configuration of each i3bar instance that can be\r
+changed during runtime by invoking a command through i3. The commands <tt>bar\r
+hidden_state</tt> and <tt>bar mode</tt> allow setting the current hidden_state\r
+respectively mode option of each bar. It is also possible to toggle between\r
+hide state and show state as well as between dock mode and hide mode. Each\r
+i3bar instance can be controlled individually by specifying a bar_id, if none\r
+is given, the command is executed for all bar instances.</p></div>\r
+<div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>bar hidden_state hide|show|toggle [&lt;bar_id&gt;]\r
+\r
+bar mode dock|hide|invisible|toggle [&lt;bar_id&gt;]</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p><strong>Examples</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt># Toggle between hide state and show state\r
+bindsym $mod+m bar hidden_state toggle\r
+\r
+# Toggle between dock mode and hide mode\r
+bindsym $mod+n bar mode toggle\r
+\r
+# Set the bar instance with id 'bar-1' to switch to hide mode\r
+bindsym $mod+b bar mode hide bar-1\r
+\r
+# Set the bar instance with id 'bar-1' to always stay hidden\r
+bindsym $mod+Shift+b bar mode invisible bar-1</tt></pre>\r
+</div></div>\r
+</div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="multi_monitor">7. Multiple monitors</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>As you can see in the goal list on the website, i3 was specifically developed\r
+with support for multiple monitors in mind. This section will explain how to\r
+handle multiple monitors.</p></div>\r
+<div class="paragraph"><p>When you have only one monitor, things are simple. You usually start with\r
+workspace 1 on your monitor and open new ones as you need them.</p></div>\r
+<div class="paragraph"><p>When you have more than one monitor, each monitor will get an initial\r
+workspace.  The first monitor gets 1, the second gets 2 and a possible third\r
+would get 3. When you switch to a workspace on a different monitor, i3 will\r
+switch to that monitor and then switch to the workspace. This way, you don’t\r
+need shortcuts to switch to a specific monitor, and you don’t need to remember\r
+where you put which workspace. New workspaces will be opened on the currently\r
+active monitor.  It is not possible to have a monitor without a workspace.</p></div>\r
+<div class="paragraph"><p>The idea of making workspaces global is based on the observation that most\r
+users have a very limited set of workspaces on their additional monitors.\r
+They are often used for a specific task (browser, shell) or for monitoring\r
+several things (mail, IRC, syslog, …). Thus, using one workspace on one monitor\r
+and "the rest" on the other monitors often makes sense. However, as you can\r
+create an unlimited number of workspaces in i3 and tie them to specific\r
+screens, you can have the "traditional" approach of having X workspaces per\r
+screen by changing your configuration (using modes, for example).</p></div>\r
+<div class="sect2">\r
+<h3 id="_configuring_your_monitors">7.1. Configuring your monitors</h3>\r
+<div class="paragraph"><p>To help you get going if you have never used multiple monitors before, here is\r
+a short overview of the xrandr options which will probably be of interest to\r
+you. It is always useful to get an overview of the current screen configuration.\r
+Just run "xrandr" and you will get an output like the following:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ xrandr\r
+Screen 0: minimum 320 x 200, current 1280 x 800, maximum 8192 x 8192\r
+VGA1 disconnected (normal left inverted right x axis y axis)\r
+LVDS1 connected 1280x800+0+0 (normal left inverted right x axis y axis) 261mm x 163mm\r
+   1280x800       60.0*+   50.0\r
+   1024x768       85.0     75.0     70.1     60.0\r
+   832x624        74.6\r
+   800x600        85.1     72.2     75.0     60.3     56.2\r
+   640x480        85.0     72.8     75.0     59.9\r
+   720x400        85.0\r
+   640x400        85.1\r
+   640x350        85.1</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>Several things are important here: You can see that <tt>LVDS1</tt> is connected (of\r
+course, it is the internal flat panel) but <tt>VGA1</tt> is not. If you have a monitor\r
+connected to one of the ports but xrandr still says "disconnected", you should\r
+check your cable, monitor or graphics driver.</p></div>\r
+<div class="paragraph"><p>The maximum resolution you can see at the end of the first line is the maximum\r
+combined resolution of your monitors. By default, it is usually too low and has\r
+to be increased by editing <tt>/etc/X11/xorg.conf</tt>.</p></div>\r
+<div class="paragraph"><p>So, say you connected VGA1 and want to use it as an additional screen:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>xrandr --output VGA1 --auto --left-of LVDS1</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>This command makes xrandr try to find the native resolution of the device\r
+connected to <tt>VGA1</tt> and configures it to the left of your internal flat panel.\r
+When running "xrandr" again, the output looks like this:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ xrandr\r
+Screen 0: minimum 320 x 200, current 2560 x 1024, maximum 8192 x 8192\r
+VGA1 connected 1280x1024+0+0 (normal left inverted right x axis y axis) 338mm x 270mm\r
+   1280x1024      60.0*+   75.0\r
+   1280x960       60.0\r
+   1152x864       75.0\r
+   1024x768       75.1     70.1     60.0\r
+   832x624        74.6\r
+   800x600        72.2     75.0     60.3     56.2\r
+   640x480        72.8     75.0     66.7     60.0\r
+   720x400        70.1\r
+LVDS1 connected 1280x800+1280+0 (normal left inverted right x axis y axis) 261mm x 163mm\r
+   1280x800       60.0*+   50.0\r
+   1024x768       85.0     75.0     70.1     60.0\r
+   832x624        74.6\r
+   800x600        85.1     72.2     75.0     60.3     56.2\r
+   640x480        85.0     72.8     75.0     59.9\r
+   720x400        85.0\r
+   640x400        85.1\r
+   640x350        85.1</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>Please note that i3 uses exactly the same API as xrandr does, so it will see\r
+only what you can see in xrandr.</p></div>\r
+<div class="paragraph"><p>See also <a href="#presentations">[presentations]</a> for more examples of multi-monitor setups.</p></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_interesting_configuration_for_multi_monitor_environments">7.2. Interesting configuration for multi-monitor environments</h3>\r
+<div class="paragraph"><p>There are several things to configure in i3 which may be interesting if you\r
+have more than one monitor:</p></div>\r
+<div class="olist arabic"><ol class="arabic">\r
+<li>\r
+<p>\r
+You can specify which workspace should be put on which screen. This\r
+   allows you to have a different set of workspaces when starting than just\r
+   1 for the first monitor, 2 for the second and so on. See\r
+   <a href="#workspace_screen">[workspace_screen]</a>.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+If you want some applications to generally open on the bigger screen\r
+   (MPlayer, Firefox, …), you can assign them to a specific workspace, see\r
+   <a href="#assign_workspace">[assign_workspace]</a>.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+If you have many workspaces on many monitors, it might get hard to keep\r
+   track of which window you put where. Thus, you can use vim-like marks to\r
+   quickly switch between windows. See <a href="#vim_like_marks">[vim_like_marks]</a>.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+For information on how to move existing workspaces between monitors,\r
+   see <a href="#move_to_outputs">[move_to_outputs]</a>.\r
+</p>\r
+</li>\r
+</ol></div>\r
+</div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_i3_and_the_rest_of_your_software_world">8. i3 and the rest of your software world</h2>\r
+<div class="sectionbody">\r
+<div class="sect2">\r
+<h3 id="_displaying_a_status_line">8.1. Displaying a status line</h3>\r
+<div class="paragraph"><p>A very common thing amongst users of exotic window managers is a status line at\r
+some corner of the screen. It is an often superior replacement to the widget\r
+approach you have in the task bar of a traditional desktop environment.</p></div>\r
+<div class="paragraph"><p>If you don’t already have your favorite way of generating such a status line\r
+(self-written scripts, conky, …), then i3status is the recommended tool for\r
+this task. It was written in C with the goal of using as few syscalls as\r
+possible to reduce the time your CPU is woken up from sleep states. Because\r
+i3status only spits out text, you need to combine it with some other tool, like\r
+i3bar. See <a href="#status_command">[status_command]</a> for how to display i3status in i3bar.</p></div>\r
+<div class="paragraph"><p>Regardless of which application you use to display the status line, you\r
+want to make sure that it registers as a dock window using EWMH hints. i3 will\r
+position the window either at the top or at the bottom of the screen, depending\r
+on which hint the application sets. With i3bar, you can configure its position,\r
+see <a href="#i3bar_position">[i3bar_position]</a>.</p></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="presentations">8.2. Giving presentations (multi-monitor)</h3>\r
+<div class="paragraph"><p>When giving a presentation, you typically want the audience to see what you see\r
+on your screen and then go through a series of slides (if the presentation is\r
+simple). For more complex presentations, you might want to have some notes\r
+which only you can see on your screen, while the audience can only see the\r
+slides.</p></div>\r
+<div class="sect3">\r
+<h4 id="_case_1_everybody_gets_the_same_output">8.2.1. Case 1: everybody gets the same output</h4>\r
+<div class="paragraph"><p>This is the simple case. You connect your computer to the video projector,\r
+turn on both (computer and video projector) and configure your X server to\r
+clone the internal flat panel of your computer to the video output:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>xrandr --output VGA1 --mode 1024x768 --same-as LVDS1</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>i3 will then use the lowest common subset of screen resolutions, the rest of\r
+your screen will be left untouched (it will show the X background). So, in\r
+our example, this would be 1024x768 (my notebook has 1280x800).</p></div>\r
+</div>\r
+<div class="sect3">\r
+<h4 id="_case_2_you_can_see_more_than_your_audience">8.2.2. Case 2: you can see more than your audience</h4>\r
+<div class="paragraph"><p>This case is a bit harder. First of all, you should configure the VGA output\r
+somewhere near your internal flat panel, say right of it:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>xrandr --output VGA1 --mode 1024x768 --right-of LVDS1</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>Now, i3 will put a new workspace (depending on your settings) on the new screen\r
+and you are in multi-monitor mode (see <a href="#multi_monitor">[multi_monitor]</a>).</p></div>\r
+<div class="paragraph"><p>Because i3 is not a compositing window manager, there is no ability to\r
+display a window on two screens at the same time. Instead, your presentation\r
+software needs to do this job (that is, open a window on each screen).</p></div>\r
+</div>\r
+</div>\r
+</div>\r
+</div>\r
+</div>\r
+<div id="footnotes"><hr /></div>\r
+<div id="footer" lang="de">\r
+© 2009-2011 Michael Stapelberg, <a href="/impress.html">Impressum</a>\r
+</div>\r
+</body>\r
+</html>\r