Odpowiedzi:
Sesja:
dbus-send --session \
--dest=org.freedesktop.DBus \
--type=method_call \
--print-reply \
/org/freedesktop/DBus \
org.freedesktop.DBus.ListNames
System:
dbus-send --system \
--dest=org.freedesktop.DBus \
--type=method_call \
--print-reply \
/org/freedesktop/DBus \
org.freedesktop.DBus.ListNames
Możesz także użyć DFeet, jeśli wolisz narzędzie GUI.
qdbusviewer
jest twoim najlepszym przyjacielem; pozwala również wysyłać wiadomości D-bus:
qdbusviewer: could not exec '/usr/lib/i386-linux-gnu/qt4/bin/qdbusviewer': No such file or directory
d-feet
działa od dzisiaj.
d-feet
jako odpowiedzi, aby było bardziej widoczne
Sposób python jest piękny sposób.
Usługi systemowe:
import dbus
for service in dbus.SystemBus().list_names():
print(service)
Usługi sesji:
import dbus
for service in dbus.SessionBus().list_names():
print(service)
pip install dbus-python
. Dostępny jest również pakiet python-dbus (nie byłem w stanie pracować w ciągu 2 minut, które próbowałem).
gdbus
jest częścią glib2 i obsługuje uzupełnienia Bash. Oto jak z niego korzystać (w Fedorze):
bash-4.4$ source /usr/share/bash-completion/completions/gdbus
bash-4.4$ gdbus call --system --dest <TAB><TAB>
Spowoduje to wyświetlenie wszystkich możliwych miejsc docelowych. Aby uzyskać listę dostępnych interfejsów DBus eksportuje org.freedesktop.DBus.ListNames
metodę. Możesz to nazwać, uruchamiając:
gdbus call --system --dest org.freedesktop.DBus \
--object-path /org/freedesktop/DBus \
--method org.freedesktop.DBus.ListNames
Niestety prowadzi to do nieczytelnego wyniku. Na szczęście dane wyjściowe są poprawnymi pythonami, więc jest to możliwe:
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()))'
Zwykle tego nie robię, ale jest fajną sztuczką, aby mieć na sobie rękaw. Używam gdbus
do introspekcji i sprawdzania koncepcji przed przejściem do kodu. Ukończenie bashu oszczędza dużo pisania i pozwala uniknąć literówek. Byłoby miło gdbus
wyświetlać ładniejszy wynik.
dbus-send
lubgdbus
?