mikshaw <mrblog_AT_yahoo.com> writes:
>>From Anselm R. Garbe:
>> Yes that is true, and in such scenario one needs to sleep after
>> the remove at least the same timeout, than refresh.
>
> Thank you. I had a notion that something like that would be needed,
> but I couldn't quite work out the logic of it. It seemed as though
> sleeping en extra 21+ seconds might not affect an existing instance
> of status, but it makes sense if the sleep occurs between removing
> the status label and recreating it.
It doesn't _always_ work. I have a status script with an interval set
to 20 minutes. It checks for active games on an online go server
(dragongoserver.net -- I'm happy to share the script if there're other
go players who use wmii).
If I run wmiirc twice within 20 minutes I'll get multiple instances of
the script if it's set up like the status script. To solve that
problem, here's what I use to do handle creation of the bar:
create_bar () {
name="$1"; shift
interval="$1"; shift
color="$@"
wmiir remove /bar/$name 2>/dev/null && sleep $interval && sleep 1
if wmiir read /bar/$name > /dev/null 2>&1; then
return 1
else
wmiir create /bar/$name
xwrite /bar/$name/colors $color
return 0
fi
}
I then use it like this: ("warn" is a logging function.)
# Set $name, $interval, $color, and anything else here.
if create_bar $name $interval $color
then :
else
warn "Couldn't create the bar \"$name\"; is another instance running? Aborting."
exit 1
fi
# Note that the existence of /bar/$name is checked both immediately
# before and immediately after the sleep. That ensures that it's
# checked at minimum every $interval (assuming that $interval is set
# longer than data collection could possibly take), so things get
# cleaned up.
while xread /bar/$name > /dev/null 2>&1; do
# Do my (possibly lengthy and lag-ridden) data collection here.
if [ -z "$result" ]; then
xwrite /bar/$name/colors $DIM_BLUE
xwrite /bar/$name/data " " || break
else
xwrite /bar/$name/colors $ACT_RED
xwrite /bar/$name/data "($name) $result" || break
fi
sleep $interval
done
-- Jeremy Hankins <nowan_AT_nowan.org> PGP fingerprint: 748F 4D16 538E 75D6 8333 9E10 D212 B5ED 37D0 0A03Received on Thu May 25 2006 - 17:49:19 UTC
This archive was generated by hypermail 2.2.0 : Sun Jul 13 2008 - 16:06:49 UTC