In der Zeit vor Systemd war die Prozedur um meinen Rechner schlafen zu legen und den Zugriff für andere zu sperren ziemlich aufwändig: Ich brauchte ganze zwei Tastenkombinationen dafür (SUPER+X für slock und FN+F4 für den Suspend). Lange Zeit (2 Wochen oder so) konnte ich mein Notebook nicht mit schlafen legen und slock anschalten. Dieses Problem habe ich endlich behoben.
Die Anleitung funktioniert genauso einfach auch mit anderen screensavern aber für slock musst du den Code nur kopieren.
Wir benötigen lediglich einen Service, welcher aktiv wird, sobald man versucht den Rechner schlafen zu legen (Suspend oder Hibernate). Dann wird einfach slock gestartet.
Lege dazu einfach ein Unit-File in /usr/lib/systemd/system/slock.service an und fülle dieses mit folgendem Inhalt:
[Unit] Description=Lock X session using slock After=sleep.target [Service] User=[Dein Username hier] Type=forking Environment=DISPLAY=:0 ExecStart=/usr/bin/slock [Install] WantedBy=sleep.target
Der Code sollte verständlich sein. Nachdem man den Rechner schlafen legen will, wird slock angeschalten. Ich habe beobachtet, dass slock sofort angeschalten wird und nicht erst nachdem der Rechner aufwacht. Wenn man statt After Sleep hinschreibt, dann wird slock gestartet und erst nachdem man die Sperre aufgehoben hat, wird der Rechner schlafen gelegt. Das ist ziemlich nervig und geht leicht am Ziel vorbei.
Und damit man nicht jedes mal systemctl suspend eintippen muss, habe ich mir in meine Xmonad.hs noch ein Shortcut eingearbeitet. Füge dazu einfach in die Funktion keyBindings noch folgende Zeile ein:
, mod4Mask > xK_v > spawn "systemctl suspend"
Nachdem du die Konfiguration erneut eingelesen hast (meist MOD+Q), kannst du auch diese Tastenkombination benutzen. Bei mir ist dies MOD+V, da das V so schön praktisch neben dem X (nur slock) liegt. Klingt komisch, ist aber so (NEO).
„Und warum hast du das nicht mit einem Sleep-Hook gemacht?“ – Weil es bei mir nicht ging. Wenn du weißt, wie, schreib einen Kommentar.