80 lines
2.3 KiB
Bash
Executable File
80 lines
2.3 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
if [ -z "$1" ]; then
|
|
image=$(zenity --file-selection --title="Open File" --file-filter="*.jpg *.jpeg *.png *.webp *.bmp *.jfif *.tiff *.avif *.heic *.heif")
|
|
else
|
|
image="$1"
|
|
fi
|
|
|
|
[ -z "$image" ] && exit 1
|
|
[ ! -f "$image" ] && exit 1
|
|
|
|
ext=${image##*.}
|
|
current_dir="$HOME/.config/wallpaper-chooser/current"
|
|
image_copied="$current_dir/wallpaper.$ext"
|
|
|
|
mkdir -p "$current_dir" || (
|
|
echo "Could not create directory $current_dir"
|
|
exit 1
|
|
)
|
|
|
|
temp_img=$(mktemp --suffix=."$ext") || exit 1
|
|
trap 'rm -f "$temp_img"' EXIT
|
|
cp "$image" "$temp_img" || exit 1
|
|
rm -f "$current_dir"/wallpaper.*
|
|
cp -f "$temp_img" "$image_copied" || (
|
|
echo "Could not copy image to $current_dir"
|
|
exit 1
|
|
)
|
|
|
|
if [ "$XDG_CURRENT_DESKTOP" = "Hyprland" ]; then
|
|
hyprctl hyprpaper reload ,"$image_copied" || exit 1
|
|
echo "preload = $image_copied" >"$HOME/.config/hypr/hyprpaper.conf"
|
|
echo "wallpaper = , $image_copied" >>"$HOME/.config/hypr/hyprpaper.conf"
|
|
|
|
notify-send "Wallpaper Changed" "$image"
|
|
elif [ "$XDG_CURRENT_DESKTOP" = "niri" ]; then
|
|
killall swaybg
|
|
killall swww
|
|
|
|
blur_dir="$HOME/.local/share/swaybg"
|
|
mkdir -p "$blur_dir" || (
|
|
echo "Could not create cache directory"
|
|
exit 1
|
|
)
|
|
rm -rf "${blur_dir:?}"/*
|
|
blurred_image="$blur_dir/blurred.$ext"
|
|
|
|
# blur
|
|
(
|
|
# notify-send "Generating Blurred Wallpaper" "This may take a few seconds..."
|
|
|
|
sigma=$(magick identify -format "%w %h" "$image_copied" | awk -v f=0.01 '{
|
|
m=($1>$2)?$1:$2;
|
|
s=m*f;
|
|
if(s<2) s=2;
|
|
if(s>200) s=200;
|
|
printf "%.2f", s
|
|
}')
|
|
|
|
magick "$image_copied" -blur 0x"$sigma" "$blurred_image" || (
|
|
echo "Could not create blurred image"
|
|
exit 1
|
|
)
|
|
|
|
nohup swaybg -i "$blurred_image" -m fill > /dev/null 2> /dev/null &
|
|
|
|
notify-send "Blurred Wallpaper set" "Selected wallpaper has been successfully applied for overview"
|
|
) &
|
|
|
|
nohup swww img "$image_copied" --transition-type fade --transition-duration 2 > /dev/null 2> /dev/null &
|
|
|
|
notify-send "Wallpaper Changed" "$image"
|
|
else
|
|
echo "Unsupported desktop environment: $XDG_CURRENT_DESKTOP"
|
|
exit 1
|
|
fi
|
|
|
|
# notify-send "Extracting Colors from Wallpaper" "This may take a few seconds..."
|
|
change-colortheme -i "$image_copied" || exit 1
|