67 lines
1.8 KiB
Markdown
67 lines
1.8 KiB
Markdown
---
|
|
title: Notes - 3. DBus
|
|
date: 1970-01-01T00:00:00.000Z
|
|
slug: notes-dbus
|
|
---
|
|
|
|
### 3. D-Bus?
|
|
|
|
D-Bus is IPC system for Linux, it provides structualized way for apps to communicate with each other.
|
|
|
|
Desktop Bus System.
|
|
|
|
System-bus and session-bus
|
|
|
|
System services <-> root application / system users.
|
|
|
|
- Hardware events, system state managing, low-levels
|
|
|
|
User session <-> user applications and users.
|
|
|
|
- Desktop Environment, Apps.
|
|
|
|
=> Event-driven communication / Object-oriented
|
|
|
|
Messaging. - calls / returns / error / signal
|
|
|
|
Object - interface -> method -> property -> signal
|
|
|
|
Method = (call, return, error, signal)
|
|
|
|
D-Bus router = message broker / router (just like other message forward/proxy protocols)
|
|
|
|
Method Calls -> request of service? RPC?
|
|
|
|
Signals. kernel signal in userspace. send signal to application.
|
|
|
|
Objects .. Message = Serialized bytearray of any signal / method calls. It is like RPC. Multi-multi RPC-bus
|
|
|
|
D-Bus Message structure.
|
|
|
|
Byteorder / Message Type / Flags / Protocol Version / Length / UUID / Header / Body.
|
|
|
|
How and where can I use D-Bus in my application?
|
|
|
|
Communication with low-level D-Bus daemon(server).
|
|
|
|
Ex. MediaPlayer - Implement Play/Pause/Stop/Volume for user to control via DE's common interface i.e. play button on taskbar? Extensions? Anyway structulized way of control.
|
|
|
|
Ex. DE can get information about songs now playing, via D-Bus.
|
|
|
|
Ex. System monitoring application e.g. runCat.
|
|
|
|
Ex. Caffeine-ng -> prevents machine from sleeping.
|
|
|
|
Ex. Solaar -> Controls mouse/keyboard in low-level. Needs D-Bus.
|
|
|
|
How?
|
|
|
|
Define D-Bus interface via XML, signals. methods, props. (export to bus?) -> Implement by library -> Connect to D-Bus (sync with daemon?) -> Do something.
|
|
|
|
Session vs System D-Bus
|
|
|
|
Session ? e.g. Push notification to DE. we need to send it via d-bus.
|
|
|
|
System ? e.g. Power Event, kernel-level type of event managing.
|
|
|