Как использовать вариант словаря (`a {sv}`) в dbus-send - PullRequest
10 голосов
/ 13 января 2012

У меня есть некоторые проблемы с dbus-send при использовании a{sv}

Вызов метода с in_signature='a{ss}', кажется, работает с использованием следующей командной строки:

dbus-send --dest="org.test.TestService" 
/org/test/TestService/object org.test.TestService.method1 dict:string:string:"a","1","b","2"

Теперь я хотел быхотел бы иметь словарь с типом варианта для значений (in_signature=a{sv}),

Как я могу использовать его в dbus-send?

Ответы [ 3 ]

10 голосов
/ 25 июля 2016

Невозможно с dbus-send

Как уже упоминалось, dbus-send не поддерживает все типы Dbus. С Страница руководства dbus-send :

Кроме того, dbus-send не разрешает пустые контейнеры или вложенные контейнеры (например, массивы вариантов).


Но возможно gdbus

Похоронен в https://www.freedesktop.org/software/gstreamer-sdk/data/docs/2012.5/gio/gdbus.html мы видим это:

gdbus call --session \
           --dest org.freedesktop.Notifications \
           --object-path /org/freedesktop/Notifications \
           --method org.freedesktop.Notifications.Notify \
           my_app_name \
           42 \
           gtk-dialog-info \
           "The Summary" \
           "Here's the body of the notification" \
           [] \
           {} \
           5000

Бонус : этот метод возвращает идентификатор, поэтому вы можете закрыть или заменить уведомление.

6 голосов
/ 04 февраля 2012

Хотя D-Bus поддерживает такие подписи, как a{sv}, dbus-send не поддерживает. Это из справочной страницы dbus-send :

"... D-Bus поддерживает больше типов, чем эти, но dbus-send в настоящее время не поддерживает. Кроме того, dbus-send не разрешает пустые контейнеры или вложенные контейнеры (например, массивы вариантов). «

Так что, насколько я понимаю, вы не можете отправить слово строки: вариант, используя dbus-send.

0 голосов
/ 06 мая 2016

Вам необходимо скомпилировать dbus-send с помощью следующего патча.

https://chromium -review.googlesource.com / # / с / 12323/2 / SYS-приложения / DBus / файлы / DBus-1.4.12-отправить-вариант-dict.patch

БЮР, я загрузил пропатченный полный исходный код по этой ссылке.

https://gitlab.com/mujicion/dbus-send.git

...