]> git.sur5r.net Git - i3/i3.github.io/blobdiff - docs/multi-monitor.html
add docs (with custom stylesheet)
[i3/i3.github.io] / docs / multi-monitor.html
diff --git a/docs/multi-monitor.html b/docs/multi-monitor.html
new file mode 100644 (file)
index 0000000..671d2be
--- /dev/null
@@ -0,0 +1,109 @@
+<!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
+<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />\r
+<meta name="generator" content="AsciiDoc 8.6.4" />\r
+<title>i3: The multi-monitor situation</title>\r
+<link rel="stylesheet" href="/css/style.css" type="text/css" />\r
+<link rel="stylesheet" href="/css/xhtml11.css" type="text/css" />\r
+<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
+            <h1 id="title">i3 - improved tiling WM</h1>\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>The multi-monitor situation</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>…or: oh no, I have an nVidia graphics card!</p></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_the_quick_fix">1. The quick fix</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>If you are using the nVidia binary graphics driver (also known as <em>blob</em>)\r
+you need to use the <tt>--force-xinerama</tt> flag (in your .xsession) when starting\r
+i3, like so:</p></div>\r
+<div class="listingblock">\r
+<div class="title">Example:</div>\r
+<div class="content">\r
+<pre><tt>exec i3 --force-xinerama -V &gt;&gt;~/.i3/i3log 2&gt;&amp;1</tt></pre>\r
+</div></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_the_explanation">2. The explanation</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>Starting with version 3.ε, i3 uses the RandR (Rotate and Resize) API instead\r
+of Xinerama. The reason for this, is that RandR provides more information\r
+about your outputs and connected screens than Xinerama does. To be specific,\r
+the code which handled on-the-fly screen reconfiguration (meaning without\r
+restarting the X server) was a very messy heuristic and most of the time did\r
+not work correctly&#8201;&#8212;&#8201;that is just not possible with the little information\r
+Xinerama offers (just a list of screen resolutions, no identifiers for the\r
+screens or any additional information). Xinerama simply was not designed\r
+for dynamic configuration.</p></div>\r
+<div class="paragraph"><p>So RandR came along, as a more powerful alternative (RandR 1.2 to be specific).\r
+It offers all of Xinerama’s possibilities and lots more. Using the RandR API\r
+made our code much more robust and clean. Also, you can now reliably assign\r
+workspaces to output names instead of some rather unreliable screen identifier\r
+(position inside the list of screens, which could change, and so on…).</p></div>\r
+<div class="paragraph"><p>As RandR has been around for about three years as of this writing, it seemed\r
+like a very good idea to us, and it still is a very good one. What we did not\r
+expect, however, was the nVidia binary driver. It still does not support RandR\r
+(as of March 2010), even though nVidia has announced that it will support RandR\r
+eventually. What does this mean for you, if you are stuck with the binary\r
+driver for some reason (say the free drivers don’t work with your card)? First\r
+of all, you are stuck with TwinView and cannot use <tt>xrandr</tt>. While this ruins\r
+the user experience, the more grave problem is that the nVidia driver not only\r
+does not support dynamic configuration using RandR, it also does not expose\r
+correct multi-monitor information via the RandR API. So, in some setups, i3\r
+will not find any screens; in others, it will find one large screen which\r
+actually contains both of your physical screens (but it will not know that\r
+these are two screens).</p></div>\r
+<div class="paragraph"><p>For this very reason, we decided to implement the following workaround: As\r
+long as the nVidia driver does not support RandR, an option called\r
+<tt>--force-xinerama</tt> is available in i3. This option gets the list of screens\r
+<strong>once</strong> when starting, and never updates it. As the nVidia driver cannot do\r
+dynamic configuration anyways, this is not a big deal.</p></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_see_also">3. See also</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>For more information on how to use multi-monitor setups, see the i3 User’s\r
+Guide.</p></div>\r
+</div>\r
+</div>\r
+</div>\r
+<div id="footnotes"><hr /></div>\r
+<div id="footer">\r
+<div id="footer-text">\r
+Last updated 2011-07-22 20:28:19 CEST\r
+</div>\r
+</div>\r
+</body>\r
+</html>\r