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

发布于 2024-12-26 19:48:34 字数 390 浏览 1 评论 0原文

使用 a{sv} 时,我在 dbus-send 方面遇到一些问题

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

I have some trouble with dbus-send when using a{sv}

Calling a method with in_signature='a{ss}' seems to work using the
following command line:

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

Now I would like to have a dictionary with a variant type for values
(in_signature=a{sv}),

How can I use it in dbus-send?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

注定孤独终老 2025-01-02 19:48:34

不可能使用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

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

Not possible with dbus-send

As mentioned, dbus-send does not support all Dbus types. From dbus-send man page:

Also, dbus-send does not permit empty containers or nested containers (e.g. arrays of variants).


But possible gdbus

Buried in https://www.freedesktop.org/software/gstreamer-sdk/data/docs/2012.5/gio/gdbus.html we see this:

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: this method returns the id, so you can close or replace the notification.

等风也等你 2025-01-02 19:48:34

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

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

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

Although D-Bus supports signatures such as a{sv}, dbus-send does not. This is from the dbus-send man page:

D-Bus supports more types than these, but dbus-send currently does not. Also, dbus-send does not permit empty containers or nested containers (e.g. arrays of variants).

So as far as I can understand it, you cannot send a dict of string:variant using dbus-send.

烟─花易冷 2025-01-02 19:48:34

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

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

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

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

You need to compile dbus-send with the following patch.

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

FYR, I uploaded the patched full source at this link.

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

莳間冲淡了誓言ζ 2025-01-02 19:48:34

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

I compiled the new version of dbus-send but still has an issue for sending a{sv}.Can you pl provide the syntax for this

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文