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
?
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.
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.
You need to compile dbus-send with the following patch.
FYR, I uploaded the patched full source at this link.
来源:https://stackoverflow.com/questions/8846671/how-to-use-a-variant-dictionary-asv-in-dbus-send