Anstatt jedes Mal nach einem Dock/Undock die Anordnung der Bildschirme händisch umzustellen oder andere Skripte auszuführen, kann man diese Arbeit auch automatisiert erledigen lassen. Beim Dock/Undock wird ein ACPI-Event erzeugt, über welches man sich beliebige Skripte aufrufen lassen kann.
Diese Anleitung ist in Anlehnung an Philipp Hagemeisters Thinkpad "Series 3" Docking Station on Linux-Anleitung entstanden und beschreibt diese im wesentlichen nur ausführlicher.
Benötigte Software ist der ACPI-daemon, unter Ubuntu und Debian heißt das zugehörige Paket acpid. Außerdem benötigt man noch die ACPI-Events beim Docken/Undocken. Diese kann man mit acpi_listen herausfinden. Für Lenovo-Docks sind das für das Undocken
ibm/hotkey LEN0068:00 00000080 00004011
und für das Docken
ibm/hotkey LEN0068:00 00000080 00004010
Überprüft am Besten kurz mittels acpi_listen, welche ACPI-Events bei euch erscheinen.
Nun erstellt man folgende Dateien (den Pfad zum aufzurufenden Skript und den Benutzer bitte anpassen). Es empfiehlt sich, die Skripte nicht als root aufzurufen, sondern dafür den eigenen oder einen dedizierten Benutzer zu verwenden.
/etc/acpi/events/thinkpad-undock
event=ibm/hotkey LEN0068:00 00000080 00004011 action=su raphael -c /home/raphael/.screenlayout/three-displays.sh
/etc/acpi/events/thinkpad-dock
event=ibm/hotkey LEN0068:00 00000080 00004010 action=su raphael -c /home/raphael/.screenlayout/one-display.sh
Um die Anordnung der Bildschirme zu verändern, ist beispielhaft folgendes Skript angegeben, welches auf den internen Bildschirm mit FullHD-Auflösung umschaltet und dabei alle anderen (bei mir vorhandenen) Ausgänge abschaltet
/home/raphael/.screenlayout/one-display.sh
#!/bin/sh xrandr -d :0.0 --output VIRTUAL1 --off --output eDP1 --primary --mode 1920x1080 --pos 0x0 --rotate normal --output DP1 --off --output DP2-1 --off --output DP2-2 --off --output DP2-3 --off --output HDMI2 --off --output HDMI1 --off --output VGA1 --off --output DP2 --off
Wichtig: Xrandr muss das Display mit übergeben werden, auf dem die Änderungen angewendet werden sollen, da der acpid außerhalb von X11 läuft. Dies geschieht hier mit der Option
-d :0.0
Es können auch beliebige andere Skripte aufgerufen werden. Hier empfiehlt es sich dann, in der ACPI-Event-Datei ein Skript anzugeben, welches alle anderen Skripte aufruft. Auch hier ist zu beachten, dass diese Skripte weder im Kontext des X-Servers und von acpid aus mit root-Rechten aufgerufen werden.
Liste von nützlichen Befehlen:
xbacklight -set percent; Regeln der Hintergrundbeleuchtung