Turnstile is a work in progress effort to create a session/login tracker to serve as a fully featured alternative to the logind subproject from systemd, and to provide a neutral API to both our session tracker and to logind itself.

Turnstile also provides a service-manager-agnostic way to manage per-user service managers for user services.

Scope

Turnstile will not (and probably will never be) a full replacement for elogind. Some functions which are covered by turnstile

  • session/login tracker
  • managing user service managers

Some functions are probably (and in some cases, are definitely) out of scope and thus won't be provided by turnstile, such as

  • seat tracker (seatd provides this)
  • ACPI handler (acpid provides this)

Installation

Install the turnstile package and enable the turnstiled service according to your service manager (if available).

By default, it will use dinit as its default user service manager backend. It is also usable under other system service managers such as OpenRC. dinit under turnstile will run independently alongside your system service manager.

In Artix, dinit is the only supported service manager backend right now, but runit as a backend is also available, it's just not supported.

Configuration

Turnstile can be configured through /etc/turnstile/turnstiled.conf file. You can change the service backend, debug mode, and so on.

WARNING: See limitations.

Usage

Enable the turnstiled service, log out, and log in. To see if your session is managed by turnstile, check if /run/turnstiled exists.

Service manager should be spawned automatically. So you can also try running dinitctl to see if it's running.

Limitations

Turnstile by itself supports /run directory management, but in its current state it conflicts with elogind since it also manages rundir. If you want to use it, you can force remove elogind.

WARNING: Some functionalities might be limited if elogind is not installed.

Consequently, linger is not supported as well since elogind also does it.