--- a/service.dbus.notify/xbmcnotify.py
+++ b/service.dbus.notify/xbmcnotify.py
@@ -19,20 +19,30 @@
 import xbmc
 import dbus
 
+try:
+  from gi.repository import Notify
+except ImportError:
+  Notify = None
+
 class Service(xbmc.Player):
   def __init__(self):
     xbmc.Player.__init__(self)
 
-    self.bus = dbus.SessionBus(private=True)
-    self.notify = self.bus.get_object("org.freedesktop.Notifications", "/org/freedesktop/Notifications")
-    self.notify = dbus.Interface(self.notify, "org.freedesktop.Notifications")
-
-    self.notifyid = 0
+    if Notify is None:
+      self.bus = dbus.SessionBus(private=True)
+      self.notify = self.bus.get_object("org.freedesktop.Notifications", "/org/freedesktop/Notifications")
+      self.notify = dbus.Interface(self.notify, "org.freedesktop.Notifications")
+      self.notifyid = 0
+    else:
+      Notify.init("XBMC Notifier")
 
   def onPlayBackStarted(self):
     xbmc.sleep(100)
     if self.isPlaying():
       self.showNotification()
+
+  def onSkipNext(self, notification=None, action=None, data=None):
+    self.playnext()
 
   def showNotification(self):
     if self.isPlayingAudio():
@@ -47,4 +57,9 @@
       return False
 
     if not xbmc.getCondVisibility("System.IsFullScreen"):
-      self.notifyid = self.notify.Notify("XBMC Media Center", self.notifyid, icon, summary, body, [], {}, 5000)
+      if Notify is None:
+        self.notifyid = self.notify.Notify("XBMC Media Center", self.notifyid, icon, summary, body, [], {}, 5000)
+      else:
+        self.notify = Notify.Notification.new(summary, body, icon)
+        self.notify.add_action("playnext", 'Skip this item', self.onSkipNext, None, None)
+        self.notify.show()