#!/usr/bin/env python

from twisted.internet import reactor, defer
from txdbus import error, client

@defer.inlineCallbacks
def show_desktop_notification( duration, message ):
    '''
    Shows the message as a desktop notification for the specified
    number of seconds
    '''
    con = yield client.connect(reactor, 'session')

    notifier = yield con.getRemoteObject('org.freedesktop.Notifications',
                                         '/org/freedesktop/Notifications')

    nid = yield notifier.callRemote('Notify',
                                    'Example Application', 0,
                                    '',
                                    'Example Notification Summary',
                                    message,
                                    [], dict(),
                                    duration * 1000)


def main():
    d = show_desktop_notification( 5, "Hello World!" )

    d.addCallback( lambda _: reactor.stop() )


reactor.callWhenRunning(main)
reactor.run()
