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 suspende 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 -locknowbloqueia 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.serviceos bloqueios de tela imediatamente e receber uma mensagem de logon journalctl --user-unit screenlock.service, isso ExecStartestará claramente correto.
xautolock -locker slock &
A criação de um serviço do sistema com o mesmo arquivo funciona (ou seja, slockfica 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 $HOMEpor 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-userainda é 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/systemevitar colocar qualquer coisa /usrmanualmente. 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.