aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-x.local/bin/randombg20
1 files 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