【问题标题】:How to use a variant dictionary (`a{sv}`) in dbus-send如何在 dbus-send 中使用变体字典 (`a{sv}`)
【发布时间】:2012-02-09 10:13:50
【问题描述】:

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

【问题讨论】:

    标签: dbus


    【解决方案1】:

    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,因此您可以关闭或替换通知。

    【讨论】:

    • André,否决了这一点,因为该示例不适用于发送 (a{sv}) 参数。这就是问题的全部内容,因为对于琐碎的论点,dbus-send 就足够了。
    • This answer 解释 a{sv} 参数的语法 gdbus: "{'String': , 'String2': }"
    【解决方案2】:

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

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

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

    【讨论】:

      【解决方案3】:

      您需要使用以下补丁编译 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

      【讨论】:

      • 您可以通过指定如何应用补丁来改进您的帖子。
      • 将随机补丁放在互联网上的某个地方而不将其提交给上游 D-Bus 项目的人很少。请不要宣传这种答案,除非补丁也已在上游提交、审查和接受。
      猜你喜欢
      • 2017-06-15
      • 2018-03-10
      • 2021-06-30
      • 2019-01-10
      • 2016-07-10
      • 2017-09-18
      • 2014-09-02
      • 2015-02-28
      • 2011-04-11
      相关资源
      最近更新 更多