Um diese Methode verwenden zu können, müssen Sie zunächst prüfen, ob Ihre Grafikkarte ein udev-Ereignis sendet, wenn ein VGA-Monitor angeschlossen ist. Öffnen Sie dazu ein Terminal, geben Sie udevadm monitor --property
einen Monitor ein und schließen Sie ihn an etwas wie das:
KERNEL[7671.540341] change /devices/pci0000:00/0000:00:02.0/drm/card0 (drm)
ACTION=change
DEVNAME=dri/card0
DEVPATH=/devices/pci0000:00/0000:00:02.0/drm/card0
DEVTYPE=drm_minor
HOTPLUG=1
MAJOR=226
MINOR=0
SEQNUM=2296
SUBSYSTEM=drm
UDEV_LOG=3
UDEV [7672.099723] change /devices/pci0000:00/0000:00:02.0/drm/card0 (drm)
ACTION=change
DEVNAME=/dev/dri/card0
DEVPATH=/devices/pci0000:00/0000:00:02.0/drm/card0
DEVTYPE=drm_minor
HOTPLUG=1
MAJOR=226
MINOR=0
SEQNUM=2296
SUBSYSTEM=drm
TAGS=:udev-acl:
UDEV_LOG=3
USEC_INITIALIZED=20836591
Wenn Sie kein Ereignis erhalten, ist diese Methode nicht möglich.
Als nächstes wird eine Regel für udev erstellt. Dies kann durch Erstellen einer Datei erfolgen /etc/udev/rules.d/90-monitor-hotplug.rules
. Öffnen Sie dazu ein Terminal und geben Sie ein gksudo gedit /etc/udev/rules.d/90-monitor-hotplug.rules
. Das gksudo
wird benötigt, da nur root Dateien in dieser Direktive erstellen darf. Fügen Sie dann die folgende Zeile in die Datei ein und speichern Sie sie:
SUBSYSTEM=="drm", ACTION=="change", RUN+="/bin/su user -c '/home/user/bin/monitorhotplug.sh'"
Natürlich müssen Sie das Wort user
durch Ihren eigenen Benutzernamen ersetzen . Dies führt dazu, dass udev den dahinter angegebenen Befehl ausführt RUN
. Der Befehl führt die Datei /home/user/bin/monitorhotplug.sh
als Benutzer aus. Diese Datei muss jetzt erstellt werden.
Öffnen Sie dazu ein Terminal und geben Sie ein gedit /home/user/bin/monitorhotplug.sh
. Denken Sie daran, user
durch Ihren eigenen Benutzernamen zu ersetzen . Fügen Sie nun das folgende Skript in die Datei ein und speichern Sie es:
#!/bin/bash
# we need some environment variables
export DISPLAY=:0
export XAUTHORITY=~/.Xauthority
eval $(sed -n '/^#/! { s/^/export /; s/$/;/; p }' ~/.dbus/session-bus/*-${DISPLAY//:/})
# if a VGA monitor is plugged in:
if [ $(cat /sys/class/drm/card0-VGA-1/status) = "connected" ]; then
# set my power settings
gsettings set org.gnome.settings-daemon.plugins.power lid-close-ac-action 'nothing'
gsettings set org.gnome.settings-daemon.plugins.power lid-close-battery-action 'nothing'
xrandr --output VGA1 --auto
# turn off laptop screen
xrandr --output LVDS1 --off
# in case of anything else reset to standard options
else
# reset my power settings
gsettings set org.gnome.settings-daemon.plugins.power lid-close-ac-action 'suspend'
gsettings set org.gnome.settings-daemon.plugins.power lid-close-battery-action 'suspend'
# xrandr does the rest alone
#xrandr --output VGA1 --off
#xrandr --output LVDS1 --auto
fi
Jetzt muss die Datei ausführbar gemacht werden. Öffnen Sie dazu ein Terminal und geben Sie ein chmod +x /home/user/bin/monitorhotplug.sh
.
Jetzt sollte es funktionieren: 1. Wenn Sie einen VGA-Monitor anschließen, wird Ihr interner Laptop-Bildschirm (LVDS) ausgeschaltet und Ihr Laptop wird nicht angehalten, wenn Sie den Deckel schließen. 2. Wenn Sie den Monitor ausstecken oder ein anderes Ereignis mit Monitoren auftritt, werden die Energieeinstellungen zurückgesetzt, um bei geschlossenem Deckel anzuhalten.
Es gibt noch ein kleines Problem: Wenn Sie Ihren Monitor angeschlossen und den Deckel geschlossen haben, sperrt Ubuntu den Bildschirm, sodass Sie die Maus bewegen und Ihr Passwort erneut eingeben müssen.
Ich hoffe das hilft jemandem. Ich persönlich genieße meine kleine DIY-Dockingstation. :) :)
90-monitor-hotplug.rules
habe,/etc/udev/rules.d
die die einzelne Zeile enthältSUBSYSTEM=="drm", ACTION=="change", RUN+="/path/to/executable.sh"