Como detecto quando um monitor é conectado ou desconectado sem o acpi, xrandr, / sys e udev?

1

Li as respostas para esta questão mas eu não tenho ACPI, o método /sys/class/drm/card0-socket/status não funciona e o método xrandr sufoca a minha CPU. udevadm monitor não mostra nada quando (des) conecta o monitor.

Eu tenho cerca de 2013 Lenovo ThinkPad w530 com algo nVidia quadro. Estou executando o Lubuntu 18.04 com o driver nouveau . O monitor é um 27 "Philips 271S. Estou usando um cabo VGA.

Como faço para detectar o monitor (un) plugging?

    
por White_Rabbit 14.11.2018 / 15:49

1 resposta

2

Eu usei polling para a tela externa EDID. Eu instalei o pacote read-edid, adicionei uma linha em visudo

%sudo  ALL=(ALL:ALL) NOPASSWD:/usr/bin/get-edid

para permitir a utilização sem senha e usar o seguinte loop:

#!/bin/bash
# edid_based_automatic_display_loop.sh
export NEW_CONNECTION=1
export NEW_DISCONNECTION=1

while :
do
    sleep 1
    sudo get-edid 2>/dev/null|parse-edid 2>/dev/null|grep "PHL 271S7Q">/dev/null
    _DISCONNECTED='echo $?'
    # echo "DISCONNECTED $_DISCONNECTED"
    if [ $_DISCONNECTED = "0" -a $NEW_CONNECTION = "1" ] ; then
        export NEW_DISCONNECTION=1;
        export NEW_CONNECTION=0;
        bash /home/bruno/.screenlayout/only_external.sh
    elif [ $_DISCONNECTED = "1" -a $NEW_DISCONNECTION = "1" ] ; then
        export NEW_DISCONNECTION=0;
        export NEW_CONNECTION=1;
        bash /home/bruno/.screenlayout/only_laptop.sh
    fi
done
    
por 14.11.2018 / 15:57