1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
|
OBus
====
[![Build Status](https://travis-ci.com/ocaml-community/obus.svg?branch=master)](https://travis-ci.com/ocaml-community/obus)
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](https://dune.build/)
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](https://opam.ocaml.org/): `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
|