如何在dbus-send中使用变体字典(`a {sv}`)

时间:2012-01-13 06:14:11

标签: dbus

使用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 个答案:

答案 0 :(得分:10)

dbus-send

无效

如上所述,dbus-send不支持所有Dbus类型。来自dbus-send man page

  

此外,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

奖励:此方法返回ID,因此您可以关闭或替换通知。

答案 1 :(得分:6)

虽然D-Bus支持a{sv}等签名,但dbus-send不支持。这来自dbus-send man page

“...... D-Bus支持的类型多于这些类型,但dbus-send目前不支持。此外,dbus-send不允许空容器或嵌套容器(例如变体数组)。

所以据我所知,你不能使用dbus-send发送string:variant的字典。

答案 2 :(得分:0)