#! /usr/bin/awk -f BEGIN { n_ignored = split(opt_ignore_alerts_from, ignored, "[ \t\n]+") for (i = 1; i <= n_ignored; i++) { ignored_alert_sources[ignored[i]] = 1 } } /^STATUS_BAR / { shift(); handle_status_bar(); next } /^ALERT / { shift(); handle_alert() ; next } /^ERROR / { shift(); handle_error() ; next } function handle_status_bar() { system("xsetroot -name \" " $0 "\" ") } function handle_alert( src, priority, subject, sep, body, urgency, dbg) { src = $1 priority = $2 subject = $3 shift() shift() shift() body = $0 sep = body ? "\n" : "" body = body sep "--" src urgency = priority sub("hi" , "critical", urgency) sub("med", "normal" , urgency) dbg["priority"] = priority dbg["urgency"] = urgency dbg["subject"] = subject dbg["body"] = body debug("ALERT properties", dbg) if (src in ignored_alert_sources) { debug("ALERT ignoring from " src, ignored_alert_sources) } else { debug("ALERT sending from " src, ignored_alert_sources) notify_send(urgency, subject, body) } } function handle_error() { notify_send("normal", "Khatus_Error", $0) } function notify_send(urgency, subject, body, cmd) { cmd = \ sprintf(\ "DISPLAY=%s notify-send -u %s %s \" %s\"", display, urgency, subject, body \ ) system(cmd) } function shift() { sub("^" $1 " +", "") } function debug(msg, data, sep, vals, key, payload) { sep = "" vals = "" for (key in data) { vals = sprintf("%s%s%s: \"%s\"", vals, sep, key, data[key]) sep = ", " } payload = sprintf("[%s] [%s] [%s]", pid, msg, vals) print payload > "/dev/stderr" }