screensaver vs dunst

Christophe Colombier - Aug 10 '22 - - Dev Community

This article will be about how I configured my screensaver script to disable dunst notification.

Initial setup

Please check the xautolock article I made.

Here is the screen lock script I was using for ~/bin/lockscreen.sh

#!/bin/sh

set -e

# enable the lock screen
i3lock -c 272d2d -i ~/Documents/wallpaper-lockscreen.png
Enter fullscreen mode Exit fullscreen mode

Problem

When my computer is locked, because of a meeting or a lunch break, the notification are still received by the notifier, in my case dunst

Each notification has a short timeout, you are supposed to see them when working, but when your computer is locked you don't see them

so here is what to do

#!/bin/sh

# pause notifications
dunstctl set-paused true

# enable the lock screen
i3lock --nofork -c 272d2d -i ~/Documents/wallpaper-lockscreen.png

# restore notifications
dunstctl set-paused false
Enter fullscreen mode Exit fullscreen mode

Please note the usage of --nofork with i3lock. Without it, the script simply exits when i3lock is launched, so the notifications won't be paused.

Better implementation

I love using trap, it's a good way to avoid problem.

#!/bin/sh

# using trap make sure to restore dunst even if something fails
# restore notifications when script ends
# this command is defered when the script ends
trap "dunstctl set-paused false" EXIT

# pause notifications
dunstctl set-paused true

# enable the lock screen
i3lock --nofork -c 272d2d -i ~/Documents/wallpaper-lockscreen.png
Enter fullscreen mode Exit fullscreen mode
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .