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:
parent
5759f6a798
commit
bc87253453
65 changed files with 0 additions and 0 deletions
84
linux_home/.config/hypr/hyprpaper_set.sh
Executable file
84
linux_home/.config/hypr/hyprpaper_set.sh
Executable 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
|
||||
Loading…
Add table
Add a link
Reference in a new issue