D-Bus has three architectural layers:[2]
- a library,
libdbus
, that allows two applications to connect to each other and exchange messages - a message-bus daemon executable, built on
libdbus
, that multiple applications can connect to. The daemon can route messages from one application to zero or more applications, thereby implementing the publish/subscribe paradigm. - wrapper libraries based on particular application frameworks
The design of D-Bus addresses two specific cases:
- communication between desktop applications in the same desktop session; to allow integration of the desktop session as a whole, and address issues of process lifecycle
- communication between the desktop session and the operating system, where the operating system would typically include the kernel and any system daemons or processes