Suspending on idle on Void Linux using Sway WM
I’m setting up another PC with the delightful Void Linux (my third so far!), and I decided I wanted to set this one up with Sway WM, a Wayland-based window manager. This is my first time using Wayland (I have, if anything, been over-cautious), and it’s been a real breeze so far. Despite what look like early teething problems with Sway on Void, as far as I can gather from forums, all I did to get sway up and running was follow this guide, the short version of which is:
sudo xbps-install sway swayidle elogind dmenu foot sudo ln -s /etc/sv/dbus /var/services mkdir -p ~/.config/sway sudo cp /etc/sway/config ~/.config/sway/config
I then restarted, changed Sway’s terminal emulator of choice to
foot in the config file, and ran
sway to start it from the console.
I want my computer’s display to shut down after 10 minutes of inactivity, and for the computer to go to sleep a minute thereafter. For this, I’m using the excellent Sway companion tool swayidle.
~/.config/sway/config file, I’ve edited the existing configuration for swayidle to look like the following:
exec swayidle -w \ timeout 600 'swaymsg "output * dpms off"' resume 'swaymsg "output * dpms on"' \ timeout 660 'exec zzz'
resume hook after
'exec zzz' in
swayidle’s configuration doesn’t seem to run on a non-systemd system, so I added a file called
#!/bin/sh swaymsg "output * dpms on"
zzz runs this script after resuming from sleep, which is exactly what we want.
Finally, I allowed my own non-root user to modify
/sys/power/state, which is what
zzz does under the hood. To do so, I added the following line in
/etc/rc.local, which runs on system startup:
chown USERNAME: /sys/power/state
USERNAME with your own username, of course. Alternatively, you could create a group called, for instance,
power, add your user to that group, and then assign that group to
/sys/power/state on startup.
This was relatively easy once I’d figured out how all the bits of it interacted, and I’m still not sure why the
resume hook seems to fire a fter the first line of
swayidle but not after the second. Nonetheless, this is a lot of work for what seems like such a simple thing, and that’s why we love Linux!