Hallo nochmal, (entschuldige mich schon mal im Vorfeld für die epischen Ausführungen
)
zunächst fragt ein init Skript ab ob das Thinkpad in der MiniDock3 hängt und kopiert wahlweise eine der folgenden Monitorconfigs nach "xorg.conf.d/09-monitor.conf" (GraKa in 10-grafik.conf):
Gedockt: (# Zeilen nur testweise versucht)
|
Quellcode
|
1
2
3
4
5
6
7
8
9
10
11
12
|
Section "Monitor"
Identifier "MiniDock3"
# ModeLine "1280x1024_60.00" 109.00 1280 1368 1496 1712 1024 1027 1034 1063 -hsync +vsync
Option "Enable" "true"
# Option "PreferredMode" "1280x1024_60.00"
# Option "Primary" "true"
EndSection
Section "Monitor"
Identifier "Intern"
Option "Disable" "true"
EndSection
|
Nicht Gedockt:
|
Quellcode
|
1
2
3
4
5
6
7
8
9
10
|
Section "Monitor"
Identifier "Intern"
Option "Enable" "true"
Option "PreferredMode" "1366x768"
EndSection
Section "Monitor"
Identifier "MiniDock3"
Option "Disable" "true"
EndSection
|
Das funzt sowiet wunderbar, bringt aber nur was beim booten
Jetzt habe ich aber auch zwei acpi-Skripte, welche durch ACPI-Hotkey beim andocken oder abdocken aufgerufen werden:
Andocken:
|
Quellcode
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
#!/bin/bash
nutzer="$(w | grep :0.0 | head -n 1 | awk '{print $1}')"
cp /etc/X11/MiniDock3/dock_09Monitor /etc/X11/xorg.conf.d/09-monitor.conf
/etc/init.d/xdm status | grep started > /dev/null
if [ $? = "0" ];
then
w | grep :0.0 > /dev/null
if [ $? = "0" ]; then
su -c "xrandr -d :0.0 --output LVDS1 --off --output HDMI2 --primary --auto" $nutzer
else
/etc/init.d/xdm restart
fi
else
echo "X nicht gestartet"
fi
exit 0
|
Abdocken:
|
Quellcode
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
#!/bin/bash
nutzer="$(w | grep :0.0 | head -n 1 | awk '{print $1}')"
cp /etc/X11/MiniDock3/undock_09Monitor /etc/X11/xorg.conf.d/09-monitor.conf
/etc/init.d/xdm status | grep started > /dev/null
if [ $? = "0" ];
then
w | grep :0.0 > /dev/null
if [ $? = "0" ]; then
su -c "xrandr -d :0.0 --output HDMI2 --off --output LVDS1 --primary --auto" $nutzer
else
/etc/init.d/xdm restart
fi
else
echo "X nicht gestartet"
fi
exit 0
|
Die Kopieren also die richtige "09-monitor.conf" hin und fragen dann ob ein Nutzer eingelogt ist oder nicht und entscheiden damit über den Aufruf von "xrandr" oder den Neustart von xdm. Das funzt soweit alles super bis auf:
Wenn xdm (bei mir slim) läuft und niemand eigeloggt ist und ich das Notebook in die Dock setze, dann wird "09-monitor.conf" erwartungsgemäß nach xorg.conf.d kopiert und xdm neu gestartet, wie es sein sollte. Aber wenn dann dann neu gestartete slim auf dem externen Monitor zu stehen kommt besitzt es die zu kleine Auflösung 1024x768 und nicht wie erwartet 1280x1024, was nach dem Einloggen als User so bleibt (Notebook: 1366x768 ).
Was mich wundert ist, daß es aber ja funzt, wenn beim booten die Dock erkannt wird und vor dem starten von xdm 09-monitor.conf kopiert wird. Hat irgendjemand ne Idee, wie ich X/xdm zwingen kann die richtige Auflösung zu verwenden? (Wenn ich es zudem umgekehrt mache und ohne eingeloggt zu sein das Notebook aus der Dock ziehe macht der Notebookbildschirm keine solchen "Mätzchen".) Habe es daher mal mit der ModeLine in dock_09Monitor versucht, brachte aber keine Abhilfe
Danke schon mal und beste Grüße
GOS