]> git.sur5r.net Git - i3/i3.github.io/blobdiff - docs/3.e/userguide.html
add (versioned) docs for 4.0
[i3/i3.github.io] / docs / 3.e / userguide.html
diff --git a/docs/3.e/userguide.html b/docs/3.e/userguide.html
new file mode 100644 (file)
index 0000000..bfb4d63
--- /dev/null
@@ -0,0 +1,1128 @@
+<!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/png" href="/favicon.png">\r
+<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 8.6.4" />\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
+window.onload = function(){asciidoc.footnotes(); asciidoc.toc(2);}\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="/contact">Contact</a></li>\r
+                                <li><a href="http://bugs.i3wm.org/">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+i3@stapelberg.de">michael+i3@stapelberg.de</a>&gt;</tt></span><br />\r
+<span id="revdate">March 2010</span>\r
+<div id="toc">
+  <div id="toctitle">Table of Contents</div>
+  <noscript><p><b>JavaScript must be enabled in your browser to display the table of contents.</b></p></noscript>
+</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 contact me on IRC, Jabber or E-Mail and\r
+I’ll help you out.</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 Mod1 (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 Mod1 (alt)" width="600" />\r
+</a>\r
+</span></p></div>\r
+<div class="paragraph"><p><strong>Keys to use with Shift+Mod1:</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+Mod1" width="600" />\r
+</a>\r
+</span></p></div>\r
+<div class="paragraph"><p>As i3 uses keycodes in the default configuration, it does not matter which\r
+keyboard layout you actually use. The key positions are what matters (of course\r
+you can also use keysymbols, see <a href="#keybindings">[keybindings]</a>).</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>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_using_i3">2. Using i3</h2>\r
+<div class="sectionbody">\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 Mod1+Enter, that is Alt+Enter in the default configuration. By\r
+pressing Mod1+Enter, a new terminal will be opened.  It will fill the whole\r
+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>It is important to keep in mind that i3 uses a table to manage your windows. At\r
+the moment, you have exactly one column and one row which leaves you with one\r
+cell. In this cell there is a container, which is where your new terminal is\r
+opened.</p></div>\r
+<div class="paragraph"><p>If you now open another terminal, you still have only one cell. However, the\r
+container in that cell holds both of your terminals. So, a container is just a\r
+group of clients with a specific layout. Containers can be resized by adjusting\r
+the size of the cell that holds them.</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 use the direction keys which\r
+you may know from the editor <tt>vi</tt>. However, in i3, your homerow is used for\r
+these keys (in <tt>vi</tt>, the keys are shifted to the left by one for compatibility\r
+with most keyboard layouts). Therefore, <tt>Mod1+J</tt> is left, <tt>Mod1+K</tt> is down,\r
+<tt>Mod1+L</tt> is up and <tt>Mod1+;</tt> is right. So, to switch between the terminals,\r
+use <tt>Mod1+K</tt> or <tt>Mod1+L</tt>.</p></div>\r
+<div class="paragraph"><p>To create a new row/column (and a new cell), you can simply move a terminal (or\r
+any other window) in the direction you want to expand your table. So, let’s\r
+expand the table to the right by pressing <tt>Mod1+Shift+;</tt>.</p></div>\r
+<div class="paragraph"><p><span class="image">\r
+<img src="two_columns.png" alt="Two columns" />\r
+</span></p></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_changing_container_modes">2.2. Changing container modes</h3>\r
+<div class="paragraph"><p>A container can have the following modes:</p></div>\r
+<div class="dlist"><dl>\r
+<dt class="hdlist1">\r
+default\r
+</dt>\r
+<dd>\r
+<p>\r
+Windows are sized so that every window gets an equal amount of space in the\r
+container.\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>Mod1+e</tt> for default, <tt>Mod1+h</tt> for stacking and\r
+<tt>Mod1+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 fullscreen or to go out of fullscreen mode again, press\r
+<tt>Mod1+f</tt>.</p></div>\r
+<div class="paragraph"><p>There is also a global fullscreen mode in i3 in which the client will use all\r
+available outputs. To use it, or to get out of it again, press <tt>Mod1+Shift+f</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>Mod1+v</tt> by default. Just type the name\r
+(or a part of it) of the application which you want to open. The application\r
+typed 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
+"Configuring i3" 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>Mod1+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>Mod1+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>Mod1+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_columns_rows">2.8. Resizing columns/rows</h3>\r
+<div class="paragraph"><p>To resize columns or rows, just grab the border between the two columns/rows\r
+and move it to the wanted size. Please keep in mind that each cell of the table\r
+holds a <tt>container</tt> and thus you cannot horizontally resize single windows.  If\r
+you need applications with different horizontal sizes, place them in seperate\r
+cells one above the other.</p></div>\r
+<div class="paragraph"><p>See <a href="#resizingconfig">[resizingconfig]</a> for how to configure i3 to be able to resize\r
+columns/rows with your keyboard.</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 inplace (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>Mod1+Shift+r</tt>. Be aware,\r
+though, that this kills your current layout and all the windows you have opened\r
+will be put in a default container in only one cell. Saving layouts will be\r
+implemented in a later version.</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>Mod1+Shift+e</tt>.</p></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_snapping">2.11. Snapping</h3>\r
+<div class="paragraph"><p>Snapping is a mechanism to increase/decrease the colspan/rowspan of a container.\r
+Colspan/rowspan is the number of columns/rows a specific cell of the table\r
+consumes. This is easier explained by giving an example, so take the following\r
+layout:</p></div>\r
+<div class="paragraph"><p><span class="image">\r
+<img src="snapping.png" alt="Snapping example" />\r
+</span></p></div>\r
+<div class="paragraph"><p>To use the full size of your screen, you can now snap container 3 downwards\r
+by pressing <tt>Mod1+Control+k</tt> (or snap container 2 rightwards).</p></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_floating">2.12. Floating</h3>\r
+<div class="paragraph"><p>Floating mode is the opposite of tiling mode. The position and size of a window\r
+are not managed by i3, but by you. Using this mode violates the tiling\r
+paradigm but can be useful for some corner cases like "Save as" dialog\r
+windows, or toolbar windows (GIMP or similar).</p></div>\r
+<div class="paragraph"><p>You can enable floating mode for a window by pressing <tt>Mod1+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>.</p></div>\r
+<div class="paragraph"><p>For resizing floating windows with your keyboard, see <a href="#resizingconfig">[resizingconfig]</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="_configuring_i3">3. Configuring i3</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>This is where the real fun begins ;-). Most things are very dependant 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="sect2">\r
+<h3 id="_comments">3.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">3.2. Fonts</h3>\r
+<div class="paragraph"><p>i3 uses X core fonts (not Xft) for rendering window titles and the internal\r
+workspace bar. You can use <tt>xfontsel(1)</tt> to generate such a font description.\r
+To see special characters (Unicode), you need to use a font which supports\r
+the ISO-10646 encoding.</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;</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</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="keybindings">3.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>.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Keycodes do not need to have a symbol assigned (handy for some hotkeys\r
+  on some notebooks) and they will not change their meaning as you switch to a\r
+  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><strong>Syntax</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>bindsym [Modifiers+]keysym command\r
+bind [Modifiers+]keycode 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 Mod1+f f\r
+\r
+# Restart\r
+bindsym Mod1+Shift+r restart\r
+\r
+# Notebook-specific hotkeys\r
+bind 214 exec /home/michael/toggle_beamer.sh</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
+Mode_switch\r
+</dt>\r
+<dd>\r
+<p>\r
+Unlike other window managers, i3 can use Mode_switch as a modifier. This allows\r
+you to remap capslock (for example) to Mode_switch and use it for both: typing\r
+umlauts or special characters <em>and</em> having some comfortably reachable key\r
+bindings. For example, when typing, capslock+1 or capslock+2 for switching\r
+workspaces is totally convenient. Try it :-).\r
+</p>\r
+</dd>\r
+</dl></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="floating_modifier">3.4. 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.</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;Modifiers&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>floating_modifier Mod1</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_layout_mode_for_new_containers">3.5. Layout mode for new containers</h3>\r
+<div class="paragraph"><p>This option determines in which mode new containers will start. See also\r
+<a href="#stack-limit">[stack-limit]</a>.</p></div>\r
+<div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>new_container &lt;default|stacking|tabbed&gt;\r
+new_container stack-limit &lt;cols|rows&gt; &lt;value&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>new_container tabbed</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_border_style_for_new_windows">3.6. Border style for new windows</h3>\r
+<div class="paragraph"><p>This option determines which border style new windows will have.</p></div>\r
+<div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>new_window &lt;bp|bn|bb&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>new_window bp</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_variables">3.7. 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 name value</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>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. There is no fancy\r
+handling and there are absolutely no plans to change this. If you need a more\r
+dynamic configuration you should create a little script which generates a\r
+configuration file and run it before starting i3 (for example in your\r
+<tt>.xsession</tt> file).</p></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_automatically_putting_clients_on_specific_workspaces">3.8. Automatically putting clients on specific workspaces</h3>\r
+<div class="paragraph" id="assign_workspace"><p>It is recommended that you match on window classes wherever possible because\r
+some applications first create their window, and then worry about setting the\r
+correct title. Firefox with Vimperator comes to mind. The window starts up\r
+being named Firefox, and only when Vimperator is loaded does the title change.\r
+As i3 will get the title as soon as the application maps the window (mapping\r
+means actually displaying it on the screen), you’d need to have to match on\r
+<em>Firefox</em> in this case.</p></div>\r
+<div class="paragraph"><p>You can prefix or suffix workspaces with a <tt>~</tt> to specify that matching clients\r
+should be put into floating mode. If you specify only a <tt>~</tt>, the client will\r
+not be put onto any workspace, but will be set floating on the current one.</p></div>\r
+<div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>assign ["]window class[/window title]["] [→] [~ | workspace]</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 2\r
+assign urxvt → 2\r
+assign "urxvt" → 2\r
+assign "urxvt/VIM" → 3\r
+assign "gecko" → ~4\r
+assign "xv/MPlayer" → ~</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>Note that 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 "&#8594;" or something like that.</p></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_automatically_starting_applications_on_i3_startup">3.9. 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 which\r
+commands will be performed by i3 on initial startup (not when restarting i3\r
+in-place however). These commands will be run in order.</p></div>\r
+<div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>exec 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>exec sudo i3status | dzen2 -dock</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="workspace_screen">3.10. 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;number&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><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</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_named_workspaces">3.11. Named workspaces</h3>\r
+<div class="paragraph"><p>If you always have a certain arrangement of workspaces, you might want to give\r
+them names (of course UTF-8 is supported):</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;number&gt; &lt;name&gt;\r
+workspace &lt;number&gt; output &lt;output&gt; name</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>For more details about the <em>output</em> part of this command, see above.</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 www\r
+workspace 2 work\r
+workspace 3 i ♥ workspaces</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_changing_colors">3.12. Changing colors</h3>\r
+<div class="paragraph"><p>You can change all colors which i3 uses to draw the window decorations and the\r
+bottom bar.</p></div>\r
+<div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>colorclass border background text</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
+bar.focused\r
+</dt>\r
+<dd>\r
+<p>\r
+        The current workspace in the bottom bar.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+bar.unfocused\r
+</dt>\r
+<dd>\r
+<p>\r
+        All other workspaces in the bottom bar.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+bar.urgent\r
+</dt>\r
+<dd>\r
+<p>\r
+        A workspace which has at least one client with an activated urgency hint.\r
+</p>\r
+</dd>\r
+</dl></div>\r
+<div class="paragraph"><p>You can also specify the color to be used to paint the background of the client\r
+windows. This color will be used to paint the window on top of which the client\r
+will be rendered.</p></div>\r
+<div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>client.background color</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>Only clients that do not cover the whole area of this window expose the color\r
+used to paint it. If you use a color other than black for your terminals, you\r
+most likely want to set the client background color to the same color as your\r
+terminal program&#8217;s background color to avoid black gaps between the rendered\r
+area of the termianal and the i3 border.</p></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</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt># class        border  backgr. text\r
+client.focused #2F343A #900000 #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
+background color, and the border color is only the two thin lines at the top of\r
+the window.</p></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_interprocess_communication">3.13. 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>To enable it, you have to configure a path where the unix socket will be\r
+stored. The default path is <tt>~/.i3/ipc.sock</tt>.</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/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="_disable_focus_follows_mouse">3.14. Disable focus follows mouse</h3>\r
+<div class="paragraph"><p>If you have a setup where your mouse usually is in your way (like a touchpad\r
+on your laptop which you do not want to disable completely), you might want\r
+to disable <em>focus follows mouse</em> and control focus only by using your keyboard.\r
+The mouse will still be useful inside the currently active window (for example\r
+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 &lt;yes|no&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_follows_mouse no</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_internal_workspace_bar">3.15. Internal workspace bar</h3>\r
+<div class="paragraph"><p>The internal workspace bar (the thing at the bottom of your screen) is very\r
+simple&#8201;&#8212;&#8201;it does not provide a way to display custom text and it does not\r
+offer advanced customization features. This is intended because we do not\r
+want to duplicate functionality of tools like <tt>dzen2</tt>, <tt>xmobar</tt> and so on\r
+(they render bars, we manage windows). Instead, there is an option which will\r
+turn off the internal bar completely, so that you can use a separate program to\r
+display it (see <tt>i3-wsbar</tt>, a sample implementation of such a program):</p></div>\r
+<div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>workspace_bar &lt;yes|no&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>workspace_bar no</tt></pre>\r
+</div></div>\r
+</div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_list_of_commands">4. List of commands</h2>\r
+<div class="sectionbody">\r
+<div class="sect2">\r
+<h3 id="_manipulating_layout">4.1. Manipulating layout</h3>\r
+<div class="paragraph"><p>To change the layout of the current container to stacking, use <tt>s</tt>, for default\r
+use <tt>d</tt> and for tabbed, use <tt>T</tt>. To make the current client (!) fullscreen,\r
+use <tt>f</tt>, to make it span all outputs, use <tt>fg</tt>, to make it floating (or\r
+tiling again) use <tt>t</tt>:</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+s s\r
+bindsym Mod1+l d\r
+bindsym Mod1+w T\r
+\r
+# Toggle fullscreen\r
+bindsym Mod1+f f\r
+\r
+# Toggle global fullscreen\r
+bindsym Mod1+Shift+f fg\r
+\r
+# Toggle floating/tiling\r
+bindsym Mod1+t t</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_focusing_moving_snapping_clients_containers_screens">4.2. Focusing/Moving/Snapping clients/containers/screens</h3>\r
+<div class="paragraph"><p>To change the focus, use one of the <tt>h</tt>, <tt>j</tt>, <tt>k</tt> and <tt>l</tt> commands, meaning\r
+left, down, up, right (respectively). To focus a container, prefix it with\r
+<tt>wc</tt>. To focus a screen, prefix it with <tt>ws</tt>.</p></div>\r
+<div class="paragraph"><p>The same principle applies for moving and snapping: just prefix the command\r
+with <tt>m</tt> when moving and with <tt>s</tt> when snapping:</p></div>\r
+<div class="paragraph"><p><strong>Examples</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt># Focus clients on the left, bottom, top, right:\r
+bindsym Mod1+j h\r
+bindsym Mod1+k j\r
+bindsym Mod1+j k\r
+bindsym Mod1+semicolon l\r
+\r
+# Move client to the left, bottom, top, right:\r
+bindsym Mod1+j mh\r
+bindsym Mod1+k mj\r
+bindsym Mod1+j mk\r
+bindsym Mod1+semicolon ml\r
+\r
+# Snap client to the left, bottom, top, right:\r
+bindsym Mod1+j sh\r
+bindsym Mod1+k sj\r
+bindsym Mod1+j sk\r
+bindsym Mod1+semicolon sl\r
+\r
+# Focus container on the left, bottom, top, right:\r
+bindsym Mod3+j wch\r
+…</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_changing_workspaces_moving_clients_to_workspaces">4.3. Changing workspaces/moving clients to workspaces</h3>\r
+<div class="paragraph"><p>To change to a specific workspace, the command is just the number of the\r
+workspace, e.g. <tt>1</tt> or <tt>3</tt>. To move the current client to a specific workspace,\r
+prefix the number with an <tt>m</tt>.</p></div>\r
+<div class="paragraph"><p>You can also switch to the next and previous workspace with the commands <tt>nw</tt>\r
+and <tt>pw</tt>, which is handy, for example, if you have workspace 1, 3, 4 and 9 and\r
+you want to cycle through them with a single key combination.</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+1 1\r
+bindsym Mod1+2 2\r
+...\r
+\r
+bindsym Mod1+Shift+1 m1\r
+bindsym Mod1+Shift+2 m2\r
+...\r
+\r
+bindsym Mod1+o nw\r
+bindsym Mod1+p pw</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="resizingconfig">4.4. Resizing columns/rows</h3>\r
+<div class="paragraph"><p>If you want to resize columns/rows using your keyboard, you can use the\r
+<tt>resize</tt> command, I recommend using it inside a so called <tt>mode</tt>:</p></div>\r
+<div class="listingblock">\r
+<div class="title">Example: Configuration file, defining a mode for resizing</div>\r
+<div class="content">\r
+<pre><tt>mode "resize" {\r
+        # These bindings trigger as soon as you enter the resize mode\r
+\r
+        # They resize the border in the direction you pressed, e.g.\r
+        # when pressing left, the window is resized so that it has\r
+        # more space on its left\r
+\r
+        bindsym n resize left -10\r
+        bindsym Shift+n resize left +10\r
+\r
+        bindsym r resize bottom +10\r
+        bindsym Shift+r resize bottom -10\r
+\r
+        bindsym t resize top -10\r
+        bindsym Shift+t resize top +10\r
+\r
+        bindsym d resize right +10\r
+        bindsym Shift+d resize right -10\r
+\r
+        bind 36 mode default\r
+}\r
+\r
+# Enter resize mode\r
+bindsym Mod1+r mode resize</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_jumping_to_specific_windows">4.5. 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 mailclient,\r
+it would be more convenient to have a shortcut.</p></div>\r
+<div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>jump ["]window class[/window title]["]\r
+jump workspace [ column row ]</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>You can either use the same matching algorithm as in the <tt>assign</tt> command\r
+(see above) or you can specify the position of the client if you always use\r
+the same layout.</p></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 Mod1+a jump "urxvt/VIM"</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_vim_like_marks_mark_goto">4.6. VIM-like marks (mark/goto)</h3>\r
+<div class="paragraph" id="vim_like_marks"><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 do not need to ensure that your\r
+windows have unique classes or titles, and you do not need to change your\r
+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><strong>Syntax</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>mark &lt;identifier&gt;\r
+goto &lt;identifier&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># Read 1 character and mark the current window with this character\r
+bindsym Mod1+m exec i3-input -p 'mark ' -l 1 -P 'Mark: '\r
+\r
+# Read 1 character and go to the window with the character\r
+bindsym Mod1+g exec i3-input -p 'goto ' -l 1 -P 'Goto: '</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>Alternatively, if you do not want to mess with <tt>i3-input</tt>, you could create\r
+seperate bindings for a specific set of labels and then only use those labels.</p></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_traveling_the_focus_stack">4.7. Traveling the focus stack</h3>\r
+<div class="paragraph"><p>This mechanism can be thought of as the opposite of the <tt>jump</tt> command.\r
+It travels the focus stack and jumps to the window which had focus previously.</p></div>\r
+<div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>focus [number] | floating | tiling | ft</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>Where <tt>number</tt> by default is 1 meaning that the next client in the focus stack\r
+will be selected.</p></div>\r
+<div class="paragraph"><p>The special values have the following meaning:</p></div>\r
+<div class="dlist"><dl>\r
+<dt class="hdlist1">\r
+floating\r
+</dt>\r
+<dd>\r
+<p>\r
+        The next floating window is selected.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+tiling\r
+</dt>\r
+<dd>\r
+<p>\r
+        The next tiling window is selected.\r
+</p>\r
+</dd>\r
+<dt class="hdlist1">\r
+ft\r
+</dt>\r
+<dd>\r
+<p>\r
+        If the current window is floating, the next tiling window will be\r
+       selected; and vice-versa.\r
+</p>\r
+</dd>\r
+</dl></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_changing_border_style">4.8. Changing border style</h3>\r
+<div class="paragraph"><p>To change the border of the current client, you can use <tt>bn</tt> to use the normal\r
+border (including window title), <tt>bp</tt> to use a 1-pixel border (no window title)\r
+and <tt>bb</tt> to make the client borderless. There is also <tt>bt</tt> which will toggle\r
+the different border styles.</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+t bn\r
+bindsym Mod1+y bp\r
+bindsym Mod1+u bb</tt></pre>\r
+</div></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="stack-limit">4.9. Changing the stack-limit of a container</h3>\r
+<div class="paragraph"><p>If you have a single container with a lot of windows inside it (say, more than\r
+10), the default layout of a stacking container can get a little unhandy.\r
+Depending on your screen’s size, you might end up seeing only half of the\r
+titlebars for each window in the container.</p></div>\r
+<div class="paragraph"><p>Using the <tt>stack-limit</tt> command, you can limit the number of rows or columns\r
+in a stacking container. i3 will create columns or rows (depending on what\r
+you limited) automatically as needed.</p></div>\r
+<div class="paragraph"><p><strong>Syntax</strong>:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>stack-limit &lt;cols|rows&gt; &lt;value&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># I always want to have two window titles in one line\r
+stack-limit cols 2\r
+\r
+# Not more than 5 rows in this stacking container\r
+stack-limit rows 5</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p><span class="image">\r
+<img src="stacklimit.png" alt="Container limited to two columns" />\r
+</span></p></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_reloading_restarting_exiting">4.10. 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. However, your layout is not preserved at the moment, meaning\r
+that all open windows will end up in a single container in default layout\r
+after the restart. 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 Mod1+Shift+r restart\r
+bindsym Mod1+Shift+w reload\r
+bindsym Mod1+Shift+e exit</tt></pre>\r
+</div></div>\r
+</div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="multi_monitor">5. 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">5.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">5.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
+</ol></div>\r
+</div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_i3_and_the_rest_of_your_software_world">6. i3 and the rest of your software world</h2>\r
+<div class="sectionbody">\r
+<div class="sect2">\r
+<h3 id="_displaying_a_status_line">6.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.</p></div>\r
+<div class="paragraph"><p>Regardless of which application you use to generate the status line, you\r
+want to make sure that the application does one of the following things:</p></div>\r
+<div class="olist arabic"><ol class="arabic">\r
+<li>\r
+<p>\r
+Register as a dock window using EWMH hints. This will make i3 position the\r
+   window above the workspace bar but below every other client. This is the\r
+   recommended way, but in case of dzen2, for example, you need to check out\r
+   the source of dzen2 from subversion, as the -dock option is not present\r
+   in the released versions.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Overlay the internal workspace bar. This method will not waste any space\r
+   on the workspace bar, however, it is rather hackish. Just configure\r
+   the output window to be over the workspace bar (say -x 200 and -y 780 if\r
+   your screen is 800 px height).\r
+</p>\r
+</li>\r
+</ol></div>\r
+<div class="paragraph"><p>The planned solution for this problem is to make the workspace bar optional\r
+and switch to a third party application completely (dzen2 for example)\r
+which will then contain the workspace bar.</p></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_giving_presentations_multi_monitor">6.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="presentations">6.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">6.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