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

问题描述 投票:0回答:4

我在使用

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
中使用它?

dbus
4个回答
20
投票

无法使用
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

Bonus:此方法返回 id,因此您可以关闭或替换通知。


11
投票

虽然 D-Bus 支持

a{sv}
等签名,但 dbus-send 不支持。这是来自 dbus-send 手册页

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

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


2
投票

您需要使用以下补丁来编译 dbus-send。

https://chromium-review.googlesource.com/#/c/12323/2/sys-apps/dbus/files/dbus-1.4.12-send-variant-dict.patch

FYR,我在此链接上传了修补后的完整源代码。

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


-1
投票

我编译了新版本的 dbus-send 但仍然存在发送 a{sv} 的问题。您能提供一下语法吗

© www.soinside.com 2019 - 2024. All rights reserved.