Accompanying non-systemd distros to replace GNOME’s new dependencies on systemd

Hi everyone,

Recently, GNOME announced stronger dependencies on systemd. Mainly userdb and gnome-session.

I’m looking into porting gnome-session to the GNU Shepherd for the Guix System. However, apart from one vague paragraph in the blog post, there is not a lot of guidance available to me. Not even a contact link!

I would like to collaborate with the upstream GNOME contributors on this, and also with the other distros that will have very similar goals as me.

I understand that GNOME wants to rely on stable interfaces instead of old hacky code, but this doesn’t have to be dropping a huge part of the user base! I’m ready to develop and maintain alternatives, but collaboration is key.

Could it be possible to setup a discussion channel, and maybe a guide for non-systemd distros?

Again, I really want to collaborate to bring a nice experience to our users instead of having to come up with hacky solutions on my own.

Have a nice day,
Noé

1 Like

Have you tried contacting the author of the blog post—who is also a member of the GNOME release team?

I don’t think “a huge part of the user base” is actually running a non-systemd-based distribution, in 2025. You’re, of course, welcome to bring data supporting your statement.

Discourse is the right place to ask. You can join the release team Matrix room as well.

If you want to implement an interface provided by a systemd component, my suggestion is to read the systemd code, and/or ask the systemd authors as well.

Hello,

Happy to hear that you’re interested in collaborating on this, thank you.

The work isn’t done or in place upstream yet. I prioritized getting the blog post out first. So please look at Draft: Remove builtin startup (!145) · Merge requests · GNOME / gnome-session · GitLab

I don’t know how Shepherd works, so I can’t really give specific advice. However, you’ll need to replace the following with a Shepherd integration:

  • the systemd user service unit files. These are spread across all the different packages: localsearch, gnome-settings-daemon, gnome-disk-utility, and of course gnome-session itself
  • leader-main.c, which currently does some basic environment setup and then asks systemd to start gnome-session-${XDG_SESSION_TYPE}@${SESSION}.target and then handles session shutdown (SIGTERM → tell systemd to stop the service, services stop → quit the leader)
  • tools/gnome-session-ctl, which is called by various systemd checkpoints to communicate to the service and the leader when things happen

As for userdb, reach out on the systemd mailing list with questions. I’ll be happy to assist there

Best,
Adrian

3 Likes

Hi Adrian,

The Shepherd is great, since it can run as a standalone user daemon. It’s written in Guile, so it can easily be interfaced in C code.

I realized I was rude in my first message, I’m sorry! Thank you so much for being willing to help and your work on gnome-session, it means a lot!

I will be starting the hacking next week, so expect some good activity :slight_smile:

Since the Shepherd can run standalone just for gnome-session, do you think it would make sense for me to replace/adapt the builtin startup with a Shepherd one? Of course, I’m willing to maintain it forwards in time.

Have a great day,
Noé

Void linux, Gentoo, Guix, Artix, Alpine. There are a lot of non systemd distros! Not all of the users will use GNOME of course, but even if its 0.1% of all GNOME users, I still think its a huge part. Because GNOME is for everyone, after all :slight_smile:

1 Like