.config/herbstluftwm/panel.sh
This commit is contained in:
parent
247f866dc1
commit
319fb2353d
1 changed files with 150 additions and 0 deletions
150
.config/herbstluftwm/panel.sh
Executable file
150
.config/herbstluftwm/panel.sh
Executable file
|
@ -0,0 +1,150 @@
|
|||
#!/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:
|
Loading…
Reference in a new issue