Basierend auf verschiedenen Quellen habe ich zusammengeschustert ~/.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
Ich habe es mit aktiviert systemctl --user enable screenlock.service
. Aber nach dem Neustart, Einloggen, Anhalten und Wiederaufnehmen (getestet mit systemctl suspend
und durch Schließen des Deckels) ist der Bildschirm nicht gesperrt und es ist nichts drinjournalctl --user-unit screenlock.service
. Was mache ich falsch?
Beim Ausführen wird DISPLAY=:0 /usr/bin/xautolock -locknow
der Bildschirm wie erwartet gesperrt.
$ 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
Wenn ich systemctl --user start screenlock.service
den Bildschirm sofort sperre und eine Logmeldung bekomme journalctl --user-unit screenlock.service
, ist das ExecStart
eindeutig richtig.
Relevanter .xinitrc
Abschnitt :
xautolock -locker slock &
Das Erstellen eines Systemdienstes mit derselben Datei funktioniert (dh, er slock
ist aktiv, wenn der Vorgang fortgesetzt wird):
# ln -s "${HOME}/.config/systemd/user/screenlock.service" /usr/lib/systemd/system/screenlock.service
# systemctl enable screenlock.service
$ systemctl suspend
Ich möchte jedoch $HOME
aus mehreren Gründen keine benutzerspezifische Datei außerhalb hinzufügen :
- Benutzerdienste sollten klar von Systemdiensten getrennt sein
- Benutzerdienste sollten ohne Verwendung von Superuser-Berechtigungen gesteuert werden
- Die Konfiguration sollte leicht versionskontrollierbar sein
systemd-user
ist immer noch sehr schuppig; Es würde helfen, das Problem einzugrenzen, indem man es im Rahmen der Sitzung über den von mir beschriebenen Ansatz zum Laufen bringt. Das ist alles, was ich vorschlagen kann.
/etc/systemd/system/
oder $HOME/.local/systemd/system
vermeiden, etwas /usr
manuell einzugeben. Wie @jasonwryan bereits erwähnt hat, werden Benutzersitzungen immer noch nicht als Produktionsqualität angesehen. aber sie kommen näher.