Next: The final details., Previous: Applying the functionality., Up: Inspection of D-Bus services. [Contents][Index]
Interfaces can have properties. These can be exposed via the ‘org.freedesktop.DBus.Properties’ interface3. That is, properties can be retrieved and changed during the lifetime of an element.
A generalized interface is ‘org.freedesktop.DBus.Objectmanager’4, which returns objects, their interfaces and properties for a given service in just one call.
Annotations, on the other hand, are static values for an element. Often, they are used to instruct generators, how to generate code from the interface for a given language binding.
This function returns a list of strings with all property names of interface of service in D-Bus bus at object path path. Example:
(dbus-introspect-get-property-names :session "org.kde.kded" "/modules/networkstatus" "org.kde.Solid.Networking.Client") ⇒ ("Status")
If an interface declares properties, the corresponding element supports also the ‘org.freedesktop.DBus.Properties’ interface.
This function returns property of interface as an XML
element. It must be located at service in D-Bus bus at
object path path. property must be a string and a member
of the list returned by dbus-introspect-get-property-names
.
A property value can be retrieved by the function
dbus-introspect-get-attribute
. Example:
(dbus-introspect-get-property :session "org.kde.kded" "/modules/networkstatus" "org.kde.Solid.Networking.Client" "Status") ⇒ (property ((access . "read") (type . "u") (name . "Status"))) (dbus-introspect-get-attribute (dbus-introspect-get-property :session "org.kde.kded" "/modules/networkstatus" "org.kde.Solid.Networking.Client" "Status") "access") ⇒ "read"
This function returns the value of property of interface. It will be checked at bus, service, path. The result can be any valid D-Bus value. If there is no property, or property cannot be read, an error is raised. Example:
(dbus-get-property :session "org.kde.kded" "/modules/networkstatus" "org.kde.Solid.Networking.Client" "Status") ⇒ 4
This function sets the value of property of interface to value. It will be checked at bus, service, path. value can be preceded by a type keyword. When the value is successfully set, this function returns value. Example:
(dbus-set-property :session "org.kde.kaccess" "/MainApplication" "com.trolltech.Qt.QApplication" "doubleClickInterval" :uint16 500) ⇒ 500
This function returns all readable properties of interface. It
will be checked at bus, service, path. The result
is a list of cons cells. Every cons cell contains the name of the
property, and its value. If there are no properties, nil
is
returned. Example:
(dbus-get-all-properties :session "org.kde.kaccess" "/MainApplication" "com.trolltech.Qt.QApplication") ⇒ (("cursorFlashTime" . 1000) ("doubleClickInterval" . 500) ("keyboardInputInterval" . 400) ("wheelScrollLines" . 3) ("globalStrut" 0 0) ("startDragTime" . 500) ("startDragDistance" . 4) ("quitOnLastWindowClosed" . t) ("styleSheet" . ""))
This function returns all objects at bus, service,
path, and the children of path. The result is a list of
objects. Every object is a cons cell of an existing path name, and
the list of available interface objects. An interface object is
another cons, whose car is the interface name and cdr is the list of
properties as returned by dbus-get-all-properties
for that path
and interface. Example:
(dbus-get-all-managed-objects :session "org.gnome.SettingsDaemon" "/") ⇒ (("/org/gnome/SettingsDaemon/Power" ("org.gnome.SettingsDaemon.Power.Keyboard") ("org.gnome.SettingsDaemon.Power.Screen") ("org.gnome.SettingsDaemon.Power" ("Icon" . ". GThemedIcon battery-full-charged-symbolic ") ("Tooltip" . "Laptop battery is charged")) ("org.freedesktop.DBus.Peer") ("org.freedesktop.DBus.Introspectable") ("org.freedesktop.DBus.Properties") ("org.freedesktop.DBus.ObjectManager")) …)
If possible, ‘org.freedesktop.DBus.ObjectManager.GetManagedObjects’ is used for retrieving the information. Otherwise, the information is collected via ‘org.freedesktop.DBus.Introspectable.Introspect’ and ‘org.freedesktop.DBus.Properties.GetAll’, which is slow.
An overview of all existing object paths, their interfaces and properties could be retrieved by the following code:
(let ((result (mapcar (lambda (service) (cons service (dbus-get-all-managed-objects :session service "/"))) (dbus-list-known-names :session)))) (pop-to-buffer "*objectmanager*") (erase-buffer) (pp result (current-buffer)))
This function returns a list of all annotation names as list of
strings. If name is nil
, the annotations are children of
interface, otherwise name must be a method
,
signal
, or property
XML element, where the annotations
belong to. Example:
(dbus-introspect-get-annotation-names :session "de.berlios.Pinot" "/de/berlios/Pinot" "de.berlios.Pinot" "GetStatistics") ⇒ ("de.berlios.Pinot.GetStatistics")
Default annotation names5 are
Whether or not the entity is deprecated; defaults to nil
The C symbol; may be used for methods
and interfaces
If set, don’t expect a reply to the method
call; defaults to nil
This function returns annotation as an XML object. If
name is nil
, annotation is a child of
interface, otherwise name must be the name of a
method
, signal
, or property
XML element, where
the annotation belongs to.
An attribute value can be retrieved by
dbus-introspect-get-attribute
. Example:
(dbus-introspect-get-annotation :session "de.berlios.Pinot" "/de/berlios/Pinot" "de.berlios.Pinot" "GetStatistics" "de.berlios.Pinot.GetStatistics") ⇒ (annotation ((name . "de.berlios.Pinot.GetStatistics") (value . "pinotDBus"))) (dbus-introspect-get-attribute (dbus-introspect-get-annotation :session "de.berlios.Pinot" "/de/berlios/Pinot" "de.berlios.Pinot" "GetStatistics" "de.berlios.Pinot.GetStatistics") "value") ⇒ "pinotDBus"
See https://dbus.freedesktop.org/doc/dbus-specification.html#standard-interfaces-properties
See https://dbus.freedesktop.org/doc/dbus-specification.html#standard-interfaces-objectmanager
See https://dbus.freedesktop.org/doc/dbus-specification.html#introspection-format
Next: The final details., Previous: Applying the functionality., Up: Inspection of D-Bus services. [Contents][Index]