def main(): # Explicitly set dbus main loop. DBusGMainLoop(set_as_default=True) # Wake up the settings manager dbus service. try: settings_bus = SessionBus().get_object('org.gnome.SettingsDaemon', '/org/gnome/SettingsDaemon') except DBusException as e: dialog = gtk.MessageDialog(None, gtk.DIALOG_DESTROY_WITH_PARENT, gtk.MESSAGE_ERROR, gtk.BUTTONS_CLOSE, GSM_NOT_FOUND_MESSAGE) dialog.run() dialog.destroy() return try: settings_bus.Awake(dbus_interface='org.gnome.SettingsDaemon') except DBusException as e: # May not always be wakeable. That's Ok. pass # Create server. factory = BroadcastServerFactory('ws://localhost:1337') listenWS(factory) # Start twisted. reactor.startRunning() # Create the tray icon. Must keep reference to prevent GC. icon = createTrayIcon() #Run GTK loop. gtk.main() # Kill twisted if it's still alive. if reactor.running: reactor.stop()