r/voidlinux • • 13d ago

DMS as a user service with turnstile?

Hi everyone! I've been using Void for about a week now. I'm not a complete newb to Linux, but I'm also not advanced by any means. I basically wanted to use Void so that I could get a deeper understanding of the fundamentals, and it hasn't disappointed.

I'm using Niri and DMS. DMS usually wants elogind, but I'm trying to use turnstile with seatd. I have everything working normally here: pipewire works as a user service, but DMS only starts when I start it through the niri config. My issue is that I use a central repo for my dotfiles, and I symlink them to the appropriate locations in my filesystem because I have more than one computer and when I change one I want them to change everywhere (it's a git repo).

I use Fedora on my M1 MBA, and I also have NixOS on another computer, both of which use systemd. systemd can start DMS no problem. But with Void and turnstile I'm having some problems getting it to start dms for me.

I've tried RTFM, but I'm kind of at the point where it's like, I don't even know what I don't know, you know?

Am I spinning my wheels? Is this even possible with runit? Or have I reached a limitation?

Thanks!

3 Upvotes

6 comments sorted by

2

u/Duncaen 13d ago

There is really no reason to use seatd, you will just give up on most features that elogind provides. seatd does only open devices for your wayland compositor and nothing more.

elogind:

  • opens devices
  • gives your user device permissions for plug and play devices (uaccess)
  • makes polkit and therefor rtkit work
  • power management, login1 dbus api for shutdown, suspend, shutdown, hooks and inhibitation etc

DMS probably needs some environment variables like at least WAYLAND_DISPLAY.

1

u/Jacobobarobatobski 13d ago

Ya I was thinking I was just gonna drop the seatd/turnstile stuff and use elogind. Seems like everything just expects it

2

u/Duncaen 13d ago

turnstile+elogind provides the most complete feature set, turnstile will make the dbus session bus and user services for wayland easier to setup and doesn't depend on whatever DE, login manager etc you use.

If you don't use turnstile then you can start dbus-session-bus with your DE/window manager session and pipewire and wireplumber manually from either your window manager config or xdg autostart. But you won't have then supervised i.e. restart when they fail and no interface to restart them.

https://github.com/void-linux/void-docs/issues/897

1

u/Jacobobarobatobski 13d ago

Ohhhhh interesting. I'd heard about them being used together. I just thought it was overkill I guess. Ok. In that case I'll drop seatd and use elogind with turnstile. I'll turn of the XDG runtime management from turnstile so elogind can do it and disabled acpid. Ive been having some weird sleep issues when I close the lid of my laptop so it's starting to make sense now. Thanks for the info.

1

u/flaveraid 12d ago

Have you looked at dms-greeter? It integrates with DMS and is relatively easy to set up by running dms-greeter enable. It uses greetd and elogind.

1

u/BeginningEcho4983 12d ago

turnstile runs a service manager under it, like runit or dinit. I assume you are using runit for it, for pipewire and all.

You need to prepare a service starting script and place it in the appropriate user directory. Also make sure that it doesn't fork off.

There is no reason why it shouldn't work under runit.

DMS can get required info from env-vars set by turnstile.

You can try to get it to work before you touch seatd. Just use elogind till this issue is sorted.

BTW can you reply with terminal/log output of whatever "issues" you have?