summaryrefslogtreecommitdiffstats
path: root/docs/DBUS.md
blob: 42ddcfd5b6775a11567fbc570a3c650a532b3779 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# D-Bus interface

Ferdium exposes an inter-process communication on Linux systems via [D-Bus](https://www.freedesktop.org/wiki/Software/dbus/).
This allows integrating Ferdium with your desktop environment by displaying the number of unread notifications in a status area and muting or unmuting notations.

## Desktop integration

As an example integration, the [`docs/dbus`](dbus) folder contains a module for status bars written in Python.
To run the example, you'll need Python 3.11 and the [`dbus-next`](https://pypi.org/project/dbus-next/) PyPI package.

The integration uses the [`ferdium-dbus-py`](https://github.com/victorbnl/ferdium-dbus-py) client library, which is an asynchronous wrapper over the D-Bus interface.
It illustrates multiple advanced concepts, such as asynchronous communication with Ferdium via `asyncio` and polling the session D-Bus to see if Ferdium is running.

The [`ferdium_bar.py`](dbus/ferdium_bar.py) implements a bar module to use with status bars such as waybar or polybar. See `ferdium_bar.py --help` and `ferdium_bar.py unread --help` for further indications on how to use it.

## Low-level API

The low-level API exposed over D-Bus is documented in [`org.ferdium.Ferdium.xml`](dbus/org.ferdium.Ferdium.xml) with standard D-Bus introspection syntax.

Ferdium will take ownership of the bus name `org.ferdium.Ferdium` and expose and object implementing the `org.ferdium.Ferdium` interface at the object path `/org/ferdium`.