How To: Externen Monitor beim Andocken aktivieren!

g3eB4Y

New member
Themenstarter
Registriert
7 Nov. 2009
Beiträge
167
Hallo,

heute habe ich mal keine Frage, sondern einen kleinen nützlichen Tipp! Ich glaube es könnte für den ein- oder anderen nützlich sein ;)

Ich wollte eine sehr eigentlich eine einfache Sache haben: wenn ich den Laptop andocke, soll der externe Monitor eingeschaltet werden, beim abdocken vice-versa! Das hörte sich für mich recht einfach an, nahm dann aber trotzdem 1-2 Stündchen in Anspruch. Damit niemand anderes so lang frickeln muss, hier also die meine Lösung!

Alles bezieht sich bei mir auf (K)Ubuntu, es sollte aber theoretisch von der Distribution und auch von der grafischen Oberfläche unabhängig sein, sofern ein X-Server da ist, der umgeschaltet werden kann. Das Script benutzt udev um das Dock-Event abzufangen und xrandr um den Bildschirm umzuschalten. Beide sollten also installiert und lauffähig sein. Unter Ubuntu ist das der Fall!


Die udev Regel fängt das dock-event ab und ruft daraufhin ein Script. Sie liegt unter /lib/udev/rules.d/98-screen-switch.rules und hat folgenden Inhalt:
Code:
# automatic screen switch - udev rule


# handle dock/undock events
ACTION=="change", SUBSYSTEM=="platform", KERNEL=="dock.*", ATTR{type}=="dock_station", RUN+="/bin/su EUER_NUTZERNAME -c /lib/udev/screen-switch-udev"

Die Dateirechte kann man so setzen:
Code:
sudo chmod 644 /lib/udev/rules.d/98-screen-switch.rules

Ihr müsst "EUER_NUTZERNAME" natürlich mit eurem Username ersetzen. Wie ihr seht ruft udev ein Script als Superuser auf. Dieses Script, dass die eigentliche Arbeit ausführt müssen wir jetzt noch unter: /lib/udev/screen-switch-udev anlegen.

Code:
#!/bin/sh


export DISPLAY=:0


# define your external display-adapter here
EXT_DISP=DP1


# this is to ensure that the monitor is available to the system before switching to it
sleep 2


case $EVENT in
    dock) # laptop was docked
    /usr/bin/xrandr --output LVDS1 --off --output $EXT_DISP --auto
        ;;


    undock) # laptop was undocked
        /usr/bin/xrandr --output $EXT_DISP --off --output LVDS1 --auto
        ;;
esac


exit 1

Die Dateirechte müssen hier auch das Executable-bit setzen, deshalb lauten sie wie folgt:
Code:
sudo chmod 755 /lib/udev/screen-switch-udev

An diesem Script kann man nun einige Einstellungen vornehmen, zum Beispiel die Variable EXT_DISP auf den gewünschten externen Displayadapter umstellen, je nach dem wie euer Monitor angeschlossen ist. Möglich sind DP1, HDMI1, VGA1 ... sicherlich bei dem Ein oder Anderen auch andere.. das bekommt Ihr über den Befehl "xrandr" in der Konsole heraus. Des Weiteren können mit xrandr auch mehrere Monitore aktiviert und relativ zueinander positioniert werden. Die Syntax für xrandr ist recht einfach und kann über das Man-File herausgefunden werden. Auch wäre es denkbar noch mehr Befehle auszuführen... je nach Lust und Laune.

Nun denn, ich hoffe es war einigermaßen verständlich und vielleicht auch nützlich....

Hinweise
Das Script wird mit eurem Benutzer ausgeführt, welcher in der udev-Regel hard-coded ist. Sollte es sich also um ein Mehrbenutzersystem handeln, wird diese Lösung nicht funktionieren.
Der sleep Befehl ist vielleicht nicht sehr elegant, er muss aber sein, damit das Subsystem den neuen Ausgang nach dem Docken überhaupt initialisiert hat, bevor wir versuchen, diesen auch einzuschalten.

Wenn jemand Anregungen hat, immer her damit ;) Ich bin kein Profi und sicherlich ist etwas nicht besonders elegant gelöst....

Credits
..gehen an linrunner, denn ich habe sein tlp-rdw script reverse engineered... ich hoffe das ist ok so, dadurch habe ich verstanden wie udev funktioniert. Außerdem habe mich an 2-3 Blogs im Netz bedient, die ich aber leider nicht mehr finden kann :/
 
Ich sehe grade, dass das aus dem offiziellen Repo auch zu funktionieren scheint. Wie sich die Meldungen verhalten, "neuer Monitor erkannt, konfigurieren?", kann ich mangels Kabel noch nicht sagen.
 
Kann ich erwarten das es auch unter Xubuntu mit XFCE klappt, oder muss ich da noch mit udev Regeln arbeiten. Habe mir gerade ein L530 gekauft welches häufiger zwischen Dock und Schule wechseln soll, da wäre eine richtige Erkennung bei Dockanschluss ziemlich nützlich. Die hier genannten Lösung waren ja auf Gnome3/Unity/KDE begrenzt.

Grüße
Dominic
 
Danke owl! Schade, dachte ich mir schon....dann werde ich mir mal die Alternativen anschauen, eventuell klappt es ja auch wenn ich einfach KDEnebenbei installiere und dann über xfce auf kscreen zugreife. Sonst muss ich mir mal KDE genauer anschauen und hoffen das es inzwischen mal stabil genug ist xD Gnome/Unity ist mir leider zu beschnitten :(
 
  • ok1.de
  • ok2.de
  • thinkstore24.de
  • Preiswerte-IT - Gebrauchte Lenovo Notebooks kaufen

Werbung

Zurück
Oben