Basado en varias fuentes que he improvisado ~/.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
Lo he habilitado usando systemctl --user enable screenlock.service. Pero después de reiniciar, iniciar sesión, suspender y reanudar (probado con systemctl suspendy al cerrar la tapa) la pantalla no está bloqueada y no hay nada adentrojournalctl --user-unit screenlock.service . ¿Qué estoy haciendo mal?
La ejecución DISPLAY=:0 /usr/bin/xautolock -locknowbloquea la pantalla como se esperaba.
$ 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
Si ejecuto systemctl --user start screenlock.servicelos bloqueos de pantalla inmediatamente y recibo un mensaje de registro journalctl --user-unit screenlock.service, entonces ExecStartclaramente es correcto.
xautolock -locker slock &
Crear un servicio del sistema con el mismo archivo funciona (es decir, slockestá activo cuando se reanuda):
# ln -s "${HOME}/.config/systemd/user/screenlock.service" /usr/lib/systemd/system/screenlock.service
# systemctl enable screenlock.service
$ systemctl suspend
Pero no quiero agregar un archivo específico de usuario fuera $HOMEpor varias razones:
- Los servicios de usuario deben estar claramente separados de los servicios del sistema.
- Los servicios de usuario deben controlarse sin usar privilegios de superusuario
- La configuración debe ser fácilmente controlada por la versión
systemd-usersigue siendo muy escamoso; lograr que funcione como parte de la sesión a través del enfoque que describí ayudaría a reducir el problema; Eso es todo lo que puedo sugerir.
/etc/systemd/system/o $HOME/.local/systemd/systemevitar poner algo /usrmanualmente. Como @jasonwryan mencionó, las sesiones de usuario todavía no se consideran de calidad de producción; Pero se están acercando.