dbus: Overview

 
 1 An overview of D-Bus
 **********************
 
 D-Bus is an inter-process communication mechanism for applications
 residing on the same host.  The communication is based on “messages”.
 Data in the messages is carried in a structured way, it is not just a
 byte stream.
 
    The communication is connection oriented to two kinds of message
 buses: a so called “system bus”, and a “session bus”.  On a given
 machine, there is always one single system bus for miscellaneous
 system-wide communication, like changing of hardware configuration.  On
 the other hand, the session bus is always related to a single user’s
 session.
 
    Every client application, which is connected to a bus, registers
 under a “unique name” at the bus.  This name is used for identifying the
 client application.  Such a unique name starts always with a colon, and
 looks like ‘:1.42’.
 
    Additionally, a client application can register itself to a so called
 “known name”, which is a series of identifiers separated by dots, as in
 ‘org.gnu.Emacs’.  If several applications register to the same known
 name, these registrations are queued, and only the first application
 which has registered for the known name is reachable via this name.  If
 this application disconnects from the bus, the next queued unique name
 becomes the owner of this known name.
 
    An application can install one or several objects under its name.
 Such objects are identified by an “object path”, which looks similar to
 paths in a filesystem.  An example of such an object path could be
 ‘/org/gnu/Emacs/’.
 
    Applications might send a request to an object, that means sending a
 message with some data as input parameters, and receiving a message from
 that object with the result of this message, the output parameters.
 Such a request is called “method” in D-Bus.
 
    The other form of communication are “signals”.  The underlying
 message is emitted from an object and will be received by all other
 applications which have registered for such a signal.
 
    All methods and signals an object supports are called “interface” of
 the object.  Interfaces are specified under a hierarchical name in
 D-Bus; an object can support several interfaces.  Such an interface name
 could be ‘org.gnu.Emacs.TextEditor’ or ‘org.gnu.Emacs.FileManager’.