O root pode testar se um monitor está conectado?

4

Eu uso um script em /etc/acpi para desativar a tela ( xset dpms force off ) quando fecho a tampa do laptop. Agora quero que ele aja de maneira diferente quando um monitor externo estiver conectado (ajuste o brilho para zero em vez de). Eu sei que posso testar se está conectado com xrandr , mas o script é executado pela raiz, e xrandr depende de um certo Sessão X. Existe uma maneira de raiz para testar se o monitor é conectado, independentemente das sessões X? Estou usando o Arch Linux.

    
por Toothrot 22.07.2018 / 15:35

1 resposta

2

Método 1 - edid-decode

Você pode usar edid-decode para ver quais monitores estão conectados. Isto é de um sistema Ubuntu 16.04 que tenho, mas isso funcionou no Fedora 28 & CentOS 7.x também.

NOTA: Esse sistema em particular tem duas portas de vídeo, estou usando a VGA.

Aqui o monitor está conectado:

$ ls /sys/class/drm/*/edid | xargs -n 1 edid-decode | grep Manufacturer:
Manufacturer: DEL Model a071 Serial Number 844247885
Manufacturer: @@@ Model 0 Serial Number 0

E aqui é quando eu desconectar o monitor VGA:

$ ls /sys/class/drm/*/edid | xargs -n 1 edid-decode | grep Manufacturer:
Manufacturer: @@@ Model 0 Serial Number 0
Manufacturer: @@@ Model 0 Serial Number 0

E aqui está plugado de volta:

$ ls /sys/class/drm/*/edid | xargs -n 1 edid-decode | grep Manufacturer:
Manufacturer: DEL Model a071 Serial Number 844247885
Manufacturer: @@@ Model 0 Serial Number 0

Método # 2 - gato sysfs

Se você procurar por /sys , as portas de exibição que você tem estão listadas aqui em /sys/class/drm .

$ ls /sys/class/drm
card0  card0-DP-1  card0-HDMI-A-1  controlD64  renderD128  version

As portas de exibição dos monitores serão card0-DP-1 (VGA) e card0-HDMI-A-1 (HDMI). Se você procurar em cada um desses diretórios, existe um arquivo chamado status . Se você cat deste arquivo você pode ver o status da porta e se um monitor está conectado ou não.

O mesmo teste acima, conectado:

$ cat /sys/class/drm/card0-DP-1/status
connected

Desconectado:

$ cat /sys/class/drm/card0-DP-1/status
disconnected

Referências

por 23.07.2018 / 05:27

Tags