66 lines
1.9 KiB
Bash
Executable File
66 lines
1.9 KiB
Bash
Executable File
#!/bin/zsh
|
|
|
|
export XDG_RUNTIME_DIR="/run/user/1000"
|
|
|
|
output_file="/tmp/random_images.list"
|
|
scheme_dir="/home/inorishio/.cache/wal/schemes/"
|
|
background_dir="/home/inorishio/Pictures/Backgrounds/"
|
|
|
|
# Load list of random images
|
|
random_images=("${(@f)$(< "$output_file")}")
|
|
|
|
populate_random_schemes() {
|
|
local tmp=()
|
|
for img in "${random_images[@]}"; do
|
|
img_name="${img##*/}" # get filename
|
|
img_name="${img_name%.*}" # remove extension
|
|
tmp+=("$scheme_dir/$img_name.json")
|
|
done
|
|
random_schemes=("${tmp[@]}")
|
|
}
|
|
|
|
populate_random_schemes
|
|
|
|
current_workspace=""
|
|
|
|
handle_workspace_event() {
|
|
if [[ "$1" == *"workspace>>"* ]]; then
|
|
ws="${1##*>>}"
|
|
current_workspace="$ws"
|
|
|
|
if (( ws <= ${#random_schemes[@]} )); then
|
|
wal -f "${random_schemes[$ws]}"
|
|
echo "Applied ${random_schemes[$ws]} for workspace $ws"
|
|
else
|
|
echo "No theme assigned for workspace $ws"
|
|
fi
|
|
fi
|
|
}
|
|
|
|
# 📦 Poll terminal workspace assignment in background
|
|
track_terminal_workspace() {
|
|
local last_ws=""
|
|
while true; do
|
|
terminal_ws=$(hyprctl clients -j | jq -r '.[] | select(.class == "foot") | .workspace.id' | head -n1)
|
|
|
|
if [[ "$terminal_ws" != "$last_ws" && "$terminal_ws" != "null" ]]; then
|
|
if (( terminal_ws <= ${#random_schemes[@]} )); then
|
|
wal -f "${random_schemes[$terminal_ws]}"
|
|
echo "Applied ${random_schemes[$terminal_ws]} for foot terminal on workspace $terminal_ws"
|
|
fi
|
|
last_ws="$terminal_ws"
|
|
fi
|
|
|
|
sleep 0.5
|
|
done
|
|
}
|
|
|
|
# Start the terminal workspace watcher in background
|
|
track_terminal_workspace &
|
|
|
|
# Listen for Hyprland events in foreground
|
|
socat -U - UNIX-CONNECT:$XDG_RUNTIME_DIR/hypr/$HYPRLAND_INSTANCE_SIGNATURE/.socket2.sock |
|
|
while read -r line; do
|
|
handle_workspace_event "$line"
|
|
done
|