Primeiro - para usar este método - você precisa ver se sua placa gráfica envia um evento udev, quando um monitor VGA está conectado. Para fazer isso, abra um terminal, digite udevadm monitor --property
e conecte um monitor. Você deve ver algo assim:
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
Se você não receber um evento, não será possível usar esse método.
Em seguida, uma regra para o udev é criada. Isso pode ser feito criando um arquivo /etc/udev/rules.d/90-monitor-hotplug.rules
. Para fazer isso, abra um terminal e digite gksudo gedit /etc/udev/rules.d/90-monitor-hotplug.rules
. O gksudo
é necessário, porque somente o root pode criar arquivos neste diretório. Em seguida, cole a seguinte linha no arquivo e salve-a:
SUBSYSTEM=="drm", ACTION=="change", RUN+="/bin/su user -c '/home/user/bin/monitorhotplug.sh'"
É claro que você deve substituir a palavra user
pelo seu próprio nome de usuário. Isso fará com que o udev execute o comando especificado por trás de RUN
. O comando executa o arquivo /home/user/bin/monitorhotplug.sh
como seu usuário. Este arquivo agora deve ser criado.
Para isso, abra um terminal e digite gedit /home/user/bin/monitorhotplug.sh
. Lembre-se de substituir user
pelo seu próprio nome de usuário. Agora cole o seguinte script no arquivo e salve-o:
#!/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
Agora o arquivo tem que ser feito executável. Para fazer isso, abra um terminal e digite chmod +x /home/user/bin/monitorhotplug.sh
.
Agora deve funcionar: 1. Quando você conecta um monitor VGA, sua tela de laptop interna (LVDS) será desligada e seu laptop não será suspenso, se você fechar a tampa. 2. Quando você desligar o monitor, ou qualquer outro evento com monitores, ele irá redefinir as configurações de energia para suspender quando a tampa estiver fechada.
Ainda há um pequeno problema: quando você tiver o seu monitor conectado e fechar a tampa, o Ubuntu irá bloquear a tela, então você tem que mover o mouse e digitar sua senha novamente.
Espero que isso ajude alguém. Eu, pessoalmente, estou curtindo minha pequena estação de encaixe DIY. :)