summaryrefslogtreecommitdiffstats
path: root/.config/herbstluftwm/panel.sh
blob: 14080b992e0c9560097c1bee99ee6ec0b054e6e9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
#!/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"