Session and seat management is not necessary for every setup, but it can be used to safely create temporary runtime directories, provide access to hardware devices and multi-seat capabilities, and control system shutdown.
D-Bus is an IPC (inter-process communication) mechanism used by userspace software in Linux. D-Bus can provide a system bus and/or a session bus, the latter being specific to a user session.
- To provide a system bus, you should
dbusservice. This might require a system reboot to work properly.
- To provide a session bus, you can start a given program (usually a window
manager or interactive shell) with
desktop environments, if launched through an adequate display manager, will
launch a D-Bus session themselves. If a D-Bus session is active for the
current session, the environment variable
DBUS_SESSION_BUS_ADDRESSshould be defined.
Note that some software assumes the presence of a system bus, while other software assumes the presence of a session bus.
elogind(8) manages user logins and system
power, as a standalone version of
systemd-logind. elogind provides necessary
features for most desktop environments and Wayland compositors. It can also be
one of the mechanisms for rootless Xorg.
Please read the "Power Management" section for things to consider before installing elogind.
To make use of its features, install the
elogind package and make sure the
system D-Bus is enabled. You might need to log out and in again.
If you're having any issues with elogind, enable its service, as waiting for a D-Bus activation can lead to issues.
To use it, install the
seatd package and enable its service. If you want
non-root users to be able to access the seatd session, add them to the
Note that, unlike elogind, seatd doesn't do anything besides managing seats.
XDG_RUNTIME_DIR is an environment variable defined by the XDG Base Directory
Its value sets the path to the base directory where programs should store
user-specific runtime files.
Install elogind as your session manager to automatically set up
Alternatively, manually set the environment variable through the shell. Make
sure to create a dedicated user directory and set its permissions to
good default location is