diff --git a/an.py b/an.py index 92e3a59eb94b514ee180a5fabce1959e723feaee..9b17d71498929c663a371f647128a24340dcae0e 100755 --- a/an.py +++ b/an.py @@ -16,7 +16,7 @@ import sys engineer = "Peterson" # period should match cron job period -period = 600 +period = 60 # needed for notifyOSX() osx_command = "/Users/kpetersn/Applications/terminal-notifier.app/Contents/MacOS/terminal-notifier" @@ -39,13 +39,31 @@ def notifyOSX(ioc, state, time_str): notify_command = "%s -title \"%s is %s\" -message \"%s\" -open \"%s\"" % (osx_command, ioc, state, time_str, eng_url) os.system(notify_command) +def notifyGnome3(ioc, state, time_str): + subject = "%s is %s" % (ioc, state) + message = "Snapshot time: %s" % time_str + url = "%s%s" % (ioc_url, ioc) + # Priority 0 and 1 disappear on their own and end up in the history until it is clicked + # Priority 2 never disappears on its own and never ends up in the history because it requires interaction to dismiss + priority = 1 + + # Not sure if this is a good idea + #!if state == "DOWN": + #! priority = 2 + + notify_command = "./gnome3-notify.py \'%s\' \'%s\' %i \'%s\'" % (subject, message, priority, url) + #!print notify_command + + os.system(notify_command) + def notifyCombo(ioc, state, time_str): - notifyOSX(ioc, state, time_str) + notifyGnome3(ioc, state, time_str) notifyEmail(ioc, state, time_str) # set notification function #!notify = notifyConsole notify = notifyEmail +#!notify = notifyGnome3 #!notify = notifyOSX #!notify = notifyCombo diff --git a/gnome3-notify.py b/gnome3-notify.py new file mode 100755 index 0000000000000000000000000000000000000000..6d862fd1f47eee248964175209c570eadf340ccc --- /dev/null +++ b/gnome3-notify.py @@ -0,0 +1,73 @@ +#!/usr/bin/env python + +import sys +import os +import gi +gi.require_version('Notify', '0.7') +from gi.repository import Notify +#!from gi.repository import GLib + +# This function is unused because I can't get the callbacks to work +def xdg_open(arg): + global loop + # open file or url + if arg != None: + command = "xdg-open \'%s\'" % arg + #!command = "touch %s" % arg + os.system(command) + loop.quit() + +def main(args): + global xdg_open + numArgs = len(args) + summary = args[0] + body = args[1] + if numArgs >= 3: + priority = int(args[2]) + else: + priority = 0 + if numArgs >= 4: + url = args[3] + # If hyperlinks were supported we could append the URL To the body + #!body = body + "\n<a href=" + url + ">" + url + "</a>" + else: + url = None + + #!print "url =", url + + # The app name doesn't appear in the notifications + Notify.init("gnome3-notify.py") + + # Create the notification (icon depends on priority - 0 & 1 = info, 2 = error) + notification = Notify.Notification.new(summary, body) + # An icon can be chosen indepenently of the priority, which is probably a bad idea + #!notification = Notify.Notification.new(summary, body, "dialog-information") + #!notification = Notify.Notification.new(summary, body, "dialog-warning") + #!notification = Notify.Notification.new(summary, body, "dialog-error") + + # This should work but it doesn't + #!num = notification.add_action("action_click", "More Info", xdg_open, url) + + # urgency 0 or 1 = popup disappers quickly; urgency = 2 makes the popup persist + # Note: the number 1, 2, or 3 can be passed to set_urgency() directly, but an int can't + notification.set_urgency(Notify.Urgency(priority)) + + # Make the notification appear + notification.show() + + + +if __name__ == '__main__': + #!print sys.argv + if len(sys.argv) < 3: + print "Usage: gnome3-notify.py <summary> <body> [priority] [url]" + #!print sys.argv + else: + #!global loop + + main(sys.argv[1:]) + + #!loop = GLib.MainLoop() + #!loop.run() + + Notify.uninit()