2025-05-22 17:56:05 -05:00

173 lines
5.9 KiB
Bash

#!/bin/bash
# _ _
# __ ____ _| | |_ __ __ _ _ __ ___ _ __
# \ \ /\ / / _` | | | '_ \ / _` | '_ \ / _ \ '__|
# \ V V / (_| | | | |_) | (_| | |_) | __/ |
# \_/\_/ \__,_|_|_| .__/ \__,_| .__/ \___|_|
# |_| |_|
#
# -----------------------------------------------------
# Check to use wallpaper cache
# -----------------------------------------------------
if [ -f ~/.config/ml4w/settings/wallpaper_cache ]; then
use_cache=1
echo ":: Using Wallpaper Cache"
else
use_cache=0
echo ":: Wallpaper Cache disabled"
fi
# -----------------------------------------------------
# Set defaults
# -----------------------------------------------------
force_generate=0
generatedversions="$HOME/.config/ml4w/cache/wallpaper-generated"
waypaperrunning=$HOME/.config/ml4w/cache/waypaper-running
cachefile="$HOME/.config/ml4w/cache/current_wallpaper"
blurredwallpaper="$HOME/.config/ml4w/cache/blurred_wallpaper.png"
squarewallpaper="$HOME/.config/ml4w/cache/square_wallpaper.png"
rasifile="$HOME/.config/ml4w/cache/current_wallpaper.rasi"
blurfile="$HOME/.config/ml4w/settings/blur.sh"
defaultwallpaper="$HOME/Pictures/Wallpapers/faroe_islands.jpg"
wallpapereffect="$HOME/.config/ml4w/settings/wallpaper-effect.sh"
blur="50x30"
blur=$(cat $blurfile)
# Ensures that the script only run once if wallpaper effect enabled
if [ -f $waypaperrunning ]; then
rm $waypaperrunning
exit
fi
# Create folder with generated versions of wallpaper if not exists
if [ ! -d $generatedversions ]; then
mkdir $generatedversions
fi
# -----------------------------------------------------
# Get selected wallpaper
# -----------------------------------------------------
if [ -z $1 ]; then
if [ -f $cachefile ]; then
wallpaper=$(cat $cachefile)
else
wallpaper=$defaultwallpaper
fi
else
wallpaper=$1
fi
used_wallpaper=$wallpaper
echo ":: Setting wallpaper with source image $wallpaper"
tmpwallpaper=$wallpaper
# -----------------------------------------------------
# Copy path of current wallpaper to cache file
# -----------------------------------------------------
if [ ! -f $cachefile ]; then
touch $cachefile
fi
echo "$wallpaper" > $cachefile
echo ":: Path of current wallpaper copied to $cachefile"
# -----------------------------------------------------
# Get wallpaper filename
# -----------------------------------------------------
wallpaperfilename=$(basename $wallpaper)
echo ":: Wallpaper Filename: $wallpaperfilename"
# -----------------------------------------------------
# Wallpaper Effects
# -----------------------------------------------------
if [ -f $wallpapereffect ]; then
effect=$(cat $wallpapereffect)
if [ ! "$effect" == "off" ]; then
used_wallpaper=$generatedversions/$effect-$wallpaperfilename
if [ -f $generatedversions/$effect-$wallpaperfilename ] && [ "$force_generate" == "0" ] && [ "$use_cache" == "1" ]; then
echo ":: Use cached wallpaper $effect-$wallpaperfilename"
else
echo ":: Generate new cached wallpaper $effect-$wallpaperfilename with effect $effect"
notify-send --replace-id=1 "Using wallpaper effect $effect..." "with image $wallpaperfilename" -h int:value:33
source $HOME/.config/hypr/effects/wallpaper/$effect
fi
echo ":: Loading wallpaper $generatedversions/$effect-$wallpaperfilename with effect $effect"
echo ":: Setting wallpaper with $used_wallpaper"
touch $waypaperrunning
waypaper --wallpaper $used_wallpaper
else
echo ":: Wallpaper effect is set to off"
fi
else
effect="off"
fi
# -----------------------------------------------------
# Execute pywal
# -----------------------------------------------------
echo ":: Execute pywal with $used_wallpaper"
wal -q -i "$used_wallpaper"
source "$HOME/.cache/wal/colors.sh"
# -----------------------------------------------------
# Reload Waybar
# -----------------------------------------------------
killall -SIGUSR2 waybar
# -----------------------------------------------------
# Pywalfox
# -----------------------------------------------------
if type pywalfox > /dev/null 2>&1; then
pywalfox update
fi
# -----------------------------------------------------
# Created blurred wallpaper
# -----------------------------------------------------
if [ -f $generatedversions/blur-$blur-$effect-$wallpaperfilename.png ] && [ "$force_generate" == "0" ] && [ "$use_cache" == "1" ]; then
echo ":: Use cached wallpaper blur-$blur-$effect-$wallpaperfilename"
else
echo ":: Generate new cached wallpaper blur-$blur-$effect-$wallpaperfilename with blur $blur"
# notify-send --replace-id=1 "Generate new blurred version" "with blur $blur" -h int:value:66
magick $used_wallpaper -resize 75% $blurredwallpaper
echo ":: Resized to 75%"
if [ ! "$blur" == "0x0" ]; then
magick $blurredwallpaper -blur $blur $blurredwallpaper
cp $blurredwallpaper $generatedversions/blur-$blur-$effect-$wallpaperfilename.png
echo ":: Blurred"
fi
fi
cp $generatedversions/blur-$blur-$effect-$wallpaperfilename.png $blurredwallpaper
# -----------------------------------------------------
# Create rasi file
# -----------------------------------------------------
if [ ! -f $rasifile ]; then
touch $rasifile
fi
echo "* { current-image: url(\"$blurredwallpaper\", height); }" > "$rasifile"
# -----------------------------------------------------
# Created square wallpaper
# -----------------------------------------------------
echo ":: Generate new cached wallpaper square-$wallpaperfilename"
magick $tmpwallpaper -gravity Center -extent 1:1 $squarewallpaper
cp $squarewallpaper $generatedversions/square-$wallpaperfilename.png
# -----------------------------------------------------
# Reload AGS
# -----------------------------------------------------
ags quit &
sleep 0.2
ags run &