#!/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=12 y=0 #$(expr ${geometry[3]} - $height) tag_width=40 font="-misc-tamsyn-medium-r-normal-*-14-*-*-*-*-*-iso8859-*" selcolor='#24c6e0' locolor='#657b83' bgcolor='#002b36' hicolor="#808080" urcolor="#e0c625" function uniq_linebuffered() { awk '$0 != l { print ; l=$0 ; fflush(); }' "$@" } function print_tags() { # draw tags echo -n "$separator" for i in "${TAGS[@]}" ; do if [[ "${TAGS2[@]}" == *"#${i:1}"* ]]; then echo -n "^bg($selcolor)^fg(#000000) ${i:1} ^fg()^bg()" elif [[ "${TAGS2[@]}" == *"+${i:1}"* ]]; then echo -n "^bg($locolor)^fg(#000000) ${i:1} ^fg()^bg()" else case ${i:0:1} in '#') echo -n "^bg($selcolor)^fg(#000000) ${i:1} ^fg()^bg()" ;; '+') echo -n "^bg($locolor)^fg(#000000) ${i:1} ^fg()^bg()" ;; ':') echo -n "^bg($hicolor)^fg(#000000) ${i:1} ^fg()^bg()" ;; '!') echo -n "^bg($urcolor)^fg(#000000) ${i:1} ^fg()^bg()" ;; *) echo -n "^bg($bgcolor)^fg(#ffffff) ${i:1} ^fg()^bg()" ;; esac fi echo -n "$separator" done } function print_mailboxes() { declare -A mailnames mailboxes=(ninthfloor gmail aethon ryuslash.org) mailnames=( [ninthfloor]="9f" [gmail]="gm" [aethon]="aet" [ryuslash.org]="ryu") mailtxt="" 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 mailtxt="$mailtxt${separator}^bg($mailcolor)^fg(#ffffff) ${mailnames[$j]} ^fg()^bg()" done mailtxt_only=$(echo -n "$mailtxt" | sed 's.\^[^(]*([^)]*)..g') let mailtxt_width=$(textwidth "$font" "$mailtxt_only")+10 echo -n "^p(_RIGHT)^p(-$mailtxt_width)$mailtxt" } function print_services() { services=(emacs httpd mysqld dunst xbindkeys mpdscribble sshd mpd) servicetxt="" for j in "${services[@]}"; do servicetxt="$servicetxt$separator$(status $j)" done servicetxt_only=$(echo -n "$servicetxt" | sed 's.\^[^(]*([^)]*)..g') let servicetxt_width=($(textwidth "$font" "$servicetxt_only")+7)/2 echo -n "^p(_CENTER)^p(-$servicetxt_width)$servicetxt" } function status() { running=$(${1}_running 2>/dev/null || pidof $1) if [ -n "$running" ]; then color="darkgreen" else color="darkred" fi echo -n "^bg($color)^fg(#ffffff) $1 ^fg()^bg()" } function emacs_running() { ps ax | awk '{ print $5 " " $6 }' | grep -E "^emacs --daemon" } { childpid=$! herbstclient --idle kill $childpid } 2> /dev/null | { TAGS=( $(herbstclient tag_status $monitor) ) TAGS2=( $(herbstclient tag_status $monitor2) ) separator="^fg($bgcolor)^ro(1x$height)^fg()" print_tags print_services print_mailboxes echo # wait for next event read line || break cmd=( $line ) # find out event origin case "${cmd[0]}" in tag*) TAGS=( $(herbstclient tag_status $monitor) ) TAGS2=( $(herbstclient tag_status $monitor2) ) ;; quit_panel) exit ;; esac sleep 1s } 2> /dev/null | dzen2 -w $width -x $x -y $y -fn "$font" -h $height \ -ta l -bg "$bgcolor" # Local Variables: # eval: (git-auto-commit-mode 1) # End: