Hi,
I'm using s6 as user daemons and some other long running processes for a while.
I wanted to have dependency tracking and decided to try s6-rc within user
services.
Currently I am creating scan directories for both user and wayland
compositor.
$ ls $XDG_RUNTIME_DIR/s6
river.wayland-1 scandir
I am copying service directories at startup to XDG_RUNTIME_DIR and then
running s6-svscan.
But I can't understand how to use both s6-rc-install and s6-rc-init
properly. Whenever I start river (wayland compositor), I should be able
to initialize and start a new live directory specific to this river
instance. I noticed that I can specify a prefix at s6-rc-init time and
link all the services to one scandir.
$ pstree
`-s6-svscan scandir
|-s6-supervise user:tmux-log
|-s6-supervise user:tmux
|-s6-supervise user:s6rc-fdholder
|-s6-supervise user:s6rc-oneshot-runner
|-s6-supervise river.wayland-0:gammastep-log
|-s6-supervise river.wayland-0:gammastep
|-s6-supervise river.wayland-0:beansprout-log
|-s6-supervise river.wayland-0:beansprout
|-s6-supervise river.wayland-0:s6rc-fdholder
|-s6-supervise river.wayland-0:s6rc-oneshot-runner
|-s6-supervise river.wayland-0:foot
`-s6-supervise river.wayland-0:foot-log
$ ls -l $XDG_RUNTIME_DIR/s6-rc/
live.river.wayland-0 -> live.river.wayland-0:s6-rc-update:S8wv3q
live.river.wayland-0:s6-rc-update:S8wv3q
live.user -> live.user:s6-rc-update:TCRft7
live.user:s6-rc-update:TCRft7
scandir
I have river and user sets in my s6-rc repository. I copied compiled
service databases to somewhere else as "initial", linked them to
"current". Then s6-rc-init and s6-rc-set-install for corresponding
bootdb's.
Is there a better way? Or should just script around from this manually
copying approach.
btw there is my service store for user services:
https://codeberg.org/kurth4cker/s6-rc-store
I will expand it for sure once I fully understand how should I use
s6-rc.
Received on Thu Apr 23 2026 - 19:45:21 CEST