Respostas:
Sessão:
dbus-send --session \
--dest=org.freedesktop.DBus \
--type=method_call \
--print-reply \
/org/freedesktop/DBus \
org.freedesktop.DBus.ListNames
Sistema:
dbus-send --system \
--dest=org.freedesktop.DBus \
--type=method_call \
--print-reply \
/org/freedesktop/DBus \
org.freedesktop.DBus.ListNames
Você também pode usar o DFeet se preferir uma ferramenta GUI.
qdbusviewer
é seu melhor amigo; também permite enviar mensagens de barramento D:
qdbusviewer: could not exec '/usr/lib/i386-linux-gnu/qt4/bin/qdbusviewer': No such file or directory
d-feet
funciona a partir de hoje.
d-feet
como uma resposta para torná-lo mais visível
A maneira python é a maneira bonita.
Serviços do sistema:
import dbus
for service in dbus.SystemBus().list_names():
print(service)
Serviços de sessão:
import dbus
for service in dbus.SessionBus().list_names():
print(service)
pip install dbus-python
. O pacote python-dbus também está disponível (não consegui trabalhar nos 2 minutos que tentei).
gdbus
faz parte do glib2 e suporta conclusões do Bash. Aqui está como usá-lo (no Fedora):
bash-4.4$ source /usr/share/bash-completion/completions/gdbus
bash-4.4$ gdbus call --system --dest <TAB><TAB>
Isso mostrará todos os destinos possíveis. Para obter uma lista das interfaces disponíveis, o DBus exporta o org.freedesktop.DBus.ListNames
método. Você pode chamá-lo executando:
gdbus call --system --dest org.freedesktop.DBus \
--object-path /org/freedesktop/DBus \
--method org.freedesktop.DBus.ListNames
Infelizmente, isso leva a uma saída ilegível. Felizmente, a saída é python válida, portanto, isso é possível:
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()))'
Normalmente não faço isso, mas é um bom truque para manter a manga. Eu uso gdbus
para inspecionar e provar conceitos antes de passar para o código. A conclusão do bash economiza muita digitação e evita erros de digitação. Seria bom ter gdbus
exibindo uma saída melhor.
dbus-send
ougdbus
?