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