#!/usr/bin/env bash

# XFCE
# Its purpose is to obtain the current wallpaper as an absolute path, or file URI (e.g. file://a/b.jpg)

XDG_CURRENT_DESKTOP="`echo $XDG_CURRENT_DESKTOP`"

if [ "$XDG_CURRENT_DESKTOP" == "XFCE" ]; then
        # Find first existing backdrop property (monitor names vary by setup)
        prop=$(xfconf-query -c xfce4-desktop -p /backdrop -l 2>/dev/null | \
grep -E -e "screen.*/monitor.*/last-image$" -e "screen.*/monitor.*image-path$" | head -n1)
        if [ -n "$prop" ]; then
for i in "/backdrop/screen0/monitor0/image-path" \
"/backdrop/screen0/monitor0/last-image" \
"/backdrop/screen0/monitor0/image-path" \
"/backdrop/screen0/monitor1/last-image" \
"/backdrop/screen0/monitor1/image-path" \
"/backdrop/screen0/monitorHDMI-A-0/workspace0/last-image" \
"/backdrop/screen0/monitorVirtual-1/workspace0/last-image"; do
xfconf-query -c xfce4-desktop -p "$i" 2>/dev/null
done
       else
xfconf-query -c xfce4-desktop -p "$prop" 2>/dev/null
fi
DIR="$HOME/Wallpapers/Web"
# Check if wallpaper directory exists
[[ ! -d "$DIR" ]] && { echo "Wallpaper directory not found: $DIR"; exit 1; }

# Get image files
mapfile -t files < <(find "$DIR" -type f \( -iname '*.svg' -o -iname '*.jpg' -o -iname '*.jpeg' -o -iname '*.png' -o -iname '*.webp' \))
[[ ${#files[@]} -eq 0 ]] && { echo "No images found in $DIR"; exit 1; }

# Pick random image
PIC="${files[RANDOM % ${#files[@]}]}"
# Get current workspace
workspace="$(xdotool get_desktop)"

# Detect monitor using xrandr (fallback if needed)
monitor=$(xrandr --query | awk '/ connected/ {print $1; exit}')
[[ -z "$monitor" ]] && {
    monitor=$(xfconf-query -c xfce4-desktop -lv \
        | grep -oP '/backdrop/screen0/monitor\K[^/]*' \
        | sort -u | head -n1)
}

[[ -z "$monitor" ]] && { echo "No monitor found"; exit 1; }

# Set wallpaper
xfconf-query -c xfce4-desktop -p "/backdrop/screen0/monitor$monitor/workspace${workspace}/last-image" -s "$PIC"

# Save image path
echo "'$PIC'" > "$HOME/.random-background/wallpaper_data_0"
else
echo "No pic found"
 fi


