env/xdg-config-dir/herbstluftwm/herbstpanel.sh

84 lines
1.8 KiB
Bash

#!/bin/sh
# env
# Written in 2019 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
tagstatus() {
mon=$1
herbstclient tag_status "$mon" | tr "\t" "\n" | {
out=
while IFS= read -r line; do
[ -z "$line" ] && continue
tag=${line#[.:+#%!-]}
rev=
color=$hlwm_color8
case $line in
:*) color=$hlwm_foreground
;;
[#-]*) color=$hlwm_color14
;;
[%+]*) color=$hlwm_color6
;;
!*) color=$hlwm_color13
focused=$(herbstclient attr tags.focus.name)
if [ "$tag" = "$focused" ]; then
color=$hlwm_color14
fi
;;
esac
o=$o"%{O1}%{U$color+u}%{O5}%{U--u}"
done
printf "%%{c}%s%%{O1}\n" "$o"
}
}
taglist() {
mon=$1
tagstatus "$mon"
herbstclient -i "tag_changed|tag_flags" \
| while read -r discard; do
tagstatus "$mon"
done
}
if [ $# -ne 0 ]; then
printf "Usage: %s monitor x y width height\n" "${0##*/}" >&2
exit 1
fi
while IFS=" " read -r m x y w h; do
left=
center=
right=
{
taglist "$m" &
spoon -t &
} | while IFS= read line; do
case $line in
"%{c}"*)
center=$line
;;
"%{r}"*)
right=$line
;;
esac
printf "%s%s%s\n" "$left" "$center" "$right"
done | lemonbar -g "$w"x"$h"+"$x"+"$y" \
-B "$hlwm_background" -F "$hlwm_foreground" \
-f "$hlwm_font" | sh &
done
herbstclient -w reload >/dev/null
kill 0