Making a unique application using python and DBUS

No, not unique in the sense "oh, this app is a special snowflake", but unique in the sense "you can only run one copy of this application".

I tried googling for it and I always found the same answer, "use dbus, try to own the name, if it exists already, then a copy is already running".

What I could not find is one working example of this, or at least not something conveniently labeled "here is how you do a unique application using dbus and python".

So, here is how you do a unique application using dbus and python:

Supposing your application is called uRSSus (mine is):

session_bus = dbus.SessionBus()
try:
    session_bus.get_object("org.urssus.service", "/uRSSus")
    # This is the second copy, make the first one show instead
    # TODO: implement
except dbus.DBusException: # No other copy running
    # This will 'take' the DBUS name
    name = dbus.service.BusName("org.urssus.service", bus=session_bus)
    # Now, start your app:
    window=MainWindow()
    object = UrssusServer(window,name)
    :
    :
    :
    etc, etc

And that's it. No, it's not hard, but since the DBUS docs seem to be... rather they seem almost not to be sometimes, every little bit may help.

Comments

Comments powered by Disqus