回答:
セッション:
dbus-send --session \
--dest=org.freedesktop.DBus \
--type=method_call \
--print-reply \
/org/freedesktop/DBus \
org.freedesktop.DBus.ListNames
システム:
dbus-send --system \
--dest=org.freedesktop.DBus \
--type=method_call \
--print-reply \
/org/freedesktop/DBus \
org.freedesktop.DBus.ListNames
GUIツールを使用する場合は、DFeetを使用することもできます。
qdbusviewer
あなたの親友であります; Dバスメッセージも送信できます。
qdbusviewer: could not exec '/usr/lib/i386-linux-gnu/qt4/bin/qdbusviewer': No such file or directory
d-feet
は今日現在動作しています。
d-feet
それをより
Pythonの方法は美しい方法です。
システムサービス:
import dbus
for service in dbus.SystemBus().list_names():
print(service)
セッションサービス:
import dbus
for service in dbus.SessionBus().list_names():
print(service)
pip install dbus-python
です。python-dbusパッケージも利用可能です(試した2分間で作業を開始できませんでした)。
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
より良い出力を表示できると便利です。
dbus-send
かgdbus
?