This awk script processes the events generated by `event-gen' and outputs the text of the bar for dzen2. It needs some variable to be defined on the command line, see `panel'.
BEGIN {
visible = true
}
/^tag/ {
cmd = sprintf("herbstclient tag_status %s", monitor)
cmd | getline
for (i = 1; i <= NF; i++) {
tags[i] = $i
}
close(cmd)
}
/^date/ {
$1 = ""
date = substr($0, 2)
}
/^quit_panel/ {
exit 0
}
/^reload/ {
exit 0
}
/^focus_changed/ || /^window_title_changed/ {
$1 = ""
$2 = ""
windowtitle = substr($0, 3)
}
/^play/ || /^next/ || /^prev/ {
cmd = "amused status"
cmd | getline
$1 = ""
file = substr($0, 2)
close(cmd)
# poor man basename
player = gensub(".*/", "", 1, file)
# and strip out the extension
player = gensub("\.[A-Za-z0-9]+$", "", 1, player)
}
{
for (i = 1; i <= length(tags); i++) {
t = tags[i]
if (t ~ "^#") {
printf("^bg(%s)^fg(%s)", selbg, selfg)
} else if (t ~ "^\\+") {
printf "^bg(#9CA668)^fg(#141414)"
} else if (t ~ "^:") {
printf "^bg()^fg(#222222)"
} else if (t ~ "^!") {
printf "^bg(#FF0675)^fg(#141414)"
} else {
printf "^bg()^fg(#d6d6d6)"
}
printf(" %s ^bg()^fg()", substr(t, 2))
}
printf("| %s ", date);
if (player != "") {
printf("| %s ", player);
}
printf("| %s ", windowtitle)
printf("\n", right)
fflush()
next
}