Com base em várias fontes que eu juntei ~/.config/systemd/user/screenlock.service
:
[Unit]
Description=Lock X session
Before=sleep.target
[Service]
Environment=DISPLAY=:0
ExecStart=/usr/bin/xautolock -locknow
[Install]
WantedBy=sleep.target
Eu o habilitei usando systemctl --user enable screenlock.service
. Porém, após a reinicialização, o login, a suspensão e a continuação (testados com systemctl suspend
e fechando a tampa) a tela não está bloqueada e não há nadajournalctl --user-unit screenlock.service
. O que estou fazendo de errado?
A execução DISPLAY=:0 /usr/bin/xautolock -locknow
bloqueia a tela conforme o esperado.
$ systemctl --version
systemd 215
+PAM -AUDIT -SELINUX -IMA -SYSVINIT +LIBCRYPTSETUP +GCRYPT +ACL +XZ +SECCOMP -APPARMOR
$ awesome --version
awesome v3.5.5 (Kansas City Shuffle)
• Build: Apr 11 2014 09:36:33 for x86_64 by gcc version 4.8.2 (nobody@)
• Compiled against Lua 5.2.3 (running with Lua 5.2)
• D-Bus support: ✔
$ slim -v
slim version 1.3.6
Se eu executar systemctl --user start screenlock.service
os bloqueios de tela imediatamente e receber uma mensagem de logon journalctl --user-unit screenlock.service
, isso ExecStart
estará claramente correto.
xautolock -locker slock &
A criação de um serviço do sistema com o mesmo arquivo funciona (ou seja, slock
fica ativa ao retomar):
# ln -s "${HOME}/.config/systemd/user/screenlock.service" /usr/lib/systemd/system/screenlock.service
# systemctl enable screenlock.service
$ systemctl suspend
Mas não quero adicionar um arquivo específico do usuário fora $HOME
por vários motivos:
- Os serviços do usuário devem ser claramente separados dos serviços do sistema
- Os serviços do usuário devem ser controlados sem o uso de privilégios de superusuário
- A configuração deve ser facilmente controlada por versão
systemd-user
ainda é muito esquisito; fazê-lo funcionar como parte da sessão por meio da abordagem que descrevi ajudaria a diminuir o problema; é tudo o que posso sugerir.
/etc/systemd/system/
ou $HOME/.local/systemd/system
evitar colocar qualquer coisa /usr
manualmente. Como o @jasonwryan mencionou, as sessões do usuário ainda não são consideradas como qualidade de produção; mas eles estão se aproximando.