Skip to content
master
Switch branches/tags
Go to file
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
 
 
src
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

README.md

OBus

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.

Dependencies

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

Installation

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