Skip to content

Bus names.

There are several basic functions which inspect the buses for registered names. Internally they use the basic interface ‘org.freedesktop.DBus’, which is supported by all objects of a bus.

Function: dbus-list-activatable-names &optional bus

This function returns the D-Bus service names, which can be activated for bus. It must be either the keyword :system (the default) or the keyword :session. An activatable service is described in a service registration file. Under GNU/Linux, such files are located at /usr/share/dbus-1/system-services/ (for the :system bus) or /usr/share/dbus-1/services/. An activatable service is not necessarily registered at bus already.

The result is a list of strings, which is nil when there are no activatable service names at all. Example:

emacs-lisp
;; Check, whether the document viewer can be accessed via D-Bus.
(member "org.gnome.evince.Daemon"
        (dbus-list-activatable-names :session))

Function: dbus-list-names bus

This function returns all service names, which are registered at D-Bus bus. The result is a list of strings, which is nil when there are no registered service names at all. Well known names are strings like ‘org.freedesktop.DBus’. Names starting with ‘:’ are unique names for services.

bus must be either the keyword :system or the keyword :session.

Function: dbus-list-known-names bus

This function retrieves all registered services which correspond to a known name in bus. A service has a known name if it doesn’t start with ‘:’. The result is a list of strings, which is nil when there are no known names at all.

bus must be either the keyword :system or the keyword :session.

Function: dbus-list-queued-owners bus service

For a given service, registered at D-Bus bus under the name service, this function returns all queued unique names. The result is a list of strings, or nil when there are no queued names for service at all.

bus must be either the keyword :system or the keyword :session. service must be a known service name as string.

Function: dbus-get-name-owner bus service

For a given service, registered at D-Bus bus under the name service, this function returns the unique name of the name owner. The result is a string, or nil when there is no name owner of service.

bus must be either the keyword :system or the keyword :session. service must be a known service name as string.

Function: dbus-ping bus service &optional timeout

This function checks whether the service name service is registered at D-Bus bus. If service has not yet started, it is autostarted if possible. The result is either t or nil.

bus must be either the keyword :system or the keyword :session. service must be a string. timeout, a nonnegative integer, specifies the maximum number of milliseconds before dbus-ping must return. The default value is 25,000. Example:

emacs-lisp
(message
 "%s screensaver on board."
 (cond
  ((dbus-ping :session "org.gnome.ScreenSaver" 100) "Gnome")
  ((dbus-ping :session "org.freedesktop.ScreenSaver" 100) "KDE")
  (t "No")))

To check whether service is already running without autostarting it, you can instead write:

emacs-lisp
(member service (dbus-list-known-names bus))

Function: dbus-get-unique-name bus

This function returns the unique name, under which Emacs is registered at D-Bus bus, as a string.

bus must be either the keyword :system or the keyword :session.