]> git.sur5r.net Git - i3/i3/blob - docs/multi-monitor
Merge i3bar into next
[i3/i3] / docs / multi-monitor
1 The multi-monitor situation
2 ===========================
3 Michael Stapelberg <michael+i3@stapelberg.de>
4 March 2010
5
6 …or: oh no, I have an nVidia graphics card!
7
8 == The quick fix
9
10 If you are using the nVidia binary graphics driver (also known as 'blob')
11 you need to use the +--force-xinerama+ flag (in your .xsession) when starting
12 i3, like so:
13
14 .Example:
15 ----------------------------------------------
16 exec i3 --force-xinerama -V >>~/.i3/i3log 2>&1
17 ----------------------------------------------
18
19 == The explanation
20
21 Starting with version 3.ε, i3 uses the RandR (Rotate and Resize) API instead
22 of Xinerama. The reason for this, is that RandR provides more information
23 about your outputs and connected screens than Xinerama does. To be specific,
24 the code which handled on-the-fly screen reconfiguration (meaning without
25 restarting the X server) was a very messy heuristic and most of the time did
26 not work correctly -- that is just not possible with the little information
27 Xinerama offers (just a list of screen resolutions, no identifiers for the
28 screens or any additional information). Xinerama simply was not designed
29 for dynamic configuration.
30
31 So RandR came along, as a more powerful alternative (RandR 1.2 to be specific).
32 It offers all of Xinerama’s possibilities and lots more. Using the RandR API
33 made our code much more robust and clean. Also, you can now reliably assign
34 workspaces to output names instead of some rather unreliable screen identifier
35 (position inside the list of screens, which could change, and so on…).
36
37 As RandR has been around for about three years as of this writing, it seemed
38 like a very good idea to us, and it still is a very good one. What we did not
39 expect, however, was the nVidia binary driver. It still does not support RandR
40 (as of March 2010), even though nVidia has announced that it will support RandR
41 eventually. What does this mean for you, if you are stuck with the binary
42 driver for some reason (say the free drivers don’t work with your card)? First
43 of all, you are stuck with TwinView and cannot use +xrandr+. While this ruins
44 the user experience, the more grave problem is that the nVidia driver not only
45 does not support dynamic configuration using RandR, it also does not expose
46 correct multi-monitor information via the RandR API. So, in some setups, i3
47 will not find any screens; in others, it will find one large screen which
48 actually contains both of your physical screens (but it will not know that
49 these are two screens).
50
51 For this very reason, we decided to implement the following workaround: As
52 long as the nVidia driver does not support RandR, an option called
53 +--force-xinerama+ is available in i3. This option gets the list of screens
54 *once* when starting, and never updates it. As the nVidia driver cannot do
55 dynamic configuration anyways, this is not a big deal.
56
57 == See also
58
59 For more information on how to use multi-monitor setups, see the i3 User’s
60 Guide.