#!/usr/bin/env fish
# Changes the background to a randomly chosen image in a given directory
# at a set interval.

set default_interval 3600 # 1 hour

set dir $argv[1]
set interval $argv[2]

if test -z "$dir"
    printf "Usage:\n\t\e[1m%s\e[0m \e[4mDIRECTORY\e[0m [\e[4mINTERVAL\e[0m]\n" "$argv[1]"
    printf "\tChanges the background to a randomly chosen image in DIRECTORY every\n\tINTERVAL seconds (or every %d seconds if unspecified)." "$default_interval"
    exit 1
end

if ! test -d "$dir"
    printf "Error: Directory \e[4m%s\e[0m does not exist.\n" "$dir"
    exit 1
end

if string length -q -- $interval
    if not string match -qr '^[0-9]+$' -- $interval
        printf "Error: Interval \e[4m%s\e[0m is not a number.\n" $interval
        exit 1
    end
else
    set interval $default_interval
end

ron-lockfile "/tmp/randomize_background.lock"

while true
    if pgrep gamemoded
        set gamemode_status (gamemoded -s)
        if string match -q -- 'gamemode is active' -- $gamemode_status
            sleep $interval
            continue
        end
    end

    set img (fd . $dir -tf | shuf -n 1)
    ron-background-set "$img"
    sleep $interval
end
