利用可能なDBusサービスのリスト


65

利用可能なDBusサービスのリストなどはありますか?
私はいくつかに出会いました(NetworkManager、Rhythmbox、Skype、HALが提供するものなど)。
提供されるサービス/インターフェースのかなり完全なリストを見つけることができるかどうか疑問に思います。

回答:


85

セッション:

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を使用することもできます。


1
@ドン・crisstiとサービスの下にあるすべてのオブジェクトのパスを一覧表示する方法dbus-sendgdbus
ルシッドアラム

1
@KhurshidAlam- ここに回答を追加しました。
-don_crissti

30

qdbusviewerあなたの親友であります; Dバスメッセージも送信できます。

3つのサブパネルを持つ[セッションバス]タブを表示するqdbusviewer


これは、サービスの一覧が表示されます2014年の時点では壊れたが...メッセージを送ることができないようだ
Pithikos

5
Ubuntu 14.04でも起動できません。それはで失敗:qdbusviewer: could not exec '/usr/lib/i386-linux-gnu/qt4/bin/qdbusviewer': No such file or directory
kasperd

3
@Pithikos d-feetは今日現在動作しています。
sherrellbc

@sherrellbc d-feetそれをより
わかりやすく

27

Pythonの方法は美しい方法です。

システムサービス:

import dbus
for service in dbus.SystemBus().list_names():
    print(service)

セッションサービス:

import dbus
for service in dbus.SessionBus().list_names():
    print(service)

賛成。あなたの答えに追加の質問をしました。unix.stackexchange.com/questions/203410/…–
user768421

質問があります。Plasma5デスクトップ環境では、サービスorg.kde.Spectacleがスクリーンショットの取得に使用されます(そして、それは機能しています)が、システムバスにもセッションバスにもリストされていません。なぜですか?
ニャー

探している人を助けるために:少なくともpython 2.7.13および3.6の場合、これに必要なパッケージはdbus-pythonで、でインストール可能pip install dbus-pythonです。python-dbusパッケージも利用可能です(試した2分間で作業を開始できませんでした)。
-bschlueter

6

gdbusglib2の一部であり、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より良い出力を表示できると便利です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.