diff options
Diffstat (limited to 'external/plyer/platforms/linux/notification.py')
-rw-r--r-- | external/plyer/platforms/linux/notification.py | 52 |
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() |