Severity: wishlist Hello Michael, While using dbus.el, I found it a bit cumbersome to specify type symbols for the arguments of dbus-call-method and dbus-send-signal. Suppose a simple D-Bus signature "a{si}". Since dbusbind treats positive integers as uint32, one would need to write: (dbus-call-method :session "org.example.Foo" "/org/example/Foo" "org.example.Foo" "Test" '(:array (:dict-entry :string "a" :int32 1) (:dict-entry :string "b" :int32 2))) This is simple if the arguments are "fixed", but if one wants a wrapper, she would need to write a loop by herself. (defun example-foo (alist) (dbus-call-method :session "org.example.Foo" "/org/example/Foo" "org.example.Foo" "Test" (list :array (mapcar (lambda (entry) (list :dict-entry :string (car entry) :int32 (cdr entry))) alist)))) So I would like to propose an alternative syntax, similar to the `:type' keyword of `defcustom', like this: (dbus-call-method :session "org.example.Foo" "/org/example/Foo" "org.example.Foo" "Test" '(:type (:array (:dict-entry :string :int32))) '(("a" . 1) ("b" . 2))) That is, if a type symbol is a cons cell and the car is :type, treat the cdr as the type specification of the following value. The the wrapper can be written as: (defun example-foo (alist) (dbus-call-method :session "org.example.Foo" "/org/example/Foo" "org.example.Foo" "Test" '(:type (:array (:dict-entry :string :int32))) alist)) Would this kind of change be considered? As a proof-of-concept, I'm attaching a small Elisp snippet that augments the argument value with the given type information (though I guess it should be implemented in the C level, to avoid duplication of signature computation code). Comments appreciated. Regards, -- Daiki Ueno