Files
2025-12-11 17:25:19 +01:00

202 lines
6.6 KiB
Bash
Executable File

#!/usr/bin/env bash
# _ __ ____
# | | /| / /__ _/ / /__ ___ ____ ___ ____
# | |/ |/ / _ `/ / / _ \/ _ `/ _ \/ -_) __/
# |__/|__/\_,_/_/_/ .__/\_,_/ .__/\__/_/
# /_/ /_/
# Source library.sh
source $HOME/.config/ml4w/library.sh
# -----------------------------------------------------
# Check to use wallpaper cache
# -----------------------------------------------------
if [ -f ~/.config/ml4w/settings/wallpaper_cache ]; then
use_cache=1
_writeLog "Using Wallpaper Cache"
else
use_cache=0
_writeLog "Wallpaper Cache disabled"
fi
# -----------------------------------------------------
# Create cache folder
# -----------------------------------------------------
ml4w_cache_folder="$HOME/.cache/ml4w/hyprland-dotfiles"
if [ ! -d $ml4w_cache_folder ]; then
mkdir -p $ml4w_cache_folder
fi
# -----------------------------------------------------
# Set defaults
# -----------------------------------------------------
force_generate=0
# Cache for generated wallpapers with effects
generatedversions="$ml4w_cache_folder/wallpaper-generated"
if [ ! -d $generatedversions ]; then
mkdir -p $generatedversions
fi
# Will be set when waypaper is running
waypaperrunning=$ml4w_cache_folder/waypaper-running
if [ -f $waypaperrunning ]; then
rm $waypaperrunning
exit
fi
cachefile="$ml4w_cache_folder/current_wallpaper"
blurredwallpaper="$ml4w_cache_folder/blurred_wallpaper.png"
squarewallpaper="$ml4w_cache_folder/square_wallpaper.png"
rasifile="$ml4w_cache_folder/current_wallpaper.rasi"
blurfile="$HOME/.config/ml4w/settings/blur.sh"
defaultwallpaper="$HOME/.config/ml4w/wallpapers/default.jpg"
wallpapereffect="$HOME/.config/ml4w/settings/wallpaper-effect.sh"
blur="50x30"
blur=$(cat $blurfile)
# -----------------------------------------------------
# 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
_writeLog "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
_writeLog "Path of current wallpaper copied to $cachefile"
# -----------------------------------------------------
# Get wallpaper filename
# -----------------------------------------------------
wallpaperfilename=$(basename $wallpaper)
_writeLog "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
_writeLog "Use cached wallpaper $effect-$wallpaperfilename"
else
_writeLog "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
_writeLog "Loading wallpaper $generatedversions/$effect-$wallpaperfilename with effect $effect"
_writeLog "Setting wallpaper with $used_wallpaper"
touch $waypaperrunning
waypaper --wallpaper $used_wallpaper
else
_writeLog "Wallpaper effect is set to off"
fi
else
effect="off"
fi
# -----------------------------------------------------
# Detect Theme
# -----------------------------------------------------
SETTINGS_FILE="$HOME/.config/gtk-3.0/settings.ini"
THEME_PREF=$(grep -E '^gtk-application-prefer-dark-theme=' "$SETTINGS_FILE" | awk -F'=' '{print $2}')
# -----------------------------------------------------
# Execute matugen
# -----------------------------------------------------
_writeLog "Execute matugen with $used_wallpaper"
if [ "$THEME_PREF" -eq 1 ]; then
$HOME/.local/bin/matugen image $used_wallpaper -m "dark"
else
$HOME/.local/bin/matugen image $used_wallpaper -m "light"
fi
# -----------------------------------------------------
# Reload Waybar
# -----------------------------------------------------
sleep 1
$HOME/.config/waybar/launch.sh
# -----------------------------------------------------
# Reload nwg-dock-hyprland
# -----------------------------------------------------
$HOME/.config/nwg-dock-hyprland/launch.sh &
# -----------------------------------------------------
# Update Pywalfox
# -----------------------------------------------------
if type pywalfox >/dev/null 2>&1; then
pywalfox update
fi
# -----------------------------------------------------
# Update SwayNC
# -----------------------------------------------------
sleep 0.1
swaync-client -rs
# -----------------------------------------------------
# Created blurred wallpaper
# -----------------------------------------------------
if [ -f $generatedversions/blur-$blur-$effect-$wallpaperfilename.png ] && [ "$force_generate" == "0" ] && [ "$use_cache" == "1" ]; then
_writeLog "Use cached wallpaper blur-$blur-$effect-$wallpaperfilename"
else
_writeLog "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
_writeLog "Resized to 75%"
if [ ! "$blur" == "0x0" ]; then
magick $blurredwallpaper -blur $blur $blurredwallpaper
cp $blurredwallpaper $generatedversions/blur-$blur-$effect-$wallpaperfilename.png
_writeLog "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
# -----------------------------------------------------
_writeLog "Generate new cached wallpaper square-$wallpaperfilename"
magick $tmpwallpaper -gravity Center -extent 1:1 $squarewallpaper
cp $squarewallpaper $generatedversions/square-$wallpaperfilename.png