[systemd-devel] Systemd --user and the role of DBUS API

Mantas Mikulėnas grawity at gmail.com
Wed Aug 19 06:12:00 PDT 2015


On Wed, Aug 19, 2015 at 2:55 PM, Ian Geiser <igeiser at devonit.com> wrote:
> Greetings, I am struggling with search queries here so I need to ask this
outright.  "what is the role of dbus going forward?"  Is dbus the preferred
way going forward?  Or should things really be using sd-bus.h instead?

D-Bus is not going away, only its internals are being replaced. Existing
clients will continue working.

kdbus replaces the "dbus-daemon" router and the Unix socket transport with
a direct kernel API, but all existing programs can still connect to it via
systemd-bus-proxy (at least until they get native kdbus support).

sd-bus.h is only a library for writing DBus clients & servers. Here the
choice is still up to you – sd-bus has better performance and native kdbus
support (and a better API than e.g. dbus-glib), but if you're writing
programs in GTK or Qt or EFL, then you'll still want GDBus or QtDBus or
Eldbus.

(I've heard GDBus already has native kdbus support in development, too.)

> I manage an embedded product that leverages system heavily at the system
level, but I want to expand this into the user session. The main focus is
to use "scopes" for classification and control of specific application's
process groups.  The rub here is that while system-run can do this if I try
to do this via dbus the org.freedesktop.systemd1 is missing from the user
session no matter what or where I set my DBUS_SESSION_BUS_ADDRESS.  I am
using systemd  224.

Right, systemd will not be accessible on a session bus, since it runs
*outside* the session.

So instead you'll find it on the *user* bus, which is available by default
on kdbus systems, but can be configured with dbus-daemon as well. The
current devel branch (1.9.20) of dbus-daemon installs the --user units
dbus.socket and dbus.service necessary for this. The user bus address is
"kernel:path=/dev/kdbus/$UID-user/bus;unix:runtime=yes" (if I got the
syntax right?), or
"kernel:path=/dev/kdbus/$UID-user/bus;unix:path=/run/user/$UID/bus".

(Technically the same can be done with dbus 1.8.x as well, but AFAIK the
developers do not approve.)

-- 
Mantas Mikulėnas <grawity at gmail.com>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/systemd-devel/attachments/20150819/5aab8111/attachment.html>


More information about the systemd-devel mailing list