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
;;