Files
contrib
debian
docs
GPN-2009-06-27
NoName-2009-03-12
slides-2012-01-25
slides-2012-03-16
Makefile
asciidoc-git.conf
bigpicture.png
bigpicture.xcf
debugging
docs.mk
hacking-howto
i3-pod2html
i3-sync-working.dia
i3-sync-working.png
i3-sync.dia
i3-sync.png
i3bar-protocol
ipc
keyboard-layer1.png
keyboard-layer1.svg
keyboard-layer2.png
keyboard-layer2.svg
layout-saving
layout-saving-1.png
logo-30.png
modes.png
multi-monitor
refcard.html
refcard_style.css
single_terminal.png
snapping.png
stacklimit.png
testsuite
tree-layout1.png
tree-layout2.png
tree-shot1.png
tree-shot2.png
tree-shot3.png
tree-shot4.png
two_columns.png
two_terminals.png
userguide
wsbar
wsbar.dia
wsbar.png
i3-config-wizard
i3-dump-log
i3-input
i3-msg
i3-nagbar
i3bar
include
libi3
man
parser-specs
src
testcases
.clang-format
.gitignore
.travis.yml
CONTRIBUTING.md
DEPENDS
LICENSE
Makefile
PACKAGE-MAINTAINER
RELEASE-NOTES-4.10.2
common.mk
generate-command-parser.pl
i3-dmenu-desktop
i3-migrate-config-to-v4
i3-save-tree
i3-sensible-editor
i3-sensible-pager
i3-sensible-terminal
i3-with-shmlog.xsession.desktop
i3.applications.desktop
i3.config
i3.config.keycodes
i3.xsession.desktop
logo.svg
pseudo-doc.doxygen
release.sh
i3/docs/multi-monitor

68 lines
3.3 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

The multi-monitor situation
===========================
Michael Stapelberg <michael@i3wm.org>
April 2013
Please upgrade your nVidia driver to version 302.17 or newer and i3 will just
work. This document is kept around for historic reasons only.
== The quick fix
If you are using the nVidia binary graphics driver (also known as 'blob')
before version 302.17, you need to use the +--force-xinerama+ flag (in your
.xsession) when starting i3, like so:
.Example:
----------------------------------------------
exec i3 --force-xinerama -V >>~/.i3/i3log 2>&1
----------------------------------------------
…or use +force_xinerama yes+ in your configuration file.
== 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.
So RandR came along, as a more powerful alternative (RandR 1.2 to be specific).
It offers all of Xineramas possibilities and lots more. Using the RandR API
made our code much more robust and clean. Also, you can now reliably assign
workspaces to output names instead of some rather unreliable screen identifier
(position inside the list of screens, which could change, and so on…).
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 dont 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).
For this very reason, we decided to implement the following workaround: As
long as the nVidia driver does not support RandR, an option called
+--force-xinerama+ is available in i3 (alternatively, you can use the
+force_xinerama+ configuration file directive). This option gets the list of
screens *once* when starting, and never updates it. As the nVidia driver cannot
do dynamic configuration anyways, this is not a big deal.
Also note that your output names are not descriptive (like +HDMI1+) when using
Xinerama, instead they are counted up, starting at 0: +xinerama-0+, +xinerama-1+, …
== See also
For more information on how to use multi-monitor setups, see the i3 Users
Guide.