#!/bin/sh
# env
# Written in 2019-2020 by Lucas
# CC0 1.0 Universal/Public domain - No rights reserved
#
# To the extent possible under law, the author(s) have dedicated all
# copyright and related and neighboring rights to this software to the
# public domain worldwide. This software is distributed without any
# warranty. You should have received a copy of the CC0 Public Domain
# Dedication along with this software. If not, see
# <http://creativecommons.org/publicdomain/zero/1.0/>.

if [ -f ~/.config/herbstluftwm/theme ]; then
	. ~/.config/herbstluftwm/theme
fi

bar_geomtry()
{
	herbstclient monitor_rect "$m" | {
		read -r mx my mw mh
		printf "%ux%u+%u+%u\n" "$mw" "$hlwm_font_height" "$mx" "$my"
	}
}

show_tags()
{
	mon=$1
	herbstclient tag_status "$mon" | tr "\t" "\n" | {
		focused=$(herbstclient attr tags.focus.name)
		s=
		while IFS= read -r line; do
			[ -n "$line" ] || continue
			tag=${line#[.:+#%!-]}

			case $line in
			!*)	[ "$tag" != "$focused" ] && s=$s" $line"
				;;
			esac
		done
		printf "%%{l} %s%%{F%s}%s%%{F-}\n" \
		    "$focused" "$hlwm_color9" "$s"
	}
}

tags_status()
{
	mon=$1
	show_tags "$mon"
	herbstclient -i "tag_(changed|flags)" | while read -r discard; do
		show_tags "$mon"
	done
}

if [ $# -ne 1 ]; then
	printf "Usage: %s monitor\n" "${0##*/}" >&2
	exit 1
fi

geometry=$(bar_geometry "$m")

left=
center=
right=
{
	tags_status "$m" &
	spoon -t &
} | while IFS= read line; do
	case $line in
	"%{l}"*)
		left=$line
		;;
	"%{c}"*)
		center=$line
		;;
	"%{r}"*)
		right=$line
		;;
	esac
	printf "%s%s%s\n" "$left" "$center" "$right"
done | lemonbar-xft -b -g "$geometry" \
    -B "$hlwm_background" -F "$hlwm_foreground" -f "$hlwm_face" &

herbstclient -w reload
kill 0
