Há um longo caminho para isso, então vamos começar a trabalhar.
É importante entender que esses eventos serão capturados por processos de propriedade do root. Uma correção é necessária para permitir que o root execute processos no ambiente X do usuário normal. Para disponibilizar as variáveis de ambiente para o root:
gedit ~/export_x_info
e cole os seguintes contets
# Export the dbus session address on startup so it can be used by any other environment
sleep 5
touch $HOME/.Xdbus
chmod 600 $HOME/.Xdbus
env | grep DBUS_SESSION_BUS_ADDRESS > $HOME/.Xdbus
echo 'export DBUS_SESSION_BUS_ADDRESS' >> $HOME/.Xdbus
# Export XAUTHORITY value on startup so it can be used by cron
env | grep XAUTHORITY >> $HOME/.Xdbus
echo 'export XAUTHORITY' >> $HOME/.Xdbus
Salvar e fechar. Em seguida, torne-o executável:
chmod 700 ~/export_x_info
Agora defina-o para ser executado na inicialização. No Gnome 2, Sistema > Preferências > Sessões e clique em Adicionar. No Ubuntu Unity, clique no ícone de engrenagem no canto superior direito, selecione Programas de inicialização e clique em Adicionar.
Name: X Environment Variables
Command: /home/your_user/export_x_info
Agora, você precisa editar o arquivo /etc/acpi/lid.sh
, que abre e fecha o evento
gksudo gedit /etc/acpi/lid.sh
e colar
/home/your_user/lid_event
logo após #!/bin/bash
. Salve e feche.
Agora, você precisa criar um script para fechar o evento para poder bloquear sua tela.
gedit ~/lid_event
e cole o seguinte. Altere user_name com seu nome de usuário
#!/bin/bash
grep closed /proc/acpi/button/lid/LID0/state
if [ $? = 0 ]
then
source /home/user_name/.Xdbus
DISPLAY=:0.0 su user_name -c "gnome-screensaver-command -l"
fi
verifique também o arquivo /proc/acpi/button/lid/LID0/state
usando o gerenciador de arquivos porque o LID0 pode ser LID.
Agora reinicie sua ACPI usando
sudo /etc/init.d/acpid restart
Certifique-se de que a opção Gerenciamento de energia para a tampa do laptop esteja definida para não fazer nada