Make color env change with wallpaper too

This commit is contained in:
Chizuui
2025-12-02 07:39:35 +07:00
parent 5cc3fb0593
commit f869bad388

View File

@@ -5,16 +5,22 @@ WALLPAPERS="$HOME/Pictures/Wallpaper"
CACHE_DIR="$HOME/.cache/wallpaper-picker" CACHE_DIR="$HOME/.cache/wallpaper-picker"
THUMB_WIDTH="250" THUMB_WIDTH="250"
THUMB_HEIGHT="141" THUMB_HEIGHT="141"
THEMES="$HOME/.config/wal/themes" THEMES="$HOME/.config/wal/themes" # still used for name/branding, not applied
WAL_BIN="/usr/local/bin/wal"
HOOKS="$HOME/.config/wal/hooks/hooks.sh" HOOKS="$HOME/.config/wal/hooks/hooks.sh"
FASTFETCH_CFG="$HOME/.config/fastfetch/config.jsonc" FASTFETCH_CFG="$HOME/.config/fastfetch/config.jsonc"
# WAL — resolve real binary dynamically (fixes manual mismatch)
WAL_BIN="$(command -v wal)"
if [[ -z "$WAL_BIN" ]]; then
notify-send "Wallpaper Picker" "pywal (wal) not found in PATH"
exit 1
fi
# Make the thumb dir if it's not exist # Make the thumb dir if it's not exist
mkdir -p "$CACHE_DIR" mkdir -p "$CACHE_DIR"
# Generate thumbnail # Generate thumbnail
generate_thumbnail(){ generate_thumbnail() {
local input="$1" local input="$1"
local output="$2" local output="$2"
magick "$input" -thumbnail "${THUMB_WIDTH}x${THUMB_HEIGHT}^" \ magick "$input" -thumbnail "${THUMB_WIDTH}x${THUMB_HEIGHT}^" \
@@ -22,7 +28,7 @@ generate_thumbnail(){
} }
# Generate menu with thumbnails # Generate menu with thumbnails
generate_menu(){ generate_menu() {
# Find all images and sort naturally # Find all images and sort naturally
while IFS= read -r img; do while IFS= read -r img; do
[[ -f "$img" ]] || continue [[ -f "$img" ]] || continue
@@ -39,9 +45,9 @@ generate_menu(){
done < <(find "$WALLPAPERS" -maxdepth 1 -type f \( -iname "*.jpg" -o -iname "*.jpeg" -o -iname "*.png" \) | sort -V) done < <(find "$WALLPAPERS" -maxdepth 1 -type f \( -iname "*.jpg" -o -iname "*.jpeg" -o -iname "*.png" \) | sort -V)
} }
# Run wofi with thumbnails # Run wofi with thumbnails
CHOICE=$(generate_menu | wofi --show dmenu \ CHOICE=$(
generate_menu | wofi --show dmenu \
--cache-file /dev/null \ --cache-file /dev/null \
--define "image-size=${THUMB_WIDTH}x${THUMB_HEIGHT}" \ --define "image-size=${THUMB_WIDTH}x${THUMB_HEIGHT}" \
--columns 3 \ --columns 3 \
@@ -56,7 +62,7 @@ CHOICE=$(generate_menu | wofi --show dmenu \
WAL_NAME=$(basename "$CHOICE") WAL_NAME=$(basename "$CHOICE")
SELECTED="$WALLPAPERS/$WAL_NAME" SELECTED="$WALLPAPERS/$WAL_NAME"
# Extract THEME name # Extract THEME name (still used for logo mapping)
BASENAME=$(basename "$SELECTED") BASENAME=$(basename "$SELECTED")
THEME="${BASENAME%%_*}" THEME="${BASENAME%%_*}"
@@ -81,18 +87,21 @@ else
LOGO_PATH="$HOME/.config/fastfetch/logo/john_wuthering.png" LOGO_PATH="$HOME/.config/fastfetch/logo/john_wuthering.png"
fi fi
# Apply theme
THEME_FILE="$THEMES/$THEME.json"
if [ -f "$THEME_FILE" ]; then
"$WAL_BIN" --theme "$THEME_FILE"
else
"$WAL_BIN" -i "$SELECTED"
fi
# Update GNOME wallpaper # Update GNOME wallpaper
gsettings set org.gnome.desktop.background picture-uri-dark "file://$SELECTED" gsettings set org.gnome.desktop.background picture-uri-dark "file://$SELECTED"
gsettings set org.gnome.desktop.screensaver picture-uri "file://$SELECTED" gsettings set org.gnome.desktop.screensaver picture-uri "file://$SELECTED"
# Force fresh pywal colors every time (no cached scheme)
rm -rf "$HOME/.cache/wal"/*
# ALWAYS regenerate pywal colors from selected wallpaper (Option A)
"$WAL_BIN" -i "$SELECTED"
# Reload running WezTerm instances so new wal colors apply
if command -v wezterm >/dev/null 2>&1; then
wezterm cli reload-configuration >/dev/null 2>&1
fi
# Update fastfetch config # Update fastfetch config
tmpfile=$(mktemp) tmpfile=$(mktemp)
jq --arg logo "$LOGO_PATH" \ jq --arg logo "$LOGO_PATH" \
@@ -100,7 +109,7 @@ jq --arg logo "$LOGO_PATH" \
' '
.logo.source = $logo .logo.source = $logo
| (.modules[] | select(.key? == "wife ").format) = $wife | (.modules[] | select(.key? == "wife ").format) = $wife
' "$FASTFETCH_CFG" > "$tmpfile" && mv "$tmpfile" "$FASTFETCH_CFG" ' "$FASTFETCH_CFG" >"$tmpfile" && mv "$tmpfile" "$FASTFETCH_CFG"
touch "$HOME/.config/fastfetch/.reload_flag" touch "$HOME/.config/fastfetch/.reload_flag"