Home IT-Service Linux Multi-Monitorbetrieb
Multi-Monitor Betrieb

Problem

Wer sein Notebook (hier das Dell Inspiron 9300) mal mit und mal ohne externen Monitor betreibt der braucht wahrscheinlich zwei verscheidene Auflösungen, in diesesm Beispiel 1920x1200 für das Dell Inspiron 9300 und 1280x1024 für den Acer AL1715. Dies kann man nun immer per Hand mit Hilfe von STRG-ALT-NUM+ bzw. NUM- ändern, man kann aber auch dank ACPI dafür sorgen, das X automatisch in der enstprechenden Auflösung startet. Egal ob man es über startx oder mit Hilfe des xdm (oder kdm, gdm etc.) startet.

Lösung

Wir legen einfach folgendes an:

  1. eine zweite Monitor-Sektion
  2. eine zweite Screen-Sektion
  3. eine zweite Modes-Sektion
  4. eine zweite ServerLayout-Sektion

Danach ruft man dann startx mit einem Parameter auf um die gewünsche Auflösung zu erhalten. Dies ist nun nicht gerade komfortabel, daher ändern man den startx-Script und den xdm init Script so ab, das mit Hilfe des ACPI der aktuelle Zustand des Notebook Deckels erkannt wird.

Man muss nur die vier Sketionen kopieren und dort den Identifier ändern. Die Monitore hier nach den Hersteller benannt. Das sieht dann evtl. so aus:

Section "Monitor"
Identifier "Dell"
UseModes "DellModes"
DisplaySize 508 318
HorizSync 31.5 - 100.0
VertRefresh 30.0 - 90.0
Option "dpms"
EndSection

Section "Monitor"
Identifier "Acer"
UseModes "AcerModes"
DisplaySize 339 271
HorizSync 31.5 - 100.0
VertRefresh 30.0 - 90.0
Option "dpms"
EndSection

Man achte hier auf die beiden unterschiedlichen DisplaySize Angaben, die sind für die Lösung des "96dpi-Problems". Siehe dazu Lösung1.
Die UserModes sehen wie folgt aus:

Section "Modes"
Identifier "AcerModes"
Modeline "1280x1024_75.00" 138.54 1280 1368 1504 1728 1024 1025 1028 1069 -HSync +Vsync
EndSection

Section "Modes"
Identifier "DellModes"
ModeLine "1920x1200" 193.2 1920 2048 2256 2592 1200 1201 1204 1242 -hsync +vsync
EndSection

Hier ist jeweils nur eine ModeLine eingetragen, die Modline kann kann man ganz einfach mit folgenden Befehl erstellen:

gtf 1280 1024 75 

Damit bekommt man dann die ModeLine für 1280x1024 bei 75 Hz

Die Screen-Sektion benennt man am Besten nach dem Zustand (Identifier):

Section "Screen"
Identifier "closed"
Device "Generic VGA"
Monitor "Acer"
DefaultDepth 24
SubSection "Display"
Viewport 0 0
Depth 24
Modes "1280x1024"
EndSubSection
EndSection

Section "Screen"
Identifier "open"
Device "Generic VGA"
Monitor "Dell"
DefaultDepth 24
SubSection "Display"
Viewport 0 0
Depth 24
Modes "1920x1200"
EndSubSection
EndSection

Dort sind nur die beiden unterschiedlichen Modes zu beachten.

Und nun kommt der wichtigste Punkt, die Layout-Sektion:

Section "ServerLayout"
Identifier "Laptop"
Screen "open"
InputDevice "touchpad" "CorePointer"
InputDevice "usb" "SendCoreEvents"
InputDevice "Keyboard0" "CoreKeyboard"
EndSection

Section "ServerLayout"
Identifier "Docked"
Screen "closed"
InputDevice "touchpad" "CorePointer"
InputDevice "usb" "SendCoreEvents"
InputDevice "Keyboard0" "CoreKeyboard"
EndSection

Diesen beiden Sektionen gibt man nun Identifier die man sich gut merken kann und ändert den Namen zu der entsprechenden Screen-Sektion. Diese zeigt auf den entsprechenden Monitor.

Das war die xorg.conf, eine funktinoerende xorg.conf für das für das Dell Inspiron 9300 gibt es hier, für einen Apple Mac Mini kann man diese verwenden. Nun muss man noch dafür sorgen, dass X mit dem entsprechenden Layout startet.

In diesem Beispiel ändern wir den startx-Script und den xdm init Script. Beim xdm script kommt es auf den eingestellten DISPLAYMANAGER an, hier werden wir dem kdm verwenden.

Man kopiert sich die aktuelle kdm Konfiguration zwei mal:

cp /usr/kde/3.4/share/config/kdm/kdmrc /etc/skel/kdmrc.Laptop
cp /usr/kde/3.4/share/config/kdm/kdmrc /etc/skel/kdmrc.Docked

Nun editiert man diese beiden Dateien un ersetzt ServerCmd je nach Zustand, in der /etc/skel/kdmrc.Laptop dann:

ServerCmd=/usr/bin/X -layout Laptop

in der /etc/skel/kdmrc.Docked dann

ServerCmd=/usr/bin/X -layout Docked

Nun wird der /etc/init.d/xdm Script angepasst, damit je nach Zustand des Notebook Deckels die entsprechende kdm Konfiguration kopiert wird. Dazu fügt man dann folgendes ein:

grep closed /proc/acpi/button/lid/LID/state &> /dev/null
if [ "$?" = "1" ]; then
cp /etc/skel/kdmrc.Laptop /usr/kde/3.4/share/config/kdm/kdmrc
else
cp /etc/skel/kdmrc.Docked /usr/kde/3.4/share/config/kdm/kdmrc
fi
Achtung: /proc/acpi/button/lid/LID/state ist nicht immer richtig, passen Sie diese Zeile an Ihre Konfiguration an.

Nun fehlt noch der startx-Script, dieser wird mit folgenden Zeilen erweitert:

grep closed /proc/acpi/button/lid/LID/state &> /dev/null
if [ "$?" = "1" ]; then
serverargs="-layout Laptop"
else
serverargs="-layout Docked"
fi

Fragen oder Anregungen zu dieser Anleitung bitte eine E-Mail an This e-mail address is being protected from spambots. You need JavaScript enabled to view it .

 
KontaktImpressum