gdbus
faz parte do glib2 e oferece suporte a 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 método org.freedesktop.DBus.ListNames
. 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 é válida python, então 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()))'
Eu não costumo fazer isso, mas é um bom truque para ficar na manga. Eu uso gdbus
para introspecção e prova de 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.