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

cam*_*ino 12 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"
Run Code Online (Sandbox Code Playgroud)

现在我想为values(in_signature=a{sv})提供一个带变体类型的字典,

我该如何使用它dbus-send

小智 10

不可能 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
Run Code Online (Sandbox Code Playgroud)

额外:此方法返回id,因此您可以关闭或替换通知.

  • [这个答案](https://askubuntu.com/a/359944) 解释了 `a{sv}` 参数给 `gdbus` 的语法:"{'String': <'variant_value'>, 'String2': < 'variant_value'>}" (2认同)

JoG*_*oGr 7

虽然D-Bus支持签名,例如a{sv}dbus-send不支持.这是来自dbus-send手册页:

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

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