利用可能なD-Busサービスのリストなどはありますか? NetworkManager、Rhythmbox、Skype、HALによって提供されるものなど、いくつかの問題に遭遇しました。
提供されているサービス/インターフェースのかなり完全なリストが見つかるかどうか疑問に思います。
QT
セットアップ(短いコマンドと人間が読める簡潔な出力)では、次のコマンドを実行できます。
qdbus
セッションバスで利用可能なサービスをリストし、
qdbus --system
システムバスで利用可能なサービスのリストが表示されます。
どのセットアップでもdbus-send
を使用できます
dbus-send --print-reply --dest=org.freedesktop.DBus /org/freedesktop/DBus org.freedesktop.DBus.ListNames
qdbus
と同様に、--session
またはメッセージバスが指定されていない場合、dbus
はログインセッションメッセージバスに送信します。したがって、上記はセッションバスで利用可能なサービスをリストします。
代わりにシステム全体のメッセージバスを使用する場合は、--system
を使用します。
dbus-send --system --print-reply --dest=org.freedesktop.DBus /org/freedesktop/DBus org.freedesktop.DBus.ListNames
グラフィカルツールが必要な場合は DFeet を使用することもできます(他のGUIオプションについては他の回答を参照してください)。
python wayは美しい方法です。
システムサービス:
import dbus
for service in dbus.SystemBus().list_names():
print(service)
セッションサービス:
import dbus
for service in dbus.SessionBus().list_names():
print(service)
qdbusviewer
はあなたの親友です。 D-busメッセージも送信できます。
gdbus
はglib2の一部であり、Bash補完をサポートしています。 (Fedoraで)それを使用する方法は次のとおりです。
bash-4.4$ source /usr/share/bash-completion/completions/gdbus
bash-4.4$ gdbus call --system --dest <TAB><TAB>
これにより、すべての可能な宛先が表示されます。利用可能なインターフェースのリストを取得するために、DBusはorg.freedesktop.DBus.ListNames
メソッドをエクスポートします。次のコマンドを実行して呼び出すことができます:
gdbus call --system --dest org.freedesktop.DBus \
--object-path /org/freedesktop/DBus \
--method org.freedesktop.DBus.ListNames
残念ながら、これは読み取り不能な出力につながります。幸い、出力は有効なpythonなので、これは可能です。
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()))'
私は通常これをしませんが、袖をつけておくのはいいトリックです。コードに移る前に、gdbus
を使用して概念を内省し、証明します。 bash補完により、入力の手間が大幅に削減され、タイプミスを回避できます。より良い出力を表示するgdbus
があるといいでしょう。