Add hyprland config
This commit is contained in:
parent
c9f3439835
commit
b21ebf8043
5 changed files with 316 additions and 0 deletions
84
hypr/hyprpaper_set.sh
Executable file
84
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