Eu uso um script /etc/acpi
para desligar a tela ( xset dpms force
off
) quando fecho a tampa do meu laptop. Agora eu quero que ele aja de maneira diferente quando um monitor externo estiver conectado (defina o brilho para zero). Eu sei que posso testar se ele está conectado com xrandr
, mas o script é executado pelo root e o xrandr depende de uma determinada sessão X. Existe uma maneira de o root testar se o monitor está conectado, independentemente das sessões X? Estou usando o Arch Linux.
Método #1 - decodificação edid
Você pode usar
edid-decode
para ver quais monitores estão conectados. Isso é de um sistema Ubuntu 16.04 que tenho, mas também funcionou no Fedora 28 e CentOS 7.x.NOTA: Este sistema em particular tem duas portas de vídeo, estou usando a VGA.
Aqui o monitor está conectado:
E aqui está quando eu desconecto o monitor VGA:
E aqui ele está conectado novamente:
Método #2 - cat sysfs
Se você vasculhar
/sys
as portas de exibição que você possui, estão listadas aqui em/sys/class/drm
.As portas de exibição para monitores serão
card0-DP-1
(VGA) ecard0-HDMI-A-1
(HDMI). Se você olhar em cada um desses diretórios, há um arquivo chamadostatus
. Se vocêcat
usar este arquivo, poderá ver o status da porta e se um monitor está conectado ou não.Mesmo teste acima, conectado:
Desconectado:
Referências