Desligue a tela quando a tampa do laptop estiver fechada

0

Meu laptop não desliga a tela quando a tampa está fechada. Isso já está presente quando iniciado a partir do bastidor de instalação do Arch.

O evento em si é devidamente reconhecido desde os registros do sistema:

systemd-logind[500]: Lid opened.
systemd-logind[500]: Lid closed.

Como posso dizer ao sistema que eu quero que a tela fique desligada quando a tampa estiver fechada?

    
por Suuuehgi 30.09.2018 / 16:04

1 resposta

1

Agora encontrei uma resposta que funciona para mim (sistema de usuário único).

Embora systemd-logind lide com eventos da ACPI , há apenas um conjunto padrão de opções poweroff , reboot , halt , ... (veja man logind.conf ) que não incluem a tela sozinha.

O predecessor acpid também fornece manipuladores para atuar em eventos da ACPI, como fechar a tampa. A maneira mais simples é diretamente clutter usar o arquivo de demonstração /etc/acpi/handler.sh e alterar a seção

button/lid)
    case "$3" in
        close)
            logger 'LID closed'
            ;;
        open)
            logger 'LID opened'
            ;;
        *)
            logger "ACPI action undefined: $3"
            ;;

para

button/lid)
    case "$3" in
        close)
            logger 'LID closed'
            XAUTHORITY=/home/USERNAME/.Xauthority DISPLAY=:0 xset dpms force off
            ;;
        open)
            logger 'LID opened'
            XAUTHORITY=/home/USERNAME/.Xauthority DISPLAY=:0 xset dpms force on
            ;;
        *)
            logger "ACPI action undefined: $3"
            ;;

(Para uso extensivo de acpid , é certamente aconselhável criar uma regra / arquivo separado para essa tarefa.)

Explicação

xset dpms force off desativa implicitamente a tela $DISPLAY (caso contrário, xset -d $DISPLAY dpms force off ). Para fazer isso, ele precisa do cookie (arquivo de autorização) da pessoa que iniciou o X localizado em $XAUTHORITY .

No caso de X ter sido iniciado por root durante o processo de login (o que é o caso padrão), um simgple xset dpms force off pode ser suficiente.

Eu inicio X dentro do ~/.shellrc config do meu shell de login. Eu, portanto, tenho que dar manualmente a exibição e cookie de mim.

Adendo

Pode-se mexer ajustando ainda mais para não usar o comando quando em AC ( xset desliga todos telas anexadas e udev não detecta a tampa ligar o meu sistema).

        close)
            logger 'LID closed'
            if [[ $(cat /sys/class/power_supply/AC/online) == 0 ]];then
                XAUTHORITY=/home/USERNAME/.Xauthority DISPLAY=:0 xset dpms force off
            fi
            ;;
    
por 30.09.2018 / 22:24