Frage

Ich versuche, Informationen von Rhythmbox über dbus zu extrahieren, aber ich will nur so tun, wenn Rhythmbox läuft. Gibt es eine Möglichkeit zu überprüfen, ob Rhythmbox über Python läuft ohne es zu starten, wenn es nicht läuft?

Wenn ich dann den Ausruf dbus Code wie folgt:

bus = dbus.Bus()
obj = bus.get_object("org.gnome.Rhythmbox", "/org/gnome/Rhythmbox/Shell")
iface = dbus.Interface(obj, "org.gnome.Rhythmbox.Shell)

und Rhythmbox nicht ausgeführt wird, beginnt es dann.

Kann ich über dbus überprüfen, ob Rhythmbox, ohne es tatsächlich zu beginnen läuft? Oder gibt es eine andere Möglichkeit, andere als die Liste der laufenden Prozesse Parsen, dies zu tun?

War es hilfreich?

Lösung

Dies ist ähnlich Rosh Oxymoron Antwort, aber wohl ordentlicheres (wenn auch nicht getestet):

bus = dbus.SessionBus()
if bus.name_has_owner('org.gnome.Rhythmbox'):
    # ...

Wenn Sie benachrichtigt werden möchten, wenn Rhythmbox startet oder stoppt, können Sie:

def rhythmbox_owner_changed(new_owner):
    if new_owner == '':
        print 'Rhythmbox is no longer running'
    else:
        print 'Rhythmbox is now running'

bus.watch_name_owner('org.gnome.Rhythmbox')

Sehen Sie die Dokumentation für dbus.bus. Busanbindung für weitere Details.

Andere Tipps

dbus_main_object = bus.get_object("org.freedesktop.DBus", "/")
dbus_names = dbus_main_object.ListNames(dbus_interface='org.freedesktop.DBus')
if 'org.gnome.Rhythmbox' in dbus_names:
    do_whatever()
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top