I never saw a straightforward tutorial for this anywhere, so I made one.
To understand why you should use seatd, you must understand what elogind is and why it exists.
On Linux distributions that use systemd, they don't need elogind, because they have the real thing: systemd-logind.
BUT: No systemd, no systemd-logind. So you need a replacement.
And that replacement is elogind. It's just logind isolated to not be part of the init system and to not expect to be part of the init system.
But keeping elogind maintained is an uphill battle against systemd upstream decisions. So seatd was made. Originally only for minimal Wayland compositors, but you can use it with Xorg/Xlibre as well.
NOTES:
If you don't use openrc, install the init packages for your init system instead, and replace commands for openrc with the appropriate equivalents for your init system of choice.
This will work on s6, dinit or runit as well, and the latter two are even supported by turnstile as backends.
Similarly you don't have to use Artix Linux, use whichever distro that respects init freedom you like. You will have to adjust package manager commands.
Installation itself is pretty straightforward:
doas pacman -S seatd seatd-openrc
doas rc-update add seatd boot
This will automatically kick out elogind-openrc, since seatd-openrc conflicts with it.
Somewhere along the journey, you should also kick elogind out of your system (that will kill your X session though, careful):
doas rc-service elogind stop
doas pacman -Rdd elogind
But now if you just tried to start your X server, you probably will only get video, or maybe nothing at all, because by default elogind handles all permissions and seat management, but now you need to add yourself to the appropriate groups:
doas usermod -aG video,input,audio $USER
Now you can start an X server. But you might notice, audio still doesn't work. Also user services don't work. Because right now nothing is managing your $XDG_RUNTIME_DIR. Elogind did that before, and seatd doesn't, because that's not its job. (Unix philosophy <3)
And that's where you need turnstile:
doas pacman -S turnstile turnstile-openrc
doas rc-update add turnstile boot
But you'll need to configure it to actually manage your run directory for you.
doas nvim /etc/turnstile/turnstiled.conf
And then make sure these options are set:
# This is usually the default value, but double check
rundir_path = /run/user/%u
# This is usually not the default value, definitely make sure to set this
manage_rundir = yes
And with that, everything should work as expected after a reboot.