Risposte:
Sessione:
dbus-send --session \
--dest=org.freedesktop.DBus \
--type=method_call \
--print-reply \
/org/freedesktop/DBus \
org.freedesktop.DBus.ListNames
Sistema:
dbus-send --system \
--dest=org.freedesktop.DBus \
--type=method_call \
--print-reply \
/org/freedesktop/DBus \
org.freedesktop.DBus.ListNames
Puoi anche utilizzare DFeet se preferisci uno strumento GUI.
qdbusviewer
è il tuo migliore amico; consente anche di inviare messaggi D-bus:
qdbusviewer: could not exec '/usr/lib/i386-linux-gnu/qt4/bin/qdbusviewer': No such file or directory
d-feet
funziona da oggi.
d-feet
una risposta per renderlo più visibile
Il modo pitone è il modo bello.
Servizi di sistema:
import dbus
for service in dbus.SystemBus().list_names():
print(service)
Servizi di sessione:
import dbus
for service in dbus.SessionBus().list_names():
print(service)
pip install dbus-python
. È anche disponibile il pacchetto python-dbus (non sono riuscito a mettermi al lavoro nei 2 minuti che ho provato).
gdbus
fa parte di glib2 e supporta i completamenti di Bash. Ecco come usarlo (su Fedora):
bash-4.4$ source /usr/share/bash-completion/completions/gdbus
bash-4.4$ gdbus call --system --dest <TAB><TAB>
Questo mostrerà tutte le possibili destinazioni. Per ottenere un elenco delle interfacce disponibili DBus esporta il org.freedesktop.DBus.ListNames
metodo. Puoi chiamarlo eseguendo:
gdbus call --system --dest org.freedesktop.DBus \
--object-path /org/freedesktop/DBus \
--method org.freedesktop.DBus.ListNames
Sfortunatamente questo porta a output illeggibili. Fortunatamente l'output è Python valido, quindi questo è possibile:
gdbus call --system --dest org.freedesktop.DBus \
--object-path /org/freedesktop/DBus \
--method org.freedesktop.DBus.ListNames | \
python -c 'import sys, pprint; pprint.pprint(eval(sys.stdin.read()))'
Di solito non lo faccio, ma è un bel trucco da tenere a portata di mano. Uso i gdbus
concetti di introspezione e dimostrazione prima di passare al codice. Il completamento bash consente di risparmiare molta digitazione ed evitare errori di battitura. Sarebbe bello avere gdbus
un output migliore.
dbus-send
ogdbus
?