#!/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 &