Hello all, I've been experimenting with systemd --user as a possible replacement for bringing up graphical user sessions. We currently bring up most of that using upstart jobs (simple auto-restart on crashes, rate limiting, per-job logging, fine-grained startup condition control). There is one upstart process per session, so this is reasonably straightforward.
But I still can't wrap my head around the mental model of how this is supposed to work with the user D-Bus and systemd instance. This works fine for some services which are not specific to a session, such as gvfs or pulseaudio, but it's not at all appropriate for user-facing applications or desktop components, such as gnome-terminal[1], gnome-session, the window manager, indicators, etc. They are necessarily per-session, and sometimes even need to be keyed off the session type (gnome, LXDE, XFCE, etc.). I. e. they should be started on the first graphical session (not on VT logins) and should be stopped when stopping the graphical session. There are some existing discussions [2][3] and while the latter has a lot of patches and some good direction, it does not really touch the subject of the mail at all -- how do I get something from a user unit into the session-*.scope session of logind? I. e. if I have some ~/.config/systemd/user/xeyes@.service with [Unit] Description=Xeyes on session %I [Service] ExecStart=/usr/bin/xeyes I can start this with "systemctl --user start xeyes@${XDG_SESSION_ID}", but this will hang off user@1000.service instead of session-*.scope and thus it will not be stopped once the X session gets logged out. One idea was to add PartOf=session-*.scope, but that's a system-level unit and thus the session process does not know about that. There also is no Scope= option for a service to make that run in a different scope. We can certainly hook something into xinit.d/ to *start* a "master stub" service which then launches the components, but there is no way to tell it to stop with the logind session. Is this all in vain, and we need to make the *entire* world of free software shift over to the new model of "user-wide services" before we can use systemd --user for graphical stuff? (Colin's patch list is already impressively long and it is by far not complete) Or is someone actually using systemd --user for graphical sessions already and found a trick that I missed? Thanks, Martin [1] https://bugzilla.gnome.org/show_bug.cgi?id=744736 [2] https://mail.gnome.org/archives/desktop-devel-list/2014-January/msg00079.html [3] https://lists.freedesktop.org/archives/systemd-devel/2013-August/012517.html -- Martin Pitt | http://www.piware.de Ubuntu Developer (www.ubuntu.com) | Debian Developer (www.debian.org) _______________________________________________ systemd-devel mailing list systemd-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/systemd-devel