From 1abf6cf5e3dbfee645d2b78533ddd15aca34e9eb Mon Sep 17 00:00:00 2001 From: Michael Stapelberg Date: Sat, 7 Jul 2012 21:45:26 +0200 Subject: [PATCH] multi-monitor: update the document for the nvidia driver version 302.17 --- _docs/multi-monitor | 48 +++++++++++++++++++++------------------- docs/multi-monitor.html | 49 +++++++++++++++++++++-------------------- 2 files changed, 50 insertions(+), 47 deletions(-) diff --git a/_docs/multi-monitor b/_docs/multi-monitor index a1fd6dc..d3f31ba 100644 --- a/_docs/multi-monitor +++ b/_docs/multi-monitor @@ -1,14 +1,17 @@ The multi-monitor situation =========================== -Michael Stapelberg -September 2011 +Michael Stapelberg +July 2012 …or: oh no, I have an nVidia graphics card! == The quick fix If you are using the nVidia binary graphics driver (also known as 'blob') -you need to use the +--force-xinerama+ flag (in your .xsession) when starting +you need to upgrade to at least version 302.17 (released in June 2012). + +In case you cannot update the driver to 302.17 or newer on your machine for +some reason, use the +--force-xinerama+ flag (in your .xsession) when starting i3, like so: .Example: @@ -20,15 +23,15 @@ exec i3 --force-xinerama -V >>~/.i3/i3log 2>&1 == The explanation -Starting with version 3.ε, i3 uses the RandR (Rotate and Resize) API instead -of Xinerama. The reason for this, is that RandR provides more information -about your outputs and connected screens than Xinerama does. To be specific, -the code which handled on-the-fly screen reconfiguration (meaning without -restarting the X server) was a very messy heuristic and most of the time did -not work correctly -- that is just not possible with the little information -Xinerama offers (just a list of screen resolutions, no identifiers for the -screens or any additional information). Xinerama simply was not designed -for dynamic configuration. +Starting with version 3.ε (March 2010), i3 uses the RandR (Rotate and Resize) +API instead of Xinerama. The reason for this, is that RandR provides more +information about your outputs and connected screens than Xinerama does. To be +specific, the code which handled on-the-fly screen reconfiguration (meaning +without restarting the X server) was a very messy heuristic and most of the +time did not work correctly -- that is just not possible with the little +information Xinerama offers (just a list of screen resolutions, no identifiers +for the screens or any additional information). Xinerama simply was not +designed for dynamic configuration. So RandR came along, as a more powerful alternative (RandR 1.2 to be specific). It offers all of Xinerama’s possibilities and lots more. Using the RandR API @@ -38,17 +41,16 @@ workspaces to output names instead of some rather unreliable screen identifier As RandR has been around for about three years as of this writing, it seemed like a very good idea to us, and it still is a very good one. What we did not -expect, however, was the nVidia binary driver. It still does not support RandR -(as of March 2010), even though nVidia has announced that it will support RandR -eventually. What does this mean for you, if you are stuck with the binary -driver for some reason (say the free drivers don’t work with your card)? First -of all, you are stuck with TwinView and cannot use +xrandr+. While this ruins -the user experience, the more grave problem is that the nVidia driver not only -does not support dynamic configuration using RandR, it also does not expose -correct multi-monitor information via the RandR API. So, in some setups, i3 -will not find any screens; in others, it will find one large screen which -actually contains both of your physical screens (but it will not know that -these are two screens). +expect, however, was the nVidia binary driver. It did not support RandR until +mid 2012, even though nVidia had announced that it will support RandR +previously. What does missing RandR support mean for you? First of all, you are +stuck with TwinView and cannot use +xrandr+. While this ruins the user +experience, the more grave problem is that the nVidia driver not only does not +support dynamic configuration using RandR, it also does not expose correct +multi-monitor information via the RandR API. So, in some setups, i3 will not +find any screens; in others, it will find one large screen which actually +contains both of your physical screens (but it will not know that these are two +screens). For this very reason, we decided to implement the following workaround: As long as the nVidia driver does not support RandR, an option called diff --git a/docs/multi-monitor.html b/docs/multi-monitor.html index 81ba8ab..1de4193 100644 --- a/docs/multi-monitor.html +++ b/docs/multi-monitor.html @@ -4,7 +4,7 @@ - + i3: The multi-monitor situation @@ -30,8 +30,8 @@ window.onload = function(){asciidoc.footnotes(); asciidoc.toc(2);}