#!/bin/bash
# +SPDX:MIT
## Based on https://github.com/Alexays/Waybar/issues/961#issuecomment-753533975

## WE NEED SOME DEPENDENCIES
depcheck() {
	if ! command -v "$1" &> /dev/null ; then
		echo "Missing dependency $1"
		exit 1
	fi
}
depcheck waybar
depcheck inotifywait

COMPOSITOR="$1"
PYWAL="$2"

WATCHEDFILES=""

CONFIG_FILE="$XDG_CONFIG_HOME/waybar/config"
CONFIG_FILE_HYPRLAND="$XDG_CONFIG_HOME/waybar/config.hyprland.conf"
COLOR_FILE="$XDG_CONFIG_HOME/waybar/colours.css"
COLOR_FILE_PYWAL="$XDG_CACHE_HOME/wal/colors-waybar.css"
STYLE_FILE="$XDG_CONFIG_HOME/waybar/style.css"
STYLE_FILE_PYWAL="$XDG_CONFIG_HOME/waybar/style.pywal.css"

case "$COMPOSITOR" in
	"hyprland")
		WATCHEDFILES+=$CONFIG_FILE_HYPRLAND
		RUNCONFIG=$CONFIG_FILE_HYPRLAND
	;;
	*)
		WATCHEDFILES+=$CONFIG_FILE
		RUNCONFIG=$CONFIG_FILE
	;;
esac
WATCHEDFILES+=" "
case "$PYWAL" in
	"y"|"Y"|"yes")
		WATCHEDFILES+=$COLOR_FILE_PYWAL
		WATCHEDFILES+=" "
		WATCHEDFILES+=$STYLE_FILE_PYWAL
		RUNSTYLE=$STYLE_FILE_PYWAL
	;;
	*)
		WATCHEDFILES+=$COLOR_FILE
		WATCHEDFILES+=" "
		WATCHEDFILES+=$STYLE_FILE
		RUNSTYLE=$STYLE_FILE
	;;
esac

trap "killall waybar" EXIT

while true; do
	waybar -c $RUNCONFIG -s $RUNSTYLE &
	inotifywait -e create,modify $WATCHEDFILES
	killall waybar
done
