summaryrefslogtreecommitdiff
path: root/external/plyer/platforms/linux/notification.py
diff options
context:
space:
mode:
Diffstat (limited to 'external/plyer/platforms/linux/notification.py')
-rw-r--r--external/plyer/platforms/linux/notification.py52
1 files changed, 52 insertions, 0 deletions
diff --git a/external/plyer/platforms/linux/notification.py b/external/plyer/platforms/linux/notification.py
new file mode 100644
index 0000000..d78f130
--- /dev/null
+++ b/external/plyer/platforms/linux/notification.py
@@ -0,0 +1,52 @@
+import subprocess
+from plyer.facades import Notification
+from plyer.utils import whereis_exe
+
+
+class NotifySendNotification(Notification):
+ ''' Pops up a notification using notify-send
+ '''
+ def _notify(self, **kwargs):
+ subprocess.call(["notify-send",
+ kwargs.get('title'),
+ kwargs.get('message')])
+
+
+class NotifyDbus(Notification):
+ ''' notify using dbus interface
+ '''
+
+ def _notify(self, **kwargs):
+ summary = kwargs.get('title', "title")
+ body = kwargs.get('message', "body")
+ app_name = kwargs.get('app_name', '')
+ app_icon = kwargs.get('app_icon', '')
+ timeout = kwargs.get('timeout', 5000)
+ actions = kwargs.get('actions', [])
+ hints = kwargs.get('hints', [])
+ replaces_id = kwargs.get('replaces_id', 0)
+
+ _bus_name = 'org.freedesktop.Notifications'
+ _object_path = '/org/freedesktop/Notifications'
+ _interface_name = _bus_name
+
+ import dbus
+ session_bus = dbus.SessionBus()
+ obj = session_bus.get_object(_bus_name, _object_path)
+ interface = dbus.Interface(obj, _interface_name)
+ interface.Notify(app_name, replaces_id, app_icon,
+ summary, body, actions, hints, timeout)
+
+
+def instance():
+ import sys
+ try:
+ import dbus
+ return NotifyDbus()
+ except ImportError:
+ sys.stderr.write("python-dbus not installed. try:"
+ "`sudo pip install python-dbus`.")
+ if whereis_exe('notify-send'):
+ return NotifySendNotification()
+ sys.stderr.write("notify-send not found.")
+ return Notification()