Doppelbilder

Mit RandR Beamer und Monitore steuern

Noch vor nicht allzu langer Zeit mussten sich Referenten vor jeder Präsentation darüber Gedanken machen, ob der Beamer vor Ort wohl mit Linux zusammenarbeiten würde. Oft tat er das nicht, und die resultierenden Probleme führten bei vielen Vorträgen zu nervenaufreibenden und zeitraubenden Neustarts, bis der X-Server ein Bild auf den Beamer zauberte. Konferenzveranstalter forderten gewohnheitsmäßig die Referenten explizit auf, die Beamer-Ansteuerung unter Linux vorher zu testen. Auch zu Hause war es oft alles andere als einfach, Bildschirmeinstellungen zu ändern.

Treiberfrage

Inzwischen setzt glücklicherweise die X-Server-Erweiterung RandR ("X Resize and Rotate", [1]) so gut wie allen Problemen im Zusammenhang mit der Konfiguration des Monitors ein Ende. Die Fähigkeiten von RandR reichen vom simplen Ändern der Auflösung ("resize") über Rotierungsmöglichkeiten ("rotate", auch im Zusammenhang mit der Pivot-Funktion einiger Monitore oder Tablet-PCs) bis hin zum Betrieb mehrerer Bildschirme an einem PC – entweder im Klon-Modus oder als Erweiterung des Desktops.

Damit RandR funktioniert, benötigt es die Unterstützung des Grafikkartentreibers. Allerdings weigern sich die Hersteller der verbreitetsten Closed-Source-Treiber, Nvidia und AMD/ATI, RandR zu unterstützen. Sie bieten lieber eigene, zu RandR inkompatible Lösungen an. Doch die freien X.org-Treiber intel, radeon (für ATI-Boards) und nv (für Nvidia-Grafikkarten) eignen sich mittlerweile durchaus für den Produktiveinsatz. Möchten Sie wegen der besseren 3D-Leistung nicht auf die proprietären Treiber verzichten, bietet es sich an, einfach beide Treiber-Varianten zu installieren und je nach Verwendungszweck zwischen ihnen zu wechseln.

Alles im Griff

Um RandR zu steuern, stehen verschiedene Frontends zur Auswahl. Das einfachste, das alle Features von RandR unterstützt, ist das Kommandozeilenprogramm xrandr[2]. Die meisten Distributionen installieren XRandR bereits als Teil des Standardumfangs. Wo das nicht der Fall ist, liegt das Tool auf jeden Fall im Repository und lässt sich über die Paketverwaltung nachziehen. Nach der Installation können Sie XRandR sofort benutzen. Mittels

$ xrandr --query

lassen Sie sich den aktuellen Ausgabestatus ihrer Grafikkarte anzeigen. So erhalten Sie unter anderem die Information, welche Ausgabe-Ports zum Einsatz kommen (DVI, VGA, HDMI oder LVDS) und welche Auflösungen das jeweilige Ausgabegerät unterstützt. In der Auflistung markiert XRandR die zurzeit benutzte Auflösung und Bildwiederholrate mit einem Sternchen, die native Auflösung erkennen Sie an einem Pluszeichen (Abbildung 1).

Abbildung 1

Abbildung 1: Mit dem Kommando xrandr --query fördern Sie Informationen über alle angeschlossenen Monitore zutage.

Um ein Gefühl für XRandR zu bekommen, beginnen Sie am besten damit, die Auflösung des Monitors kurzzeitig zu ändern. Geben Sie dazu

$ xrandr --output LVDS --mode 800x600

ein, wobei Sie LVDS durch den von xrandr --query als verbunden (connected) angezeigten Port ersetzen und 800x600 durch eine der als verfügbar aufgelisteten Auflösungen.

Für den Schritt zurück zu Ihrer alten Auflösung gibt es zwei Wege: Entweder wiederholen Sie den Aufruf und ersetzen 800x600 durch die vorherige Auflösung, oder Sie benutzen den Befehl

xrandr --output LVDS --auto

Er setzt den Monitor in seine native Auflösung und Bildwiederholrate zurück. Apropos Bildwiederholrate: Diese setzen Sie mit dem Kommando

$ xrandr --output LVDS --rate 60

setzen, wobei auch hier 60 durch eine tatsächlich von XRandR als verträglich angezeigte Wiederholrate ersetzen.

Beamer anschließen

Einen der angenehmsten Vorteile von RandR stellt dar, dass sich Beamer, die das gleiche Bild zeigen sollen wie der Monitor, problemlos und ohne Neustart des X-Servers einrichten lassen. Das selbe funktioniert übrigens auch mit gewöhnlichen Monitoren oder Fernsehern, sollten Sie einmal in die Verlegenheit kommen. Schließen Sie den Beamer an den DVI- oder VGA-Ausgang an und führen Sie erneut xrandr --query aus. Beide Ausgabegeräte sollten nun als verbunden angezeigt werden.

Damit der Klon-Modus sinnvoll funktioniert, müssen Sie eine Auflösung finden, die beide Geräte unterstützen. Im Zusammenspiel mit Beamern kommen dafür in den meisten Fällen Auflösungen von 1024 x 768 oder 800 x 600 Pixeln infrage. Auf einem 16:10-Notebook-Display erscheint das Bild dann zwar verzerrt – aber das sehen die Zuhörer ja nicht. Mit dem Befehl

$ xrandr --output VGA --mode 1024x768 --same-as LVDS --output LVDS --mode 1024x768

schalten Sie die Ausgänge VGA und LVDS in den Klon-Modus bei einer Auflösung von 1024 x 768 Pixeln. Würden Sie unterschiedliche Auflösungen angeben, erschiene auf dem niedriger auflösenden Gerät (im Regelfall der Beamer) nur die obere, linke Ecke der Bildschirmausgabe. Um den Beamer wieder abzuschalten, gehen Sie wie folgt vor:

$ xrandr --output VGA --off
$ xrandr --output LVDS --auto

Mit den Befehlen, die Sie mittlerweile kennengerlernt haben, schalten Sie bei Bedarf auch den internen Bildschirm ab und nutzen nur einen externen Monitor:

xrandr --output LVDS --off --output VGA --auto

Wie sie vielleicht schon bemerkt haben, beginnt jeder Befehl mit dem Parameter --output, gefolgt von weiteren (optionalen) Parametern. Den letzten Befehl könnte Sie auch in Form zweier getrennter Kommandos absetzen:

$ xrandr --output LVDS --off
$ xrandr --output VGA --auto

Allerdings stehen Sie dann nach dem ersten Befehl mit einem schwarzen Monitor da und müssen den zweiten blind eingeben. Deshalb erlaubt XRandR auch das Zusammenfassen von Befehlen.

Multi Head

RandR kann die meisten älteren Möglichkeiten zur Kombination mehrerer Monitore abzulösen, wie etwa TwinView, MergedFB und vor allen Dingen Xinerama. Eigentlich tut RandR dabei nichts anderes, als zwei Monitore zu einem großen Display zu verschalten. Zwei Monitore mit einer Auflösung von 1280 x 1024 kombiniert es zu einem großen Bildschirm mit 2560 x 1024 Pixeln. Fällt die vertikale Auflösung beider Monitore unterschiedlich aus, wählt RandR die größere der beiden als vertikale Auflösung des virtuellen Displays. Beim kleineren der beiden Monitore entsteht aus diesem Grund ein nicht sichtbarer Bereich quasi "unterhalb" des Bildschirms (Abbildung 2).

Abbildung 2

Abbildung 2: RandR fasst zwei unterschiedlich große Monitore zu einem zusammen. "Unterhalb" des kleineren der beiden entsteht ein nicht sichtbarer Bereich.

Die möglichen Auflösungen des virtuellen Displays zeigt XRandR bei einer Anfrage mit --query in der ersten Zeile an. Dort sehen Sie Angaben zur minimalen, aktuellen (current) und maximalen Größe. Je nach Distribution kann die maximale Auflösung zu klein ausfallen, um zwei Monitore in ihrer jeweils höchster Auflösung nebeneinander zu betreiben. Gegebenenfalls korrigieren Sie den Wert durch einen einmaligen Neustart des X-Servers nach oben. Dazu tragen Sie die höchste, addierte Auflösung der beiden Monitore in Form einer Zeile nach dem Schema Virtual 2560 1024 in die SubSection "Display" der /etc/X11/xorg.conf ein. Haben Sie die maximale Größe des virtuellen Bildschirms eingestellt und zeigt xrandr --query sie auch an, fassen Sie beide Monitore einem Befehl nach folgendem Muster zusammen:

$ xrandr --output LVDS --auto –left-of VGA --output VGA --auto

LVDS und VGA müssen Sie hier durch die tatsächlichen Ausgabe-Ports ersetzen – das könnten zum Beispiel HDMI-1, HDMI-2, DVI oder auch VGA sein. Steht der zu erst genannte Monitor (in diesem Fall LVDS) physikalisch rechts, ersetzen Sie --left-of durch --right-of oder vertauschen die Reihenfolge der Ports im Befehl. Statt --auto für die native Auflösung bauen Sie mit --mode bei Bedarf auch eine andere Auflösung in den Befehl ein.

RandR und die Fenster

Ein großes virtuelles Display – das klingt zunächst, als ob maximierte Fenster oder auch die Startleiste über beide Bildschirme gestreckt werden oder im schlimmsten Fall sogar im nicht sichtbaren Bereich unter dem kleineren Monitor verschwinden. Dieses Verhalten zu verhindern beziehungsweise kontrollierbar zu machen, ist Aufgabe des Windowmanagers (Kwin für KDE, Metacity für Gnome). RandR teilt dem Windowmanager über das Xinerama-Protokoll mit, wo auf dem virtuellen Display sich die Grenzen der physikalischen Monitore befinden. Was der Windowmanager in der Praxis damit anfängt, hängt von der jeweiligen Konfiguration ab.

In der Regel erstreckt sich die normale Arbeitsfläche inklusive des Desktophintergrunds über beide Bildschirme. Fenster lassen sich beliebig zwischen den beiden Monitoren verschieben. Erst wenn Sie ein Fenster maximieren, wird es auf eines der beiden Displays beschränkt (Abbildung 3). Auch die Startleiste erscheint nur auf einem der beiden Bildschirme – auf welchem, das lässt sich oft nicht einstellen. Hier müssen die Entwickler die Windowmanager noch nachbessern.

Abbildung 3

Abbildung 3: Der Windowmanager steuert, wie Fenster maximiert werden und an welcher Stelle die Startleiste erscheint. Das linke Fenster ist auf dem kleineren Monitor maximiert – der Screenshot reproduziert den auf dem Bildschirm unsichtbaren Bereich darunter.

Rotieren

Verwenden Sie einen Monitor, dessen Bild sich um 90 Grad drehen lässt, rotieren Sie die Ausgabe bei Bedarf mit dem Befehl

$ xrandr --output LVDS --rotate left

Das funktioniert auch auf Tablet-PCs oder ähnlichen Geräten (Abbildung 4). Beachten Sie dabei, dass dazu vertikale Auflösung des virtuellen Displays der horizontalen Auflösung des Monitors entsprechen muss und umgekehrt.

Abbildung 4

Abbildung 4: Speziell beim Surfen im Web bietet ein um 90 Grad gedrehtes Display deutlich mehr Überblick.

Tip a friend    Druckansicht beenden Bookmark and Share
Kommentare
Hmm
Py Coder, Freitag, 12. Juni 2009 21:59:36
Ein/Ausklappen

Ist das ned bisschen umständlich wenn man das gleiche per Frontend in KDE/Gnome machen kann? :)


Bewertung: 155 Punkte bei 14 Stimmen.
Den Beitrag bewerten: Gut / Schlecht