www.freedesktop.org Open in urlscan Pro
2610:10:20:722:a800:ff:feda:470f  Public Scan

Submitted URL: http://dbus.freedesktop.org/
Effective URL: https://www.freedesktop.org/wiki/Software/dbus/
Submission: On April 02 via api from IT — Scanned from IT

Form analysis 1 forms found in the DOM

GET https://www.google.com/search

<form method="get" action="https://www.google.com/search" id="searchform">
  <div>
    <input name="sitesearch" value="https://www.freedesktop.org/wiki/" type="hidden">
    <input name="q" value="" id="searchbox" size="16" maxlength="255" type="text" placeholder="search">
  </div>
</form>

Text Content

www/ Software/ dbus
 * Edit
 * Page History
 * Repo Info

Contents
 1. What is D-Bus?
 2. Mailing List
 3. Reporting Bugs & Sending Patches
 4. Documentation
 5. Download
 6. Source code


WHAT IS D-BUS?

D-Bus is a message bus system, a simple way for applications to talk to one
another. In addition to interprocess communication, D-Bus helps coordinate
process lifecycle; it makes it simple and reliable to code a "single instance"
application or daemon, and to launch applications and daemons on demand when
their services are needed.

D-Bus supplies both a system daemon (for events such as "new hardware device
added" or "printer queue changed") and a per-user-login-session daemon (for
general IPC needs among user applications). Also, the message bus is built on
top of a general one-to-one message passing framework, which can be used by any
two apps to communicate directly (without going through the message bus daemon).
Currently the communicating applications are on one computer, or through
unencrypted TCP/IP suitable for use behind a firewall with shared NFS home
directories. (Help wanted with better remote transports - the transport
mechanism is well-abstracted and extensible.)

The dbus low-level API reference implementation and the D-Bus protocol have been
heavily tested in the real world over several years, and are now "set in stone."
Future changes will either be compatible or versioned appropriately.

The low-level libdbus reference library has no required dependencies; the
reference bus daemon's only required dependency is an XML parser (expat).
Higher-level bindings specific to particular frameworks (Qt, GLib, Java, C#,
Python, etc.) add more dependencies, but can make more assumptions and are thus
much simpler to use. The bindings evolve separately from the low-level libdbus,
so some are more mature and ABI-stable than others; check the docs for the
binding you plan to use.

There are also some reimplementations of the D-Bus protocol for languages such
as C#, Java, and Ruby. These do not use the libdbus reference implementation.

It should be noted that the low-level implementation is not primarily designed
for application authors to use. Rather, it is a basis for binding authors and a
reference for reimplementations. If you are able to do so it is recommended that
you use one of the higher level bindings or implementations. A list of these can
be found on the bindings page.

The list of projects using D-Bus is growing and they provide a wealth of
examples of using the various APIs to learn from.

D-Bus is very portable to any Linux or UNIX flavor, and the port to Windows is
mostly finished.

If you have any trouble with D-Bus or suggestions for improvement, bug reports
and comments are very welcome.

Get on D-Bus today!


MAILING LIST

All D-Bus discussion is currently on dbus@lists.freedesktop.org.


REPORTING BUGS & SENDING PATCHES

Please report bugs (and submit merge requests) for the D-Bus Specification and
the reference implementation dbus through the dbus/dbus project on the
freedesktop.org Gitlab instance.

For other implementations and bindings, please use the bug tracker for the
appropriate implementation. For example, GDBus bugs are tracked in the GLib
project on GNOME's Gitlab, and sd-bus bugs are tracked in the systemd project on
Github.

Ideally, include test suite coverage with your patch; or if you report a bug,
it's good to add a test that fails even if you don't have a patch otherwise.

Patches to improve test coverage are very welcome, though D-Bus is already among
the best-covered codebases around.


DOCUMENTATION

Some stuff from the doc/ subdirectory is prebuilt and browsable here. If you're
new to D-Bus, the tutorial is probably the best place to start (even though it
is very incomplete, the basics are covered).

Generic D-Bus protocol information:

 * D-Bus specification
 * D-Bus Overview from the txdbus documentation
 * An introduction to the basics by Jeroen Vermeulen
 * Introduction to D-Bus from the Qt documentation
 * FAQ
 * Overview picture png svg
 * D-Bus tutorial (incomplete, has stuff on several bindings and
   reimplementations)
 * Config file DTD
 * If you are confused about some of the concepts in DBus, look at some
   analogies
 * Some tools for working with D-Bus. Please note that the D-Bus spec is
   incomplete, especially in its description of the message bus daemon. The spec
   for the protocol itself is reasonably complete, though not always clear or
   precise. Your patches are welcome! In the meantime, you may need to
   supplement your reading of the spec with a reading of the reference
   implementation source code.

Docs specific to the reference implementation, dbus:

 * API reference manual for the reference implementation (libdbus)
 * @todo items from reference implementation manual and high-level TODO
 * Browse reference implementation source
 * dbus-daemon(1) (includes configuration file docs)
 * dbus-send(1) dbus-monitor(1) dbus-launch(1) dbus-uuidgen(1)
 * HACKING AUTHORS
 * NEWS ChangeLog README
 * Test plan
 * Tarball with most of the above docs. Keep in mind that libdbus is a low-level
   library, intended to be the backend for a language binding and with extra
   complexity needed to implement dbus-daemon. You will save yourself a lot of
   pain if you use a higher-level wrapper or a reimplementation. Documentation
   of these is usually linked from the bindings page.

Articles from around the web, including some tutorials:

 * "Connect desktop apps using D-BUS" (IBM developerWorks) by Ross Burton (July
   2004)
 * "Get on D-BUS" (Red Hat Magazine) by John Palmieri (January 2005)
 * "Get on the D-BUS" (Linux Journal) by Robert Love (January 2005)
 * "The DBus missing tutorial - DBus Activation" by Raphaël Slinckx (2005)
 * D-Bus Low-Level API Tutorial by Matthew Johnson (Nov 2005)
 * Introduction To D-BUS by Aaron Seigo & KDE community (2007)
 * "An Introduction to the D-Bus Language Binding for ooRexx" by Rony G.
   Flatscher (December 2011, Intro to D-Bus concepts followed by intro to the
   ooRexx bindings)


DOWNLOAD


REFERENCE IMPLEMENTATION (DBUS, INCORPORATING DBUS-DAEMON AND LIBDBUS)

dbus is the reference implementation of D-Bus. Released versions can be
downloaded from the releases directory on dbus.freedesktop.org and are available
in all major Linux distributions. If in doubt, use your distribution's packages.

The current stable branch is dbus 1.14.x. This is the recommended version for
most purposes.

The current legacy branch is dbus 1.12.x. This is still supported, but only for
security fixes: only use this version when upgrading from older stable releases,
or preparing security updates for frozen/stable distributions.

Older branches such as 1.10.x have reached end-of-life and are unlikely to have
any more releases, but distributors who still provide security support for an
older version are invited to share backported patches via the older branches in
the same git repository. Please contact the maintainers for more information.

The current development branch is dbus 1.15.x, which will lead to a 1.16.x
stable branch in future. The development branch does not come with security
support, and if it requires security fixes, they will often be released as part
of an ordinary development release that also contains potentially destabilising
changes. Please do not include a development branch of dbus in your OS
distribution unless you can commit to tracking that branch and the stable branch
that follows it, for example continuing to track dbus 1.15.x and then switching
to 1.16.x when it becomes available.

Superseded development branches such as 1.13.x are entirely unsupported and do
not receive any security fixes.


WINDOWS PORT

The Windows port from the windbus and dbus4win projects was merged into the
freedesktop dbus development branch several years ago, and is released as part
of dbus. Thanks to all the past and current contributors to that port.

It is known that the Windows port runs on Windows Vista, 8, 10 and server
variants. Supported compilers/SDK are MSVC, mingw-w32/w64(gcc) and cygwin(gcc).

DBus on Windows is used by KDE, Gnome and commercial applications.


BINDINGS AND INDEPENDENT IMPLEMENTATIONS

Bindings and independent implementations are linked to from the Bindings Page.

A binding wraps libdbus (and thus automatically gets e.g. new authentication
mechanisms and other additions to libdbus), while a reimplementation codes the
protocol from scratch (and thus avoids a dependency on the libdbus C library,
but has to be kept in sync with new features).


SOURCE CODE

The latest versions of the D-Bus Specification and the reference implementation
dbus are available in the dbus/dbus project on the freedesktop.org Gitlab
instance.

For other implementations and bindings, please use the source code repository
for the appropriate implementation. For example, GDBus is part of the GLib
project on GNOME's Gitlab, and sd-bus is part of the systemd project on Github.

Links: DBusRemote DbusReleaseArchive IntroductionToDBus Software
Specifications/config-spec Specifications/mpris-spec jhbuild
Last edited Mon Feb 28 18:21:56 2022