Commits

Oben Sonne committed 693105f

Add example alert tool for Linux desktop systems

Comments (0)

Files changed (1)

alerter/xdg-notification.py

+#!/usr/bin/python
+
+# =============================================================================
+#
+#    hg-autosync - Mercurial autosync extension
+#    Copyright (C) 2009 Oben Sonne <obensonne@googlemail.com>
+#
+#    This file is part of hg-autosync.
+#
+#    hg-autosync is free software: you can redistribute it and/or modify
+#    it under the terms of the GNU General Public License as published by
+#    the Free Software Foundation, either version 3 of the License, or
+#    (at your option) any later version.
+#
+#    hg-autosync is distributed in the hope that it will be useful,
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
+#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#    GNU General Public License for more details.
+#
+#    You should have received a copy of the GNU General Public License
+#    along with hg-autosync. If not, see <http://www.gnu.org/licenses/>.
+#
+# =============================================================================
+
+"""Example alert tool for the Mercurial AutoSync extension.
+
+This alerter can be used on recent Linux desktop systems.
+
+It uses the freedesktop.org DBus notification interface to let a warning
+message pop up in the notification area.
+
+To test it, run
+
+ $ python xdg-notification.py test-repo "bla bla"
+
+To use it, set the autosync -> alert option in your global HGRC file or in an
+autosync'ed repository's HGRC file to /path/to/xdg-notification.py. Or put (and
+optionally rename) it somewhere in your path and just specify the tool's
+filename for the alert option.
+
+"""
+
+import sys
+
+import dbus
+
+NID = 1568793152 # just a random number
+DURATION = 30 # seconds, set to 0 to show forever
+ICON = "dialog-warning" # adjust as you like
+
+def alert(repo, error):
+
+    bus = dbus.SessionBus()
+    proxy = bus.get_object("org.freedesktop.Notifications",
+                           "/org/freedesktop/Notifications")
+    notid = dbus.Interface(proxy, "org.freedesktop.Notifications")
+
+    summary = "AutoSync"
+    text = ("Problems in repository <b>%s</b>: <i>%s</i>." %
+            (repo, error))
+
+    notid.Notify("AutoSync", NID, ICON, summary, text, [], {}, DURATION)
+
+if __name__ == '__main__':
+
+    alert(sys.argv[1], sys.argv[2])
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.