Câu trả lời:
Phiên:
dbus-send --session \
--dest=org.freedesktop.DBus \
--type=method_call \
--print-reply \
/org/freedesktop/DBus \
org.freedesktop.DBus.ListNames
Hệ thống:
dbus-send --system \
--dest=org.freedesktop.DBus \
--type=method_call \
--print-reply \
/org/freedesktop/DBus \
org.freedesktop.DBus.ListNames
Bạn cũng có thể sử dụng DFeet nếu bạn thích một công cụ GUI.
qdbusviewer
là người bạn tốt nhất của bạn; nó cũng cho phép bạn gửi tin nhắn D-bus:
qdbusviewer: could not exec '/usr/lib/i386-linux-gnu/qt4/bin/qdbusviewer': No such file or directory
d-feet
hoạt động như ngày hôm nay.
d-feet
như một câu trả lời để làm cho nó rõ hơn
Cách trăn là cách đẹp.
Dịch vụ hệ thống:
import dbus
for service in dbus.SystemBus().list_names():
print(service)
Dịch vụ phiên:
import dbus
for service in dbus.SessionBus().list_names():
print(service)
pip install dbus-python
. Gói python-dbus cũng có sẵn (tôi không thể làm việc trong 2 phút tôi đã thử).
gdbus
là một phần của glib2 và hỗ trợ hoàn thành Bash. Đây là cách sử dụng nó (trên Fedora):
bash-4.4$ source /usr/share/bash-completion/completions/gdbus
bash-4.4$ gdbus call --system --dest <TAB><TAB>
Điều này sẽ hiển thị tất cả các điểm đến có thể. Để có được danh sách các giao diện có sẵn, DBus xuất org.freedesktop.DBus.ListNames
phương thức. Bạn có thể gọi nó bằng cách chạy:
gdbus call --system --dest org.freedesktop.DBus \
--object-path /org/freedesktop/DBus \
--method org.freedesktop.DBus.ListNames
Thật không may, điều này dẫn đến đầu ra không thể đọc được. May mắn là đầu ra là python hợp lệ, vì vậy điều này là có thể:
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()))'
Tôi không thường làm điều này, nhưng là một mẹo hay để giữ tay áo. Tôi sử dụng gdbus
để hướng nội và chứng minh các khái niệm trước khi chuyển sang mã. Việc hoàn thành bash giúp tiết kiệm rất nhiều việc đánh máy và tránh lỗi chính tả. Sẽ được tốt đẹp để gdbus
hiển thị một đầu ra đẹp hơn.
dbus-send
hoặcgdbus
?