Dual-Head: Desktoperweiterung mit xrandr

xrandr (von „Resize and Rotate Extension“) dient zum Konfigurieren der angeschlossenen Bildschirme. Mit xrandr lässt sich X auch so konfigurieren, wie was bisher mit Xinerama erreicht wurde (Desktoperweiterung durch mehrere nebeneinandergestellte Monitore).

Ein Aufruf ohne Argumente liefert die Outputs und wählbare Modi. Auf meinem MacBook mit angeschlossenem TFT sieht das etwa so aus:

$ xrandr
Screen 0: minimum 320 x 200, current 2560 x 1024, maximum 2560 x 1024
VGA disconnected (normal left inverted right x axis y axis)
LVDS connected 1280x800+0+224 (normal left inverted right x axis y axis) 286mm x 179mm
   1280x800       59.9*+   60.0
   1280x768       60.0
[...]
TMDS-1 connected 1280x1024+1280+0 (normal left inverted right x axis y axis) 376mm x 301mm
   1280x800       60.0 +
   1280x1024      60.0*+   75.0     59.9     60.0*
TV disconnected (normal left inverted right x axis y axis)

TMDS-1 ist das externe Display, LVDS das integrierte (auch zu erkennen an den Auflösungen).

Die Konfiguration läuft nun z.B. so ab:
xrandr --output LVDS --mode 1280x800 --output TMDS-1 --off
…was das interne Display einschaltet und das externe deaktiviert, bzw. umgekehrt:
xrandr --output TMDS-1 --mode 1280x1024 --output LVDS --off

Mit --output wird also gewählt, was konfiguriert werden soll. Sollen mehrere Displays gleichzeitig konfiguriert werden, kann --output mehrmals angegeben werden, gefolgt von den entsprechenden Einstellungen (Rest siehe Manpage).

Soll der Desktop über beide Displays gehen, müssen beide Outputs aktiviert und ein entsprechender Versatz definiert werden:
xrandr --output LVDS --mode 1280x800 --pos 0x224 --output TMDS-1 --mode 1280x1024 --pos 1280x0
…hier ist es so, dass das Notebook links neben dem externen TFT steht und an dessen Unterkante ausgerichtet ist.

Damit das funktioniert, muss in der /etc/X11/xorg.conf in der entsprechenden Display-SubSection die virtuelle Auflösung definiert werden:

Section "Screen"
[...]
  SubSection "Display"
    [...]
    Virtual 2560 1024
  EndSubSection
EndSection

Damit diese Änderung wirksam wird, muss X neugestartet werden (also z.B. Abmelden und dann Ctrl+Alt+Backspace). Die ganzen Auflösungen müssen natürlich entsprechend der Displays angepasst werden.

Etwas bekloppt bei so Displays mit verschiedenen Vertikal-Auflösungen (bzw. unterschiedlichen Seitenverhältnissen) ist, dass es bei mir z.B. links oben einen Streifen von 1280×224 Pixeln gibt, der nicht benutzbar ist.

Bei manchen Anwendungen (irgendwelche Spiele), die im Vollbildmodus laufen und/oder versuchen von sich aus die Auflösungen zu verstellen kann es zu Problemen kommen. Da ist es meistens am sinnvollsten z.B. nur auf den externen Monitor umzuschalten.