我在使用
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-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,因此您可以关闭或替换通知。
虽然 D-Bus 支持
a{sv}
等签名,但 dbus-send 不支持。这是来自 dbus-send 手册页:
D-Bus 支持的类型比这些更多,但 dbus-send 目前不支持。 此外,dbus-send 不允许空容器或嵌套容器(例如变体数组)。
据我所知,你不能使用 dbus-send 发送 string:variant 的字典。
您需要使用以下补丁来编译 dbus-send。
FYR,我在此链接上传了修补后的完整源代码。
我编译了新版本的 dbus-send 但仍然存在发送 a{sv} 的问题。您能提供一下语法吗