old_contents: 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()
  
new_contents: 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', 10)
          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 * 1000)
  
  
  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()
  
subject: fix handling of notifications' timeout on Linux