Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?


Failed to load latest commit information.
Latest commit message
Commit time
July 4, 2019 23:47
July 4, 2019 17:59
November 10, 2022 17:47
July 2, 2019 17:57
November 10, 2022 17:47
December 19, 2014 16:14
July 4, 2019 17:15
July 4, 2019 17:15
October 10, 2009 19:45
July 4, 2019 19:56
July 2, 2019 17:57
November 17, 2022 16:05


Build Status

OBus is a pure OCaml implementation of the D-Bus protocol. It aims to provide a clean and easy way for ocaml programmers to access and provide D-Bus services.

OBus is using the cooperative threading library Lwt, which make it very simple to fully exploit the asynchronous nature of D-Bus.


Make sure you have dune installed, and install all the missing dependencies listed in the output of this command:

$ dune external-lib-deps @install --missing


The recommended way to install obus and its dependencies is via opam: opam install obus.

Manual installation from sources

To build and install obus:

$ dune build @install

Tests (optionnal)

To build and execute tests:

$ dune runtest

Using the library

OBus install the following packages:

  • obus: the core library, implementing the D-Bus protocol,
  • obus.ppx: syntax extensions to aid registering OBus exceptions.
  • obus.notification: interface to the freedesktop Notification service,
  • obus.hal: interface to the freedesktop Hal service,
  • obus.upower: interface to the freedesktop UPower service,
  • obus.udisks: interface to the freedesktop UDisks service,
  • obus.policykit: interface to the freedesktop PolicyKit servie.

Using the tools

There are several tools provided in the obus distribution:

  • obus-dump, to execute a command and dump all messages that goes throug the session and/or system message bus,
  • obus-introspect which can recursively introspect a D-Bus service,
  • obus-gen-interface, to convert D-Bus introspection files into ocaml definition modules,
  • obus-gen-client and obus-gen-server which can generate template for using or implementing D-Bus servies,
  • obus-xml2idl and obus-idl2xml to convert xml introspection documents to the obus idl format, and vice versa.

There are manual pages for all this tools.

The caml files generated by obus-gen-client and obus-gen-server are meant to be edited and adapted. In practice introspections files contains only marshaling informations so it is often not sufficient for creating a usable binding.

Here is a simple example of use of the tools:

$ obus-introspect org.freedesktop.Notifications /org/freedesktop/Notifications > notif.xml
$ obus-gen-interface notif.xml
$ obus-gen-client notif.xml