#!/bin/bash monitor=${1:-0} monitor2=1 geometry=( $(herbstclient monitor_rect "$monitor") ) if [ -z "$geometry" ] ;then echo "Invalid monitor $monitor" exit 1 fi # geometry has the format: WxH+X+Y x=${geometry[0]} width=${geometry[2]} height=1 y=$(expr ${geometry[3]} - $height) tag_width=40 font="-misc-tamsyn-medium-r-normal-*-14-*-*-*-*-*-iso8859-*" selcolor='#24c6e0' locolor='#15abc3' bgcolor='#000000' hicolor="#808080" urcolor="#e0c625" function uniq_linebuffered() { awk '$0 != l { print ; l=$0 ; fflush(); }' "$@" } herbstclient pad $monitor -5 -5 $(expr -5 + $height) -5 herbstclient pad $monitor2 -5 -5 -5 -5 { childpid=$! herbstclient --idle kill $childpid } 2> /dev/null | { TAGS=( $(herbstclient tag_status $monitor) ) TAGS2=( $(herbstclient tag_status $monitor2) ) while true ; do separator="^fg($bgcolor)^ro(1x$height)^fg()" # draw tags echo -n "$separator" for i in "${TAGS[@]}" ; do if [[ "${TAGS2[@]}" == *"#${i:1}"* ]]; then echo -n "^fg($selcolor)^ro(${tag_width}x$height)^fg()" elif [[ "${TAGS2[@]}" == *"+${i:1}"* ]]; then echo -n "^fg($locolor)^ro(${tag_width}x$height)^fg()" else case ${i:0:1} in '#') echo -n "^fg($selcolor)^ro(${tag_width}x$height)^fg()" ;; '+') echo -n "^fg($locolor)^ro(${tag_width}x$height)^fg()" ;; ':') echo -n "^fg($hicolor)^ro(${tag_width}x$height)^fg()" ;; '!') echo -n "^fg($urcolor)^ro(${tag_width}x$height)^fg()" ;; *) echo -n "^bg()^fg($bgcolor)^ro(${tag_width}x$height)^fg()" ;; esac fi echo -n "$separator" done mailboxes=(ninthfloor gmail arch aethon ryuslash.org) echo -n "^p(_RIGHT)^p(-$(expr $tag_width \* ${#mailboxes[@]} + 5))" for j in "${mailboxes[@]}"; do mailfile="$HOME/documents/mail/$j/INBOX/new/" mailcnt=$(ls $mailfile | wc -l) if [ $mailcnt -gt 0 ]; then mailsha1=$(echo $j | sha1sum) mailcolor="#${mailsha1:0:6}" else mailcolor=$bgcolor fi echo -n "^fg($mailcolor)^ro(${tag_width}x$height)^fg()$separator" done echo # wait for next event read line || break cmd=( $line ) # find out event origin case "${cmd[0]}" in tag*) #echo "reseting tags" >&2 TAGS=( $(herbstclient tag_status $monitor) ) TAGS2=( $(herbstclient tag_status $monitor2) ) ;; quit_panel) exit ;; esac done } 2> /dev/null | dzen2 -w $width -x $x -y $y -fn "$font" -h $height \ -ta l -bg "$bgcolor"