This page lists implementations and language bindings for the D-Bus protocol, their status and, if appropriate, links to download them.
Cross-language (with bindings to multiple languages)
GDBus
GDBus is part of GNOME's GLib library, since version 2.26+. Language bindings are available via GObject-Introspection. It is an implementation of the D-Bus protocol (not a binding).
QtDBus
QtDBus is part of Qt, and is a higher-level binding for libdbus. Various language bindings for QtDBus are available.
Eldbus
Eldbus is part of Enlightenment's EFL. It is a binding for libdbus.
libdbus (part of dbus)
If you use this low-level API directly, you're signing up for some pain. —official API documentation
libdbus is part of dbus, and is the reference implementation of the D-Bus protocol. This does not make it the best implementation of D-Bus, and for most purposes it isn't the best available. Its maintainers recommend using GDBus, sd-bus or QtDBus instead.
sd-bus
sd-bus is part of libsystemd, and is an implementation of the D-Bus protocol (not a binding).
C++
If you implement a new C++ library for D-Bus, please call it something more distinctive than /dbus-c(p|x|plus|+)\1/, otherwise everyone will mix it up with the existing libraries.
dbus-cxx
dbus-cxx is a sigc++ binding for libdbus.
dbus-cpp
dbus-cpp is a header-only C++11 binding for libdbus.
dbus-c++
Also known as dbus-cplusplus, this is a C++ binding for libdbus. It appears to be inactive (latest release 2011) and is not recommended. Various forks exist; please list any actively-maintained forks here if you know of them.
sdbus-c++
A C++17 binding for systemd's sd-bus.
Python
pydbus
pydbus is a modern, pythonic D-Bus library built on top of PyGI and GDBus.
- Github: https://github.com/LEW21/pydbus
python-sdbus
python-sdbus is a another modern python library for D-Bus.
GDBus
GDBus, the D-Bus implementation in GLib, can be used from Python 2 or 3 via PyGI.
QtDBus
QtDBus, the D-Bus implementation in Qt, can be used from Python 2 or 3 via recent versions of ?PyQt.
txdbus
txdbus is a native Python implementation of the D-Bus protocol for the Twisted networking framework.
Jeepney
Jeepney is a pure Python D-Bus module. It consists of an IO-free core implementing the protocol, and integrations for both blocking I/O and for different asynchronous frameworks.
Ruby
ruby-dbus
ruby-dbus is the most popular Ruby D-Bus library. It is an implementation of the D-Bus protocol (not a binding).
Go
godbus/dbus
Rust
zbus
Rust implementation, based on Serde.
dbus-rs
libdbus-based binding.
- Github: https://github.com/diwic/dbus-rs
Erlang
erlang-dbus
Elixir
dbux
- Github: https://github.com/mspanc/dbux
OCaml
obus
- Github: https://github.com/diml/obus
.NET
dbus-sharp
dbus-sharp is an implementation of the D-Bus protocol (not a binding).
Ada
D_Bus/Ada
- Website: https://www.codelabs.ch/dbus-ada/
- Git repository
- Packages are available in Debian (>= Wheezy) and Ubuntu (>= Quantal Quetzal)
Haskell
dbus
d-bus
udbus
Perl
Net::DBus
Objective-C
DBusKit
Tcl
dbus-tcl
Pascal
FreePascal dbus package
FreePascal has dbus package included.
- Documentation: http://wiki.freepascal.org/FPC_and_DBus
Gambas
gb.dbus
Gambas has gb.dbus package included.
- Documentation: http://gambaswiki.org/wiki/doc/dbus
Java
dbus-java
Since version 2.0 it has been a complete native implementation of the protocol and not a wrapper around the reference implementation. 1.x versions are feature-complete bindings around the reference implementation.
Java D-Bus is hosted in freedesktop.org's git repository.
The current release is dbus-java-2.7.tar.gz. (2009-12-06)
The last release binding the reference implementation is libdbus-java-1.13.tar.gz. (2006-12-26)
Documentation and API reference for the Java implementation of D-Bus is here.
The Maintainer is Matthew Johnson < dbus@matthew.ath.cx >
Obsolete libraries
DBus-GLib (obsolete, unmaintained)
dbus-glib is an old GLib binding for libdbus. New GLib applications should use GDBus. See above.
DBus-GLib pretends to be thread-safe but is not. The object model is rubbish and is implemented much better in GDBus (above). The code is not maintained. Do not use it.
- API documentation
- Git repository and issue tracking
- Releases
- Training material for Glib wrappers from maemo
dbus-python (based on DBus-GLib)
New applications should use pydbus, txdbus or GDBus/QtDBus bindings. See above.
dbus-python is a binding for libdbus, the reference implementation of D-Bus. For compatibility reasons, its API involves a lot of type-guessing (despite "explicit is better than implicit" and "resist the temptation to guess").