Проверьте, работает ли Rhythmbox через Python
Вопрос
Я пытаюсь извлечь информацию из ритмии через dbus
, но я хочу сделать это только, если работает ритмбок. Есть ли способ проверить, работает ли Rhythmbox через Python, не запуская его, если он не работает?
Всякий раз, когда я вызываю dbus
код как это:
bus = dbus.Bus()
obj = bus.get_object("org.gnome.Rhythmbox", "/org/gnome/Rhythmbox/Shell")
iface = dbus.Interface(obj, "org.gnome.Rhythmbox.Shell)
И ритмекс не работает, то начинает его.
Могу ли я проверить через dbus
Если Rhythmbox работает без начли его начать? Или есть ли какой-либо другой путь, кроме анализа списка текущих запущенных процессов, для этого?
Решение
Это похоже на ответ Rosh Oxymoron, но, возможно, нетеально (хотя и непроверенный):
bus = dbus.SessionBus()
if bus.name_has_owner('org.gnome.Rhythmbox'):
# ...
Если вы хотите быть уведомленным, когда Rhythmbox запускается или останавливается, вы можете использовать:
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')
Увидеть Документация для DBUS.BUS.BusConnection Больше подробностей.
Другие советы
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()