From f748c9dbf2d84eca7e0942ce9d5fa0f0baa8928d Mon Sep 17 00:00:00 2001 From: awy Date: Wed, 12 Nov 2025 23:12:31 +0300 Subject: fixes --- .local/bin/randombg | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/.local/bin/randombg b/.local/bin/randombg index 61704bf..a38daaa 100755 --- a/.local/bin/randombg +++ b/.local/bin/randombg @@ -7,15 +7,29 @@ if [ -e "$PIDFILE" ] && kill -0 "$(bat "$PIDFILE")"; then kill -9 "$(bat $PIDFILE)" # Forcefully kill the old process fi echo $$ > "$PIDFILE" -trap 'rm -f "$PIDFILE"; exit' INT TERM EXIT + +cleanup() { + [ -n "$OLD_PID" ] && kill "$OLD_PID" 2>/dev/null + rm -f "$PIDFILE" + exit 0 +} +trap cleanup INT TERM EXIT + +sleep_interruptible() { + t=$1 + while [ "$t" -gt 0 ]; do + sleep 1 || return + t=$((t-1)) + done +} swaybg -i "$(fd . /mnt/ssd/papes -t f | shuf -n1)" -m fill & OLD_PID=$! while true; do - sleep 300 + sleep_interruptible 300 swaybg -i "$(fd . /mnt/ssd/papes -t f | shuf -n1)" -m fill & NEXT_PID=$! - sleep 5 + sleep_interruptible 5 kill $OLD_PID OLD_PID=$NEXT_PID done -- cgit v1.2.3