Dualview
Archivierte Anleitung
Dieser Artikel wurde archiviert. Das bedeutet, dass er nicht mehr auf Richtigkeit überprüft oder anderweitig gepflegt wird. Der Inhalt wurde für keine aktuell unterstützte Ubuntu-Version getestet. Wenn du Gründe für eine Wiederherstellung siehst, melde dich bitte in der Diskussion zum Artikel. Bis dahin bleibt die Seite für weitere Änderungen gesperrt.
Anmerkung: Dieser Artikel enthält veraltete Informationen, z.B. zur Anwendung von Xinerama/Twin View die zur Unbrauchbarkeit des Desktops, speziell bei neueren Versionen, führen können. Selbiges gilt für die Empfehlung von xorg.conf, anstatt xorg.conf.d zu nutzen
Hinweis:
Bei Ubuntu-Versionen neuer als Hardy Heron 8.04 wird X am besten über RandR konfiguriert. RandR erkennt viele Monitore beim Anstecken an die Grafikkarte und passt die X-Konfiguration dynamisch an. Über RandR lässt sich auch die Auflösung der einzelnen Monitore sowie ein erweiterter Desktop konfigurieren.
Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:
Das Betreiben mehrerer Monitore gewinnt zunehmend auch außerhalb des professionellen Umfelds an Beliebtheit. Die Voraussetzungen sind leicht geschaffen: durch Anschaffung neuer Hardware fristen ausrangierte Monitore oft ein Kellerdasein und die Mehrheit der in den letzten Jahren erhältlichen Grafikkarten verfügt über zwei Grafikausgänge. Auch an Notebooks lässt sich meist ein externer Monitor anschließen.
In diesem Artikel geht es um das allgemeine Vorgehen zur Einrichtung des XServers mit mehreren Monitoren. Ob dies technisch möglich ist, sollte man gegebenenfalls vorher in Erfahrung bringen.
Experimentieren¶
Bei der Ersteinrichtung wird man nicht unbedingt auf Anhieb eine funktionierende Konfiguration erhalten, neben falschen Einstellungen sind oft einfache Tippfehler die Ursache. Hat man eine funktionierende Konfiguration, kann man trotzdem weitere Möglichkeiten ausprobieren.
Hinweis:
Zur besseren Übersicht sollte man den Dateien eindeutige Namen zuweisen, z.B. /etc/X11/xorg.conf.original oder /etc/X11/xorg.conf.xinerama. So lässt sich eine andere/funktionierende Konfiguration schnell wieder herstellen.
Falls X (= die grafische Oberfläche) nach den Änderungen nicht mehr starten sollte, wechselt man auf eine virtuelle Konsole (z.B. Strg + Alt + F1 , loggt sich dort ein und stellt ein Backup oder eine andere Konfiguration der xorg.conf wieder her:
sudo cp /etc/X11/xorg.conf.backup /etc/X11/xorg.conf
Mit Strg + Alt + F7 kehrt man auf den normalen Desktop zurück. Dann kann man den XServer erneut starten. Alternativ zur virtuellen Konsole kann man auch den Recovery Modus booten, das hat aber keinen Vorteil.
Ein Desktop oder zwei Desktops?¶
Generell will man eine der beiden folgenden Szenarios erreichen:
Ein zusammenhängender Desktop mit einem Hintergrundbild, auf dem sich Fenster beliebig zwischen den Monitoren verschieben lassen. Diese Konfiguration wird nicht von allen Grafikchips und Treibern unterstützt.
Zwei voneinander unabhängige Desktops, auf denen jeweils ein XServer läuft. Diese Konfiguration ermöglicht auch das Betreiben der Monitore mit unterschiedlichen Auflösungen. Der Nachteil besteht darin, dass man keine Programmfenster zwischen den Desktops verschieben kann. Geeignet ist diese Konfiguration abseits persönlicher Präferenzen besonders für Notebooks, die nicht permanent mit einem externen Monitor verbunden sind.
Folgende Modi stehen zur Verfügung:
Unabhängige Desktops¶
Zwei unabhängige Desktops, auf denen jeweils ein XServer läuft, ist die einfachste Konfiguration von Dualview. Dieser Modus sollte von allen Treibern unterstützt werden. Es ist nicht möglich, Fenster zwischen den Desktops zu verschieben. Es lassen sich Monitore mit verschiedenen Auflösungen und Farbtiefen verwenden, die hardwaregestützte 3D-Beschleunigung funktioniert.
Xinerama¶
Dieser Modus vereint die einzelnen Desktops zu einem großen, somit lassen sich auch Fenster verschieben. Wie bei der Variante zuvor können verschiedene Auflösungen genutzt werden. Programmfenster werden beim Maximieren nicht auf die volle Breite des gesamten Desktops vergrößert, sondern bleiben innerhalb eines Monitors. Allerdings muss man hier auf die 3D-Beschleunigung verzichten. Xinerama wird von den meisten Grafikkarten und Treibern unterstützt. Der Desktophintergrund erstreckt sich über beide Monitore, bei verschiedenen Auflösungen ist der untere Bildbereich auf dem Desktop mit der niedrigeren Auflösung nicht sichtbar.
Merged Framebuffer¶
Die andere Form des Bigdesktops ist MergedFB. Der Vorteil gegenüber Xinerama ist die Unterstützung der 3D-Beschleunigung, beim Maximieren von Programmen werden diese allerdings über die volle Breite des Desktops vergrößert. Dieser Modus funktioniert nur mit Open-Source-Grafiktreibern (mga, ati).
TwinView¶
Dies ist ein nVidia-spezifischer, optimierter MergedFB-Modus, er funktioniert jedoch nicht mit dem nv-Treiber, sondern nur mit dem nvidia-Treiber. Es lassen sich Fenster verschieben und die 3D-Beschleunigung nutzen. Wie im Xinerama-Modus erstreckt sich der Desktophintergrund über beide Monitore, bei verschiedenen Auflösungen kann man wählen, welcher Bildbereich auf dem Desktop mit der niedrigeren Auflösung nicht sichtbar sein soll. Dies geht am besten, wenn man im Programm Nvidia-Settings unter dem Punkt "X Server Display Configuration" die Monitore wie gewünscht anordnet. Danach auf "Save to X Configuration File" klicken und dann auf "Show Preview". Die entsprechende Geometrie ist in der Section "Screen" unter der Option "metamodes" gesichert. Diese Zeile kann man dann einfach in die für Twinview schon korrekt konfigurierte eigene xorg.conf kopieren.
Einrichtung¶
Grafische Einrichtungstools¶
Der XServer muss nicht zwangsläufig direkt in der Konfigurationsdatei angepasst werden. Es stehen verschiedene Tools mit grafischer Oberfläche zur Verfügung. Eine Übersicht gibt es unter XServer grafisch einrichten. Auch bei der Verwendung von grafischen Tools sollte ein Backup der /etc/X11/xorg.conf angelegt werden.
Einstellungen in KDE¶
Man kann den Dualscreen-Modus einfach in den Systemeinstellungen aktivieren:
"K-Menü" → "Systemeinstellungen" → "Anzeige & Monitor" .
Hier lassen sich Auflösung, Ausrichtung und Position (links, rechts, oben, unten) der verschiedenen Bildschirme und auch von Overhead- Projektoren einstellen. Außerdem können hier die Einstellungen als Standard gespeichert werden. Dies funktioniert bei ATI-Grafikkarten jedoch nur bei Verwendung des freien radeon- Treibers.
AMD-Grafikkarte mit fglrx-Treiber¶
Verwendet man den proprietären fglrx- Treiber, muss man auf das AMD Catalyst Control Center zurückgreifen. Auch hier können die entsprechenden Einstellungen vorgenommen werden, was aber unter Umständen das Neustarten des PCs erfordert.
Man kann den fglrx-Treiber mit folgender Option auch bereits im Dualview-Modus starten:
sudo aticonfig --initial=dual-head --screen-layout=right
Anschließend muss der XServer neu gestartet werden.
Editieren der xorg.conf¶
Wer wissen will, was man eigentlich genau konfiguriert, oder wem kein grafisches Tool zur Verfügung steht, oder wer mit diesen keine zufriedenstellende Konfiguration erzielt, kann die Konfiguration auch gänzlich von Hand vornehmen. Beginnen sollte man mit einer funktionierenden Konfiguration, zusätzliche Optionen sollten ausgeschaltet werden, so kann man bei auftretenden Fehlern die Ursache besser ermitteln.
Dazu öffnet man die Datei /etc/X11/xorg.conf mit einem Editor [3] mit Root-Rechten. Änderungen werden erst nach einem Neustart des XServers wirksam ( Strg + Alt + ⌫ oder über das Menü im Anmeldefenster). Bei der Fehlersuche hilft auch die Logdatei des XServers, zu finden unter /var/log/Xorg.0.log.
Modifikation der xorg.conf¶
In den Ausschnitten der xorg.conf wird von folgender verwendeter Hardware ausgegangen:
Grafikkarte: nVidia GeForce 4 MX 440 mit 2 DVI-Ausgängen
Primärer Monitor: 17" TFT (NEC AccuSync LCD-71VM), maximale Auflösung 1280x1024
Sekundärer Monitor: 15" CRT (Belinea Mod.Nr. 105035), maximale Auflösung 1024x768
Zwei unabhängige Desktops¶
Zuerst richtet man die beiden Monitore ein. Die relevanten Sections in der xorg.conf sind Device
, Monitor
und Screen
. Für jeden Monitor muss von diesen Sections jeweils eine vorhanden sein. Wichtig ist dabei die unterschiedliche Bezeichnung, das heißt, die Identifier dürfen nicht gleich sein. Das folgende Beispiel sind die Sections für zwei Monitore an einer nVidia-Grafikkarte:
####### primärer Monitor ###### Section "Monitor" Identifier "NEC LCD71VM" HorizSync 28.0 - 64.0 VertRefresh 43.0 - 60.0 Option "DPMS" EndSection Section "Device" Identifier "NVIDIA Corporation NV18 [GeForce4 MX 440 AGP 8x]-0" Driver "nvidia" BusID "PCI:1:0:0" Screen 0 EndSection Section "Screen" Identifier "TFT" Device "NVIDIA Corporation NV18 [GeForce4 MX 440 AGP 8x]-0" Monitor "NEC LCD71VM" DefaultDepth 24 SubSection "Display" Depth 24 Modes "1280x1024" EndSubSection EndSection ####### sekundärer Monitor ###### Section "Monitor" Identifier "Belinea 105035" HorizSync 28-49 VertRefresh 43-72 Option "DPMS" EndSection Section "Device" Identifier "NVIDIA Corporation NV18 [GeForce4 MX 440 AGP 8x]-1" Driver "nvidia" BusID "PCI:1:0:0" Screen 1 EndSection Section "Screen" Identifier "CRT" Device "NVIDIA Corporation NV18 [GeForce4 MX 440 AGP 8x]-1" Monitor "Belinea 105035" DefaultDepth 24 SubSection "Display" Depth 24 Modes "1024x768" "800x600" "640x480" EndSubSection EndSection
Dann muss die Section "ServerLayout"
folgendermaßen angepasst werden (analog zum obigen Beispiel):
Section "ServerLayout" Identifier "Default Layout" Screen 0 "TFT" 0 0 Screen 1 "CRT" LeftOf "TFT" InputDevice "Generic Keyboard" InputDevice "Configured Mouse" EndSection
Xinerama¶
Um diesen Modus zu nutzen, richtet man zunächst wie zuvor beschrieben zwei Desktops ein. Dann ergänzt man die Section "ServerLayout"
um folgende Zeile:
Option "Xinerama" "true"
Sollte das Problem auftreten, dass man zwar alle Anwendungen, aber kein Terminal mehr öffnen kann, hilft die Erweiterung um folgende Zeile in Section "Screen"
(in beiden):
Option "AddARGBGLXVisuals" "true"
Merged Framebuffer¶
Bei diesem Modus wird, ausgehend von einer Ein-Monitor-Konfiguration, nur die Section "Screen"
bearbeitet. Das obige Beispiel würde etwa so aussehen:
Section "Screen" Identifier "TFT" Device "NVIDIA GeForce4 440 MX" Monitor "TFT" Option "MergedFB" "true" Option "Monitor2Position" "LeftOf" Option "MetaModes" "1280x1024-1280x1024 1280x1024" # jeweilige Einzelaufloesung Monitor1-Monitor2 # 2. Monitor Option "Monitor2HSync" "30-80" Option "Monitor2VRefresh" "50-75" DefaultDepth 16 SubSection "Display" Virtual 2560 1024 # maximale Auflösung des gesamten Desktops Depth 16 Modes "1280x1024" EndSubSection EndSection
Twinview¶
In der Device-Section¶
Ausgehend von einer Konfiguration mit einem Monitor wird die Section "Device"
editiert,
Section "Device" Identifier "NVIDIA Corporation NV18 [GeForce4 MX 440 AGP 8x]" Driver "nvidia" BusID "PCI:1:0:0" Option "TwinView" Option "MetaModes" "1280x1024,1024x768; 1280x1024; 1024x768,1024x768; 1024x768; 800x600,800x600; 800x600" Option "TwinViewOrientation" "LeftOf" Option "SecondMonitorHorizSync" "UseEdidFreqs" Option "SecondMonitorVertRefresh" "UseEdidFreqs" EndSection
In der Screen-Section¶
Alternativ kann man die Optionen auch in der Section "Screen"
aktvieren. Im folgenden Beispiel sieht die ursprüngliche Version so aus:
Section "Screen" Identifier "Default Screen" Device "NVIDIA Corporation NV34 [GeForce FX 5200]" Monitor "NEC LCD1525V" DefaultDepth 24 SubSection "Display" Depth 24 Modes "1280x1024" "1024x768" "800x600" "640x480" EndSubSection EndSection
Im Twinview-Modus sieht der Abschnitt nun folgendermaßen aus:
Section "Screen" Identifier "Default Screen" Device "NVIDIA Corporation NV34 [GeForce FX 5200]" Monitor "NEC LCD1525V" DefaultDepth 24 Option "TwinView" "true" Option "SecondMonitorHorizSync" "30-84" Option "SecondMonitorVertRefresh" "56-76 Option "MetaModes" "1280x1024, 1280x1024; 1280x1024, 1280x1024" Option "TwinViewOrientation" "RightOf" SubSection "Display" Depth 24 Modes "1280x1024" "1024x768" "800x600" "640x480" EndSubSection EndSection
Vollbild für Spiele¶
Nutzt man TwinView hat man bei Spielen das Problem, dass diese nicht im Vollbild laufen. Dies kann man beheben, in dem man entsprechende Metamodes anlegt. Zum Beispiel einen Metamode, in dem einer der beiden Monitore kurzzeitig deaktiviert wird. Zwischen diesen Metamodes kann man ohne Neustart wechseln. In einem Setup, bei dem links ein alter Monitor der Größe 1280x1024 und rechts ein neuerer TFT der Größe 1680x1050 steht, würde die Screen-Sektion einer automatisch generierten xorg.conf (durch nvidia-settings) ungefähr so aussehen:
1 2 3 4 5 6 7 8 9 10 11 12 | Section "Screen" Identifier "Screen0" Device "Device0" Monitor "Monitor0" DefaultDepth 24 Option "TwinView" "1" Option "TwinViewXineramaInfoOrder" "DFP-0" Option "metamodes" "CRT: nvidia-auto-select +0+0, DFP: nvidia-auto-select +1280+0" SubSection "Display" Depth 24 EndSubSection EndSection |
Auflösungen sind hier anders als weiter oben beschrieben nicht gesondert definiert. Darum kümmert sich der Treiber. Dem einzigen metamode fügt man nun einen weiteren hinzu (durch Semikolon getrennt), bei dem der nicht zu benutzende Monitor einfach durch NULL ersetzt wird.
1 | Option "metamodes" "CRT: nvidia-auto-select +0+0, DFP: nvidia-auto-select +1280+0;NULL,DFP:nvidia-auto-select" |
Nach einem Neustart des X-Servers (bspw. durch sudo restart gdm) kann man nun die Metamodes mit der Tastenkombination Strg + Alt + + wechseln. Die Größe des virtuellen Desktops bleibt dabei erhalten, so dass nicht alle Desktopsymbole verschoben werden.
Achtung!
Sync- und Refresh-Werte müssen an die tatsächlichen Werte des Monitors angepasst werden, falls man nicht die automatische Erkennung mittels der Option UseEdidFreqs
wählt.
Falsche Angaben bei den Frequenzwerten können den Monitor zerstören. Unbedingt das Monitor-Handbuch konsultieren!
Hinweis:
Um Twinview richtig nutzen zu können, darf das Paket xserver-xgl nicht installiert sein.
Mehrere Konfigurationen auf einem System verwenden¶
Dieser Punkt dürfte vor allem für Notebook-Besitzer interessant sein. Mit verschiedenen Konfigurationen lässt sich je nach Situation das System mit der jeweils geeigneten hochfahren. Einsatzzwecke sind zum Beispiel
Mobiler Betrieb: nur ein Display verfügbar, kein Dualview möglich
Anschluss eines externen Monitors oder Beamers: erweiterter Desktop erwünscht
Auswahl per GRUB-Menü¶
Mit ein wenig Handarbeit kann man mit Hilfe von Bootoptionen die Einträge im Standard-Bootloader Archiv/GRUB so einrichten, dass die gewünschte Konfiguration geladen wird.
Den XServer manuell starten¶
Bei einem auf die Serverinstallation basierenden System wird zunächst keine grafische Obrfläche installiert. Belässt man es nun bei einer grafischen Oberfläche ohne einen Login-Manager (GDM/Archiv/KDM/XDM), startet man den XServer mit dem Befehl [2]
startx
Nun bietet startx
viele Optionen, darunter hat man die Möglichkeikeit, eine bestimmte definierte Section "ServerLayout"
zu laden. Das oben verwendete Beispiel sieht nun folgendermaßen aus:
Section "Files" FontPath "/usr/share/X11/fonts/misc" FontPath "/usr/share/X11/fonts/cyrillic" FontPath "/usr/share/X11/fonts/100dpi/:unscaled" FontPath "/usr/share/X11/fonts/75dpi/:unscaled" FontPath "/usr/share/X11/fonts/Type1" FontPath "/usr/share/X11/fonts/100dpi" FontPath "/usr/share/X11/fonts/75dpi" FontPath "/usr/share/fonts/X11/misc" FontPath "/var/lib/defoma/x-ttcidfont-conf.d/dirs/TrueType" FontPath "/usr/share/X11/fonts/75dpi" FontPath "/usr/share/fonts/X11/misc" FontPath "/var/lib/defoma/x-ttcidfont-conf.d/dirs/TrueType" EndSection Section "Module" Load "bitmap" Load "ddc" Load "dri" Load "extmod" Load "freetype" Load "glx" Load "int10" Load "type1" Load "vbe" EndSection Section "InputDevice" Identifier "Generic Keyboard" Driver "kbd" Option "CoreKeyboard" Option "XkbRules" "xorg" Option "XkbModel" "pc105" Option "XkbLayout" "de" Option "XkbVariant" "nodeadkeys" Option "XkbOptions" "lv3:ralt_switch" EndSection Section "InputDevice" Identifier "Configured Mouse" Driver "mouse" Option "CorePointer" Option "Device" "/dev/input/mice" Option "Protocol" "ExplorerPS/2" Option "ZAxisMapping" "4 5" Option "Emulate3Buttons" "true" EndSection Section "ServerFlags" Option "DefaultServerLayout" "twinview" EndSection Section "Monitor" Identifier "NEC" Option "DPMS" HorizSync 28-64 VertRefresh 43-60 EndSection #-------- Single View ----------------------------------- Section "ServerLayout" Identifier "single" Screen "Screen (Single)" InputDevice "Generic Keyboard" InputDevice "Configured Mouse" EndSection Section "Screen" Identifier "Screen (Single)" Device "NVIDIA (Single)" Monitor "NEC" DefaultDepth 24 SubSection "Display" Depth 24 Modes "1280x1024" EndSubSection EndSection Section "Device" Identifier "NVIDIA (Single)" Driver "nvidia" BusID "PCI:1:0:0" EndSection #-------- Single View ----------------------------------- #-------- Twinview --------------------------------- Section "ServerLayout" Identifier "twinview" Screen "Screen (TwinView)" InputDevice "Generic Keyboard" InputDevice "Configured Mouse" EndSection Section "Screen" Identifier "Screen (TwinView)" Device "NVIDIA (TwinView)" Monitor "NEC" DefaultDepth 24 SubSection "Display" Depth 24 Modes "1280x1024" EndSubSection EndSection Section "Device" Identifier "NVIDIA (TwinView)" Driver "nvidia" BusID "PCI:1:0:0" Option "TwinView" "True" Option "MetaModes" "1280x1024, 1024x768; " Option "TwinViewOrientation" "LeftOf" Option "SecondMonitorHorizSync" "30-69" Option "SecondMonitorVertRefresh" "50-120" Option "ConnectedMonitor" "CRT, CRT" EndSection #-------- Twinview ---------------------------------
Erläuterung dazu: Es werden zwei Szenarien konfiguriert. Beim ersten (Single View) wird nur der primäre Monitor angesprochen, beim zweiten werden beide Monitore im TwinView-Modus betrieben.
Gestartet wird X dann je nach Wahl mit einem dieser beiden Befehle:
startx -- -layout single startx -- -layout twinview
Tipps zum Umgang mit unabhängigen Desktops¶
Programme von einem Desktop aus auf anderem starten¶
Verwendet man zwei oder mehr unabhängige Desktops, so kann man trotzdem Programme von einem Desktop aus auf einem anderen starten. Dazu setzt man beim Aufruf des Programms die Umgebungsvariable DISPLAY
. [6]
Beispiel:
DISPLAY=:0.1 firefox
Dateien aus einem Dateimanager heraus auf einem anderen Desktop zu öffnen¶
Man kann dieses kleine Skript benutzen, um Dateien aus einem Dateimanager heraus auf einem anderen Desktop zu starten. Dazu mit Root-Rechten im Ordner /usr/local/bin zum Beispiel die Datei screen1 mit folgendem Inhalt anlegen:
#!/bin/bash DISPLAY=:0.1 "$@"
Dabei muss :0.1
gegebenenfalls durch das ersetzt werden, was
echo $DISPLAY
auf dem Desktop, auf den das Skript die Programme leiten soll, ausgibt.
Nun kann man in einem Dateimanagern "Rechtsklick → Mit anderer Anwendung öffnen..." durchführen und dann als Programm
screen1 Programm
angeben. Eine Bilddatei könnte zum Beispiel wie folgt mit "Eye of Gnome" geöffnet werden:
screen1 eog
Links¶
FAQ Error Messages - FAQ zu Fehlermeldungen im X.org-Wiki 🇬🇧
X.Org-Wiki - Einrichten von Dualview 🇬🇧
HowTo RandR 1.2 im Debian Wiki 🇬🇧
Xorg RandR 1.2 ab Ubuntu Gutsy 🇬🇧