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 suspend
y 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 -locknow
bloquea 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.service
los bloqueos de pantalla inmediatamente y recibo un mensaje de registro journalctl --user-unit screenlock.service
, entonces ExecStart
claramente es correcto.
xautolock -locker slock &
Crear un servicio del sistema con el mismo archivo funciona (es decir, slock
está 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 $HOME
por 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-user
sigue 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/system
evitar poner algo /usr
manualmente. Como @jasonwryan mencionó, las sesiones de usuario todavía no se consideran de calidad de producción; Pero se están acercando.