ubuntuusers.de

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.

Wiki/Icons/2monitors.png 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:

  1. 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.

  2. 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

⚓︎

Diese Revision wurde am 13. Februar 2020 09:15 von Heinrich_Schwietering erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: dualhead, dualmonitor, xserver, Hardware, twinview, dualview, System, nvidia, xinerama, AMD, Beamer, Grafikkarten, Konfiguration