Re: s6-rc as user service manager

From: Peter Shkenev <petershh_at_disroot.org>
Date: Mon, 17 Oct 2022 23:42:02 +0300

Hello,

On Mon Oct 17, 2022 at 8:50 PM MSK, Ihor Antonov wrote:
> Kicking off another thread because it is slightly different from UX
> related questions.
>
> I am trying to get s6-rc set up as a user service manager (similar how
> systemd allows user's to manage their own services with systemctl --user
> start bla).
> This is useful for example for starting user's dbus, pipewire,
> xdg-desktop-portal services, and other stuff that is strictly user
> related.
>
> This usecase is geared towards a desktop/laptop.

(There were numerous rants of user services by Laurent Bercot and Colin
Booth on IRC, and I'm going to use those rants as a source).

Firstly, let's try to define "user services" without "bla". There are
three very different options:

1) User services are services running as a given user and started at a
boot time
This option is a trivial one with s6.

2) User services are services defined by users and running supervised
when the user wants it.
You can implement this with s6-usertree-maker [1], which would provide
you with a supervision tree rooted in a system one which can be managed
by user. User will have its own scandir and they can use all commands
provided by s6/s6-rc on their scandir.

3) User services are services that are started when user logs in.
I guess this is what you had in mind when you was typing your letter.
This is the hardest one and badly defined one. There are a lot of
questions:

- What does "user logs in" mean? Do we want services to be
  started when user logs in on the console or at seat? Sshd? Serial
  line?

- When do we stop services? "When the user logs out"? And if the user
  has both an X session and a shell in a console? We need to wait for
  the last connection to drop? How would we get this information? One
  needs some time to shut down the supervision tree.
  One can remember how did systemd killed all user processes on the
  logout.

- Moreover, some services (pipewire, for example) are supposed to be run
  in certain cases, e.g. a graphical session.

- There may be a lot of questions I don't know about.

> - Minor: a test utility for svscan dir would be nice
> - Minor: a test utility for live dir would be nice

If you use s6-rc, those are the same directories, filled by s6-rc-init
and changed by s6-rc-update. So the test would actually test those
utilities, I guess.

[1] https://skarnet.org/software/s6/s6-usertree-maker.html

---
Best regards,
Peter
Received on Mon Oct 17 2022 - 22:42:02 CEST

This archive was generated by hypermail 2.4.0 : Mon Oct 17 2022 - 22:53:04 CEST