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.

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.

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

dbus-rs

Erlang

erlang-dbus

Elixir

dbux

OCaml

obus

.NET

dbus-sharp

dbus-sharp is an implementation of the D-Bus protocol (not a binding).

Ada

D_Bus/Ada

Haskell

dbus

dbus

d-bus

d-bus

udbus

udbus

Perl

Net::DBus

Objective-C

DBusKit

Tcl

dbus-tcl

Pascal

FreePascal dbus package

FreePascal has dbus package included.

Gambas

gb.dbus

Gambas has gb.dbus package included.

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.

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").