[systemd-devel] Create a new logind session from a systemd --user unit

Colin Walters walters at verbum.org
Sun Aug 4 07:46:44 PDT 2013


On Tue, 2013-07-30 at 01:02 +0200, Lennart Poettering wrote:

> We are working on this bit by bit. If you want this to go faster, then
> please work with us, and write patches for libX11 and D-Bus.

Ok, some hacking on the plane on the way to GUADEC got me really far on
this; then we had a quick face to face to work through some conceptual
issues.

In the new user@ model, it's very important to note there is only one
"stub" process per session (at least graphical ones - whether we change
getty is a whole other topic).  So for graphical, everything is launched
from user at .service.  The side effect of this is twofold:

1) Pretty much all the user processes are no longer inside a session
   at all.
2) It is now much harder to log in multiple times graphically; this
   is kind of a crazy thing to do, but it's still *possible*.  To do
   so, you wire up your userspace code to set
   the pile of usual environment variables to override (DISPLAY,
   DBUS_SESSION_BUS_ADDRESS, etc.)  I can say though at least for
   GNOME we haven't supported this for years, so it's really not
   a change.

For for adapting to 1), we agreed on adding the concept of a "primary"
session, which is basically the first non-tty login.  I've added a small
API to systemd to look this up, and the patched GNOME to use it
(although we partially still respect XDG_SESSION_ID).

My current patches are here:

https://people.gnome.org/~walters/user-session-patches

I've been hacking on it using gnome-ostree; if there's interest I can
toss up a VM.

Before I spend too much time polishing the patches, I'd like to be sure
the high level architecture makes sense.  So please take a look at the
patches at that level; I'll split them up cleanly with better commit
messages after.

Obligatory screenshot:
https://people.gnome.org/~walters/Screenshot-gnome-ostree-systemd-user.png




More information about the systemd-devel mailing list