Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
How to use i3lock to wake from suspend state

How to use i3lock to wake from suspend state

By Raymond Li (Raymo111), September 3rd, 2019

Table of Contents

Step 0: Preparation
Step 1: Create the lock script
Step 2: Create the systemd module
Step 3: Enable the systemd module

Step 0: Preparation

Disable any preexisting screen locker. I'm using KDE on Arch Linux, so my options for kscreenlocker look like this: The options lock screen automatically after and lock screen on resume are unchecked

If you don't have it already, make sure you install i3lock. I highly reccommend installing i3lock-color or i3lock-fancy.

Step 1: Create the lock script

Create a file at ~/scripts/i3lock.sh, with the following content:

#!/bin/bash
i3lock # Whatever i3lock options you want to use. Use i3lock -h for a list of options

Step 2: Create the systemd module

Create a file using sudo at /etc/systemd/system/wakelock@.service, with the following content:

[Unit]
Description=Lock the screen on resume from suspend
Before=sleep.target suspend.target

[Service]
User=%i
Type=forking
Environment=DISPLAY=:0
ExecStart=/home/%i/scripts/i3lock.sh

[Install]
WantedBy=sleep.target suspend.target

Step 3: Enable the systemd module

Enable the systemd module you just created with:

sudo systemctl enable wakelock@<YOUR-USER-NAME>
sudo systemctl start wakelock@<YOUR-USER-NAME>

i3lock will now run once as a demo, then when you wake from suspend, i3lock will automatically start.

That's it! If you make any changes and want them reflected immediately without restart, simply do:

sudo systemctl restart wakelock@<YOUR-USER-NAME>

If my tutorial helped you, or if you encountered any errors or have any suggestions for me, leave a comment below to let me know!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.