Eu não acho que é possível fazer isso no gerenciador de energia do XFCE. No entanto, você pode criar um script para bloquear a tela e desativá-la, e fazer com que ela seja iniciada assim que você fechar a tampa, ignorando as configurações do gerenciador de energia.
Como iniciar um script personalizado é relatado na página de ajuda oficial do Ubuntu . Eu vou escrever as passagens em seqüência, para entender o motivo de cada passo, leia o post original. Talvez não seja o processo mais fácil (é bem fácil de qualquer maneira, já que você precisa inserir uma série de comandos especificados e preencher arquivos com conteúdo preciso), mas acho que é o único caminho a ser seguido. Além disso, é bastante canônico, tanto com o minúsculo quanto com o C, já que a solução está na ajuda oficial do Ubuntu.
Primeiro, crie um script para disponibilizar variáveis de ambiente para o root, para que ele possa executar comandos no ambiente do usuário normal.
(Coloco mousepad
nos comandos, pois é o editor de texto padrão do XFCE. Substitua por GEdit
, SciTE
, Emacs
, nano
, vim
ou qualquer outro editor que você use)
$ mousepad ~/export_x_info
Com o seguinte conteúdo
# 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
E torne-o executável
$ chmod 700 ~/export_x_info
Adicione em Settings
→ Session and Startup
→ Application autostart
para configurá-lo para ser executado na inicialização.
Crie /etc/acpi/events/lm_lid
# mousepad /etc/acpi/events/lm_lid
Com este conteúdo
event=button/lid.*
action=/etc/acpi/lid.sh
Isso executará /etc/api/lid.sh
quando o botão da tampa for acionado. Vamos criá-lo
# mousepad /etc/api/lid.sh
#!/bin/bash
/home/%user/lid_event
(obviamente, substitua %user
pelo seu nome de usuário)
Isso significa que o script executará /home/%user/lid_event
. Vamos criar também
$ mousepad ~/lid_event
grep -q closed /proc/acpi/button/lid/LID/state
if [ $? = 0 ]
then
/home/%user/close;
else
/home/%user/open;
fi
Isso executará ~/open
se a tampa estiver aberta e ~/close
se estiver fechada. Mais uma vez, vamos criá-los:
$ mousepad ~/close
Já que para desativar a tela, você precisa de xset dpms force off
e, para bloqueá-la, precisa de xflock4
. Ela gravará isso em close
:
#This runs so that root can run the following command under the user's environment
source /home/%user/.Xdbus
#Lock and turn off screen
DISPLAY=:0.0 su %user -c "xflock4 && xset dpms force off"
Por dentro, como sugerido pela ajuda do Ubuntu, você pode tocar um som de sua escolha (fiz um teste com o arroto de Barney Gumble)
#This runs so that root can run the following command under the user's environment
source /home/%user/.Xdbus
#play a open sound
DISPLAY=:0.0 su %user -c "aplay %path/to/a/sound/of/your/choice"
Vamos torná-los todos executáveis
$ chmod +x ~/lid_event
$ chmod +x ~/open
$ chmod +x ~/close
Reinicie o acpid
# /etc/init.d/acpid restart
Inicie o ~/export_x_info
(ou reinicie seu laptop para que ele seja iniciado automaticamente na inicialização) e feche / abra sua tampa para ver se funciona.
Nota: no meu laptop, a tela de bloqueio também a desativaria, por isso não pude testar 100% da ação dupla, mas funcionou para bloqueá-la. Além disso, a página de ajuda coloca, por exemplo, uma ação para alterar o status do Pidgin para fora quando você fecha a tampa e como "Estou aqui" ao abri-lo, muito útil.
TL; DR (se esse problema ocorrer a uma pessoa preguiçosa ou a um novato): insira os comandos no plano de fundo cinza ( #
significa que você precisa de privilégios de root elevados ou simplesmente digite sudo
antes do comando, enquanto $
significa que você deve inserir o comando como usuário regular). Quando o comando chamar um editor de texto (por exemplo, mousepad
), copie e cole a peça no segundo plano amarelo do editor e salve e feche.