💾 Archived View for dots.omarpolo.com › config › herbstluftwm › event-gen.gmi captured on 2024-08-25 at 00:04:51. Gemini links have been rewritten to link to archived content

View Raw

More Information

⬅️ Previous capture (2022-06-03)

-=-=-=-=-=-=-

event-gen

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