This script is the event generator for the bar. The ideas is that it sits waiting for stuff to happen (window focus, date change, music player, ...)
#!/usr/bin/env rc . ./lib
Kill the player monitor and the date subshell upon exit
fn quit {
kill $datepid
kill $playerpid
}
fn siguhp { quit }
fn sigint { quit }
The idea behind `uniq_linebuffered' is to avoid refreshing the bar every tick if the state doesn't change. It doesn't work for some reason however...
# XXX: for some reasons this don't work
fn uniq_linebuffered {
awk '$0 != l { print ; l=$0 ; fflush(); }'
}
Simulate the tag and play event at the start to force the process to update the tags and music info.
echo tag echo play
Date event generator:
while () {
date=`{date +'%H:%M, %Y-%m-%d'}
printf 'date\t%s\n' $"date
sleep 10 || break
} | uniq_linebuffered &
datepid=$apid
Music player event generator:
amused monitor play,next,prev,jump & playerpid=$apid
Window manager event generator:
hc --idle
Kill everything upon exit
quit