I have an older laptop so no need to worry about the stupid Modern Standby introduced in late 2019. What I want is a reliable way to lock screen when suspend, doesnt matter how bloat or minimal.

First, to make sure the laptop suspends when I close the lid:

  • on some Distro, this works OOTB.
  • If it doesnt, I check /etc/systemd/sleep.conf and set allow Suspend from there.

After this, laptop does suspend. Now here comes the trickiest part, how to make sure your screen stays locked? There are so many rabbit holes so I want some help.

Depending on your software selections, you can fall into 3 categories:

  1. create some systemd script like this: https://wiki.archlinux.org/title/Slock

Problem: sometimes the screen doesnt get locked, i.e. your slock doesnt get triggered. Even worse, in some cases, the desktop is briefly shown on resume, before the locker shows up.

  1. use program like xss-lock, xautolock. Then links it with your locker and then autostart in your wm. Eg: i3wm with i3lock and xss-lock:

exec --no-startup-id xss-lock --transfer-sleep-lock – i3lock

This works. But the laptop sometimes takes a while to suspend.

  1. manually invoke “Lock” with a keystroke. Then close the lid. Apparently this works but I have to remember to manually “lock” every single time.

Thanks for any suggestions.

  • juipeltje@lemmy.world
    link
    fedilink
    arrow-up
    1
    ·
    6 hours ago

    I haven’t tried swaylock unfortunately, gtklock is the first wayland screenlocker i tried. Before that i think i was using i3lock-color on xorg, which also worked fine as far as i can remember, but the problem with xorg screenlocking is that it isn’t actually very safe. Also, i’m not sure what distro you are using, but if it is a systemd distro there is probably a better way to trigger the screenlocker. I’m not sure if that script works in that case because it might be elogind specific. elogind is used on distros like artix and void because they don’t use systemd. Elogind is basically just the logind part ripped out of systemd.