Setup the directory structure to handle both mac and linux, and stowing with only one command, well two, one for the OS specific dir as well.

This commit is contained in:
Martin Larsson 2024-04-19 01:19:38 +02:00
parent 5759f6a798
commit bc87253453
65 changed files with 0 additions and 0 deletions

View file

@ -0,0 +1,84 @@
is_integer() {
local input=$1
[[ $input =~ ^-?[0-9]+$ ]]
}
wallpaper_history_path="$HOME/.wallpaper_history"
function set_wallpaper() {
local wallpaper_path="$1"
local history_size="$2"
local monitor="DP-1"
hyprctl hyprpaper wallpaper "$monitor, $wallpaper_path"
if [ $history_size -le 1 ]; then
echo "Won't set wallpaper, history size is less than or equal to 1"
return
fi
local -a wallpapers
if [ -f "$wallpaper_history_path" ]; then
mapfile -t wallpapers < "$wallpaper_history_path"
fi
wallpapers+=("$wallpaper_path")
if [ ${#wallpapers[@]} -gt $history_size ]; then
wallpapers=("${wallpapers[@]: -$history_size}")
fi
printf "%s\n" "${wallpapers[@]}" > "$wallpaper_history_path"
}
wallpaper_dir="$HOME/dev/git/.dotfiles/wallpapers/catppuccin"
files=($wallpaper_dir/*)
history_size=1
if [ $# -eq 1 ]; then
if is_integer "$1"; then
history_size=$1
if [ $history_size -lt 1 ]; then
echo "History size must be greater than 0"
exit 1
fi
if [ ${#files[@]} -le $history_size ]; then
echo "Number of wallpapers is less than or equal to the history size"
exit 1
fi
else
echo "Invalid argument: $1"
exit 1
fi
fi
if [ ${#files[@]} -eq 1 ]; then
set_wallpaper "${files[0]}" 0
exit 0
fi
if [ -f "$wallpaper_history_path" ]; then
mapfile -t history < "$wallpaper_history_path"
for hist_wallpaper in "${history[@]}"; do
for i in "${!files[@]}"; do
if [[ "${files[$i]}" == "$hist_wallpaper" ]]; then
unset 'files[i]'
fi
done
echo "Removing $hist_wallpaper"
done
# Re-create the files array to eliminate gaps
files=("${files[@]}")
fi
array_length=${#files[@]}
if [ $array_length -eq 0 ]; then
echo "No wallpapers available after filtering."
exit 1
fi
array_length=${#files[@]}
index=$(($RANDOM % $array_length))
set_wallpaper "${files[$index]}" $history_size