aboutsummaryrefslogtreecommitdiffstats
path: root/.config/herbstluftwm/panel.sh
diff options
context:
space:
mode:
authorGravatar Tom van der Lee <t0m.vd.l33@gmail.com>2014-10-25 22:26:54 +0200
committerGravatar Tom van der Lee <t0m.vd.l33@gmail.com>2014-10-25 22:26:54 +0200
commit3e94a3e724c36267fa2e4039e3759473c59e8510 (patch)
tree379d0598c0d26d3b0c746604d80bb9e803371fb0 /.config/herbstluftwm/panel.sh
parent8ecace69cb3b35ac6b72859ebf0be70d11d2d71e (diff)
downloaddotfiles-3e94a3e724c36267fa2e4039e3759473c59e8510.tar.gz
dotfiles-3e94a3e724c36267fa2e4039e3759473c59e8510.tar.bz2
dotfiles-3e94a3e724c36267fa2e4039e3759473c59e8510.zip
Restructured dotfile repo to take advantage of GNU Stow
Diffstat (limited to '.config/herbstluftwm/panel.sh')
-rwxr-xr-x.config/herbstluftwm/panel.sh219
1 files changed, 0 insertions, 219 deletions
diff --git a/.config/herbstluftwm/panel.sh b/.config/herbstluftwm/panel.sh
deleted file mode 100755
index 24d0e12..0000000
--- a/.config/herbstluftwm/panel.sh
+++ /dev/null
@@ -1,219 +0,0 @@
1#!/bin/bash
2
3hc() {
4 "${herbstclient_command[@]:-herbstclient}" "$@" ;
5}
6
7add_alpha_channel(){
8 echo "$1" | \
9 sed "s/.*#\([0-9a-fA-F]*\).*/#ff\1/"
10}
11
12monitor=${1:-0}
13panel_height=$2
14padding=$3
15
16light=$(add_alpha_channel $WM_LIGHT)
17llight=$(add_alpha_channel $WM_LLIGHT)
18accent=$(add_alpha_channel $WM_ACCENT)
19ldark=$(add_alpha_channel $WM_LDARK)
20dark=$(add_alpha_channel $WM_DARK)
21
22font="-*-fixed-medium-*-*-*-14-*-*-*-*-*-*-*"
23#font=""
24selected_bg=$accent
25normal_bg=$dark
26selected_txt=$dark
27normal_txt=$light
28inactive_txt=$llight
29
30geometry=( $(herbstclient monitor_rect "$monitor") )
31if [ -z "$geometry" ] ;then
32 echo "Invalid monitor $monitor"
33 exit 1
34fi
35# geometry has the format W H X Y
36x=$(echo "${geometry[0]} + $padding" | bc)
37y=$(echo "${geometry[1]} + $padding" | bc)
38panel_width=$(echo "${geometry[2]} - (2 * $padding)" | bc)
39bar_opts="-g ${panel_width}x${panel_height}+${x}+${y} -f ${font} -u 2 -B ${normal_bg} -F ${normal_txt}"
40
41hc pad $monitor $(echo "$panel_height + $padding" | bc)
42
43if awk -Wv 2>/dev/null | head -1 | grep -q '^mawk'; then
44 # mawk needs "-W interactive" to line-buffer stdout correctly
45 # http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=593504
46 uniq_linebuffered() {
47 awk -W interactive '$0 != l { print ; l=$0 ; fflush(); }' "$@"
48 }
49else
50 # other awk versions (e.g. gawk) issue a warning with "-W interactive", so
51 # we don't want to use it there.
52 uniq_linebuffered() {
53 awk '$0 != l { print ; l=$0 ; fflush(); }' "$@"
54 }
55fi
56
57{
58 ### Event generator ###
59 # <eventname>\t<data> [...]
60 # e.g.
61 # date ^fg(#efefef)18:33^fg(#909090), 2013-10-^fg(#efefef)29
62
63 while true ; do
64 # Volume
65 if pgrep pulseaudio > /dev/null ; then
66 volumes=$(\
67 amixer get Master | \
68 grep "Mono: Playback"\
69 )
70 vol=$(\
71 echo $volumes | \
72 sed "s/.*\[\([0-9]*\)%\].*/\1/"\
73 )
74 if [ -z $vol ] ; then
75 echo -e "volume\toff"
76 elif [ $vol -le 0 ] ; then
77 echo -e "volume\t%{F$normal_txt}Volume muted"
78 else
79 echo -e "volume\t%{F$normal_txt}Volume: $vol%%%{F-}"
80 fi
81 else
82 echo -e "volume\toff"
83 fi
84
85 # Network
86 iwconfig=$(iwconfig wlp3s0)
87 if [ -z $iwconfig ] ; then
88 echo -e "net\toff"
89 else
90 ssid=$(\
91 echo $iwconfig | \
92 sed "s/.*ESSID:\(\".*\"\).*/\1/" | \
93 sed "s/.*\(off\/any\).*/\"\1\"/" | \
94 sed "s/.*\"\(.*\)\".*/\1/"\
95 )
96 if [ $ssid = "off/any" ] ; then
97 ifconf=$
98 echo -e "net\t%{F$normal_txt}Net: No connection%{F-}"
99 else
100 echo -e "net\t%{F$normal_txt}Net: $ssid%{F-}"
101 fi
102 fi
103
104 # Battery
105 if $(test -e /sys/class/power_supply/BAT1) ; then
106 bat_lvl=$(cat /sys/class/power_supply/BAT1/capacity)
107 if [ $bat_lvl -lt 15 ] ; then
108 bat_color=$accent
109 else
110 bat_color=$normal_txt
111 fi
112 state=$(cat /sys/class/power_supply/BAT1/status)
113 echo -e "battery\t%{F$normal_txt}$state: %{F$bat_color}$bat_lvl%{F$normal_txt}%%%{F-}"
114 else
115 echo -e "battery\toff"
116 fi
117
118 # Time
119 echo -e $(date +$"date\t%{F$normal_txt}%H:%M:%S %{F$inactive_txt}(%d-%m-%Y)%{F-}")
120 sleep 1 || break
121 done > >(uniq_linebuffered) &
122 childpid=$!
123 hc --idle
124 kill $childpid
125} 2> /dev/null | {
126
127 IFS=$'\t' read -ra tags <<< "$(hc tag_status $monitor)"
128 visible=true
129 date=""
130 volume=""
131 battery=""
132 net=""
133 windowtitle=""
134 while true ; do
135 separator="%{F$accent}|%{F-}"
136 # draw tags
137 for i in "${tags[@]}" ; do
138 case ${i:0:1} in
139 '#')
140 echo -n "%{U$accent+u}%{B-}%{F$normal_txt}"
141 ;;
142 '+')
143 echo -n "%{B$accent}%{F$normal_bg}"
144 ;;
145 ':')
146 echo -n "%{B-}%{F$normal_txt}"
147 ;;
148 '!')
149 echo -n "%{B$normal_txt}%{F$normal_bg}"
150 ;;
151 *)
152 echo -n "%{B-}%{F$inactive_txt}"
153 ;;
154 esac
155 echo -n "%{A:tag,${i:1}:} ${i:1} %{A}%{F-}%{B-}%{U-u}"
156 done
157 echo -n "$separator"
158 echo -n "%{B-}%{F-} ${windowtitle//^/^^}"
159
160 #Right part of panel
161 right="$volume$net$battery$date "
162 echo -n "%{r}$right"
163 echo
164
165 # wait for next event
166 IFS=$'\t' read -ra cmd || break
167 case "${cmd[0]}" in
168 tag*)
169 #echo "resetting tags" >&2
170 IFS=$'\t' read -ra tags <<< "$(hc tag_status $monitor)"
171 ;;
172 volume)
173 volume="${cmd[@]:1}"
174 if [ $volume == "off" ] ; then
175 volume=""
176 else
177 volume="$volume $separator%{B-} "
178 fi
179 ;;
180 net)
181 net="${cmd[@]:1}"
182 if [ $net = "off" ] ; then
183 net=""
184 else
185 net="$net $separator%{B-} "
186 fi
187 ;;
188 battery)
189 battery="${cmd[@]:1}"
190 if [ $battery == "off" ] ; then
191 battery=""
192 else
193 battery="$battery $separator%{B-} "
194 fi
195 ;;
196 date)
197 #echo "resetting date" >&2
198 date="${cmd[@]:1}"
199 ;;
200 focus_changed|window_title_changed)
201 windowtitle="${cmd[@]:2}"
202 ;;
203 esac
204 done
205} 2> /dev/null | bar $bar_opts | {
206 #Handle clickable areas
207 while read line; do
208 IFS=',' read -a c <<< $(echo $line)
209 case "${c[0]}" in
210 tag)
211 herbstclient use "${c[1]}"
212 echo "herbstclient use \"${c[1]}\""
213 ;;
214 *)
215 echo "${c[0]}: not valid command"
216 ;;
217 esac
218 done
219}