suspender E bloquear a tela ao fechar a tampa no arco / systemd

22

qual é a maneira mais direta de bloquear a tela e suspender ao fechar a tampa? Estou usando ganchos de eventos /etc/systemd/logind.confe suspendo com sucesso ao fechar a tampa. No entanto, estou perdido quando se trata da parte de bloqueio - devo habilitar algum serviço de proteção de tela e como posso acionar dois eventos ao mesmo tempo logind.conf?

pldimitrov
fonte
Fora do escopo, estou comentando: no i3 é muito fácil atribuir combinações de teclas a comandos. Como mod+Ljá foi designado blurlockpara mim, era fácil ter o mod+Smesmo blurlock && systemctl suspend -i. Portanto, não ao fechar a tampa, mas funciona muito bem para escolher se eu quero travar ou travar e suspender.
Pzkpfw

Respostas:

17

Existem alguns exemplos no Arch Wiki .

Basicamente, ele envolve a criação de um arquivo de serviço para o seu armário tela e garantindo que é viciado, quer ao suspend, hibernateou sleepalvos.

Se você usar um armário de tela simples como o slock ,/etc/systemd/system/lock.service seria assim:

[Unit]
Description=Lock the screen on resume from suspend

[Service]
User=jason
Environment=DISPLAY=:0
ExecStart=/usr/bin/slock

[Install]
WantedBy=suspend.target

Outros exemplos no wiki têm opções mais complexas, incluindo desligar e abrir outros serviços, etc.

jasonwryan
fonte
Obrigado, eu vi esse exemplo, mas não percebi que o ExecStart=/usr/bin/slockbit se refere ao bloqueio à primeira vista.
Pldimitrov 05/07/2013
Se eu suspender e voltar, meu gerenciador de telas X tem um bloqueio de tela, isso é ótimo. Mas e os meus ttys? E se eu estiver logado, suspenso e me esquecendo de sair dos meus ttys, as pessoas poderão mudar para lá e continuar suas operações.
precisa saber é o seguinte
@CMCDragonkai você quer physlock então ...
jasonwryan
1
Isso funciona, mas apenas se você for o único usuário do sistema. Uma solução mais limpa é usar xss-lock(disponível no Debian, Arch Linux; também Fedora na próxima semana) e executá-la como usuário junto com i3lockou slock.
Martin Ueding 26/03
1
@MartinUeding e @jasonwryan, Usersão codificados. A suposição de que esta máquina será usada apenas por jason(ou alguém que saiba sua senha, como sua namorada, por exemplo). Idealmente, gostaríamos Userde ser quem iniciou a suspensão, mas ainda não encontrei uma solução para isso.
Rolf
1

Se você usar openrccom elogindhá uma solução alternativa (que não é systemd dependente):

#!/bin/sh
#
# /lib/elogind/system-sleep/lock.sh
# Lock before suspend integration with elogind

username=lerax
userhome=/home/$username
export XAUTHORITY="$userhome/.Xauthority"
export DISPLAY=":0.0"

case "${1}" in
        pre)
            su $username -c "/usr/bin/slock" &
            sleep 1s;
            ;;
esac

ref: https://gist.github.com/ryukinix/bd0c1ddcbbafdb4149ae70e41b7c822b

Estou postando isso porque foi muito difícil encontrá-lo da maneira correta em que ele funciona e esse tópico aparece nos primeiros resultados do google sobre "bloquear após suspender" ou qualquer outra coisa.

Manoel Vilela
fonte