[systemd-devel] User wayland session, conceptual questions

Vladimir Kudrya vladimir-csp at yandex.ru
Thu Feb 9 22:05:59 UTC 2023


Hello everyone!

As an experiment I wrote a session manager for standalone wayland 
compositors that utilizes systemd user-level daemon features for 
graphical sessions: https://github.com/Vladimir-csp/uwsm

It can either manage targets by itself and launch wayland session in a 
scope, or launch wayland session as a service and fully rely on 
dependencies.

I have some conceptual questions regarding where various user processes 
really should end up in.

user-N.slice
   session-N.scope
     stuff launched in login console
     Xserver lanuched via startx goes here
     so are apps launched inside X session
   user at N.service
     app.slice
       native in-session services
       XDG autostart derived services
       currently uwsm-managed units end up here
       so are all apps launched inside uwsm-managed wayland sessions.
     init.scope
       systemd internal stuff
     session.slice
       per-user important services

Unlike the case of X session launched via startx, session-N.scope now 
only has "login" and "systemctl --user start --wait 
wayland-wm@${WM}.service" processes. Seems kinda barren. Intuitively I 
would expect to have apps launched in my session here.

The whole graphical session (wayland-wm@${WM}.service or 
wayland-wm-${WM}.scope depending on uwsm mode of operation) and apps 
live in the app.slice. Which seems to be in accordance to app.slice 
description in systemd.special manual.

But those apps know which session they sort-of belong to because 
$XDG_SESSION_ID (along with some other vars) is exported by uwsm to 
systemd activation environment during startup. It seems kinda hacky, but 
works.

Also systemd.special manual recommends putting display servers into 
session.slice. But in case of a wayland compositor it is impossible to 
separate it from the apps, because the compositor handles keyboard 
shortcuts (which launch apps or launchers which launch apps). Is this 
recommendation even feasible for wayland?

If the task at hand is to launch a wayland session after login, propely 
utilizing graphical-session-pre.target, graphical-session.target, 
xdg-desktop-autostart.target, am I going in the right direction? Which 
of the two startup modes I implemented is more correct? Any advice would 
be welcome. Thank you.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/systemd-devel/attachments/20230210/560f7cce/attachment.htm>


More information about the systemd-devel mailing list