Files
dotfiles/.local/bin/screen-lock
T
Daniele Fucini efea899ccb Pause dunst while the screen is locked; add notification history keys
screen-lock holds notifications until unlock, and M-S-l now goes through
loginctl lock-session so it uses the same locker. M-S-n pops dunst history,
M-C-n closes all notifications.
2026-10-26 17:31:03 +01:00

27 lines
1.1 KiB
Bash
Executable File

#!/bin/sh
# i3lock-color with a background image and the keyboard layout shown.
image=/usr/share/backgrounds/arch_1920x1080.png
# Hold notifications while locked; dunst shows them on unlock. A signal to this
# script is passed on to i3lock, as the old exec did.
was_paused=$(dunstctl is-paused 2>/dev/null)
dunstctl set-paused true 2>/dev/null
trap 'kill "$pid" 2>/dev/null' INT TERM HUP
# -n: stay in the foreground, as xss-lock needs to see when the screen is unlocked.
# --indicator keeps the ring (and the layout text) visible before typing.
# The layout's default spot (dx:dy+30) falls inside the ring: put it below.
i3lock -n -i "$image" -F -c 000000ff \
-e -f --indicator --keylayout 0 \
--layout-pos='ix:iy+r+40' --layout-color=ffffffff \
--layout-size=24 \
--time-color=ffffffff --date-color=ffffffff --date-str='%A, %d %B' \
--ring-color=1793d1ff --line-uses-ring "$@" &
pid=$!
# A trapped signal interrupts the first wait; the second waits for i3lock to exit.
wait "$pid"
wait "$pid" 2>/dev/null
[ "$was_paused" = true ] || dunstctl set-paused false 2>/dev/null