diff --git a/.config/herbstluftwm/panel.sh b/.config/herbstluftwm/panel.sh index 34f1487..448a0c6 100755 --- a/.config/herbstluftwm/panel.sh +++ b/.config/herbstluftwm/panel.sh @@ -1,6 +1,7 @@ #!/bin/bash monitor=${1:-0} +monitor2=1 geometry=( $(herbstclient monitor_rect "$monitor") ) if [ -z "$geometry" ] ;then echo "Invalid monitor $monitor" @@ -10,70 +11,75 @@ fi x=${geometry[0]} y=${geometry[1]} width=${geometry[2]} -height=16 +height=1 +tag_width=40 font="-misc-tamsyn-medium-r-normal-*-14-*-*-*-*-*-iso8859-*" -fgcolor='#eeeeec' -bgcolor='#252a2b' -hintcolor="#0c191c" + +selcolor='#24c6e0' +locolor='#15abc3' +bgcolor='#000000' +hicolor="#808080" +urcolor="#e0c625" function uniq_linebuffered() { awk '$0 != l { print ; l=$0 ; fflush(); }' "$@" } -herbstclient pad $monitor $height +herbstclient pad $monitor $(expr $height - 4) -5 -5 -5 +herbstclient pad $monitor2 -5 -5 -5 -5 { - # events: - #mpc idleloop player & - while true ; do - date +'date ^fg($fgcolor)%H:%M^fg(#909090), %Y-%m-^fg($fgcolor)%d' - sleep 1 || break - done > >(uniq_linebuffered) & childpid=$! herbstclient --idle kill $childpid } 2> /dev/null | { TAGS=( $(herbstclient tag_status $monitor) ) - date="" + TAGS2=( $(herbstclient tag_status $monitor2) ) while true ; do - bordercolor="#26221C" - separator="^fg(#141414)^ro(1x$height)^fg()" + separator="^fg($bgcolor)^ro(1x$height)^fg()" # draw tags echo -n "$separator" for i in "${TAGS[@]}" ; do - case ${i:0:1} in - '#') - echo -n "^bg(#0c191c)^fg(#eeeeec)" - ;; - '+') - echo -n "^bg(#2e3436)^fg(#555753)" - ;; - ':') - echo -n "^bg(#2e3436)^fg($fgcolor)" - ;; - '!') - echo -n "^bg(#a40000)^fg(#edd400)" - ;; - *) - echo -n "^bg()^fg()" - ;; - esac - echo -n " ${i:1} " + 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 - echo -n "^bg()^p(_CENTER)" - # small adjustments - nfmail=`ls ~/documents/mail/ninthfloor/INBOX/new/ | wc -l` - gmail=`ls ~/documents/mail/gmail/INBOX/new/ | wc -l` - archmail=`ls ~/documents/mail/arch/INBOX/new/ | wc -l` - aethonmail=`ls ~/documents/mail/aethon/INBOX/new/ | wc -l` - todoline=`cat ~/.config/herbstluftwm/todo` - todoline_sha1=`echo $todoline | sha1sum` - todoline_color=${todoline_sha1:0:6} - right="^fg(#$todoline_color)$todoline^fg() $separator 9f: $nfmail $separator gmail: $gmail $separator arch: $archmail $separator aethon: $aethonmail $separator^bg($hintcolor) $date $separator" - right_text_only=$(echo -n "$right"|sed 's.\^[^(]*([^)]*)..g') - # get width of right aligned text.. and add some space.. - width=$(textwidth "$font" "$right_text_only ") - echo -n "^p(_RIGHT)^p(-$width)$right" + + 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 @@ -83,17 +89,12 @@ herbstclient pad $monitor $height tag*) #echo "reseting tags" >&2 TAGS=( $(herbstclient tag_status $monitor) ) - ;; - date) - #echo "reseting date" >&2 - date="${cmd[@]:1}" + TAGS2=( $(herbstclient tag_status $monitor2) ) ;; quit_panel) exit ;; - #player) - # ;; esac - done + done } 2> /dev/null | dzen2 -w $width -x $x -y $y -fn "$font" -h $height \ - -ta l -bg "$bgcolor" -fg "$fgcolor" + -ta l -bg "$bgcolor"