Eu finalmente fiquei bastante irritado com esse problema que passei algumas horas tentando consertá-lo. Muitas postagens aqui no askubuntu.com foram úteis, e esperamos que isso ajude alguém.
Veja o que acabei fazendo para que funcionasse ...
Primeiro, configurei a ação do botão liga / desliga nas preferências do gerenciador de energia para "Não fazer nada", pois não queria que isso interferisse em nada (lembre-se de que o botão algumas vezes fez alguma coisa).
Em seguida, eu instalei o ACPI:
sudo apt-get update
sudo apt-get install acpi acpid
Em seguida, criei /etc/acpi/powerbtn.sh
contendo o seguinte:
# If LXDE is running execute lxsession-logout.
_LXSESSION_PID='pidof lxsession'
if [ ! -n "$_LXSESSION_PID" ]
then
/sbin/shutdown -h now "Power button pressed"
elif [ "$2" = "PBTN" ]
then
export _LXSESSION_PID
export DISPLAY=:0
export XUSER=myUserName ## Put your actual user ID here! ##
export XAUTHORITY=/home/$XUSER/.Xauthority
logger "Launching lxsession-logout"
lxsession-logout
fi
Em seguida, criei /etc/acpi/events/powerbtn
contendo o seguinte:
event=button/power
action=/etc/acpi/powerbtn.sh %e
Por fim, reiniciei o daemon da ACPI:
/etc/init.d/acpid restart
Apenas algumas notas adicionais:
- Esta é uma máquina com um único usuário, por isso não tive escrúpulos em codificar permanentemente meu ID de usuário no script.
- Algumas postagens que li sugerem que os arquivos
powerbtn.sh
ouevents/powerbtn
já estavam lá; eles não eram. - O
%e
na ação do evento e oelif [ "$2" = "PBTN" ]
no scriptpowerbtn.sh
foram necessários porque pressionar a tecla acionou o evento duas vezes, um com o nome da chavePBTN
e uma vez comLNXPWRBN:00
. Sem isso, a caixa de diálogo apareceu novamente se eu cancelasse a primeira vez.