Skip to main content
Version: 2.1

Dux Greeter

Installation

Installation

Installation Methods​

How installation works

Install the dms-greeter package for your distro (sections below), then run:

dms-greeter install

This installs greetd if needed and handles all configuration automatically.

⚠️ This replaces your current display manager.

The old dms greeter <command> form still works as a deprecated alias that forwards to dms-greeter.

Distro Installation​

Arch & Derivatives​

Dux Greeter is available in the AUR as a prebuilt binary package or a source (-git) package.

paru -S greetd-dms-greeter-bin

greetd-dms-greeter-bin installs a prebuilt binary from the latest tagged release, so there is nothing to compile. This is the fastest way to install and the recommended option for most users.

Both packages ship the dms-greeter binary along with the /usr/lib/sysusers.d/dms-greeter.conf and /usr/lib/tmpfiles.d/dms-greeter.conf declarations described in Greeter system user. After installing, either run dms-greeter install (see the note at the top) or continue with Completing Setup.

Fedora & Enterprise Linux​

Dux Greeter is published to the duxlabs/dux COPR from the dank-greeter repository. On Enterprise Linux 10 the same COPR provides greetd, which EPEL 10 does not ship.

sudo dnf copr enable duxlabs/dux
sudo dnf install dms-greeter

Tagged releases. Recommended for most users.

Both RPMs install /usr/lib/sysusers.d/dms-greeter.conf so the greeter user is recreated from /usr on every boot. That matters on Fedora Atomic, Universal Blue, bootc, and other ostree systems where install-time useradd in /etc/passwd may not persist.

Debian & Ubuntu​

Dux Greeter is published from dank-greeter into the Dux OBS/PPA channels as dms-greeter (tagged releases) and dms-greeter-git (master snapshots). The two packages conflict; both install /usr/bin/dms-greeter.

Debian​

Packages are published on OBS for Debian 13 (Trixie), Debian Testing, and Debian Sid.

Select your release (add the repository):

curl -fsSL https://download.opensuse.org/repositories/home:AvengeMedia:danklinux/Debian_13/Release.key | \
sudo gpg --dearmor -o /etc/apt/keyrings/duxlabs.gpg
echo "deb [signed-by=/etc/apt/keyrings/duxlabs.gpg] https://download.opensuse.org/repositories/home:/AvengeMedia:/danklinux/Debian_13/ /" | \
sudo tee /etc/apt/sources.list.d/duxlabs.list
sudo apt update

Then install:

sudo apt install dms-greeter

Tagged releases. Recommended for most users.

Ubuntu​

Ubuntu 26.04 LTS+ (Resolute Raccoon) is supported via Launchpad PPA.

sudo add-apt-repository ppa:duxlabs/dux
sudo apt update
sudo apt install dms-greeter

Tagged releases. Recommended for most users.

openSUSE & Derivatives​

Dux Greeter is available through the Open Build Service (OBS) for OpenSUSE Tumbleweed, Leap 16/16.1, and Slowroll. Both dms-greeter and dms-greeter-git ship from the same danklinux project and conflict with each other.

Select your distribution (add the repository):

sudo zypper addrepo https://download.opensuse.org/repositories/home:AvengeMedia:danklinux/openSUSE_Tumbleweed/home:AvengeMedia:danklinux.repo
sudo zypper refresh

Then install:

sudo zypper install dms-greeter

Tagged releases. Recommended for most users.

Void Linux​

note

Install Dux Greeter from our R2-backed DMS XBPS repository or build it from source. Stable and git packages conflict; both provide /usr/bin/dms-greeter.

echo "repository=https://void.danklinux.com/dms/current" | sudo tee /etc/xbps.d/dms.conf
sudo xbps-install -Su
note

On the first sync, xbps-install will output our signing key fingerprint and ask you to type y to trust and import it. Verify that the key matches our official signing fingerprint.

sudo xbps-install -S dms-greeter

Tagged releases. Recommended for most users.

After installation, proceed to Completing Setup below.

Greeter system user (RPM, DEB, and immutable systems)​

Official dms-greeter / dms-greeter-git packages (Arch AUR, Fedora, Debian, Ubuntu, openSUSE) ship two systemd declarations under /usr:

FilePurpose
/usr/lib/sysusers.d/dms-greeter.confDeclares the greeter UNIX account (home /var/lib/greeter, shell /bin/bash)
/usr/lib/tmpfiles.d/dms-greeter.confCreates /var/cache/dms-greeter and /var/lib/greeter with greeter:greeter ownership

systemd-sysusers applies the user definition at boot and on package install. Package scriptlets (useradd / adduser) remain as a fallback on traditional mutable systems.

Immutable and image-based systems​

On Fedora Atomic, Universal Blue, bootc, Zirconium, and similar systems:

  • Install dms-greeter or dms-greeter-git from your distro repo (layered package or image build). Do not rely on dms-greeter install, dms-greeter enable, or dms-greeter uninstall - those commands are disabled on immutable systems by CLI policy.
  • After installing or upgrading the greeter package, reboot once if getent passwd greeter is empty (sysusers runs early in boot).
  • Configure /etc/greetd/config.toml, enable greetd, and set up theme sync using your distro or image documentation. dms-greeter sync may still work for theme files if not blocked by your image policy.

Verify the account:

getent passwd greeter
getent group greeter
ls -l /usr/lib/sysusers.d/dms-greeter.conf
systemd-sysusers --dry-run | grep greeter

If you previously added a manual /usr/lib/sysusers.d/dms-greeter.conf workaround (for example on Zirconium before upstream packaging), you can remove it once dms-greeter from Dux includes the same file.

Gentoo​

There is no Gentoo package yet. Install the prebuilt binary from the latest release:

curl -fsSL https://github.com/duxlabs-dev/dux-greeter/releases/latest/download/dms-greeter-linux-amd64.tar.gz | tar -xz
sudo install -Dm755 dms-greeter-linux-amd64 /usr/local/bin/dms-greeter

Then run:

dms-greeter install

This will automatically install greetd via Portage, configure permissions, and set up greetd to use dms-greeter. To start the greeter immediately without rebooting, run sudo systemctl start greetd.

NixOS​

tip

NixOS has dedicated documentation with two installation methods:

Void Linux​

After installing dms-greeter or dms-greeter-git (see Void Linux under Distro Installation above), enable and optionally sync theming:

dms-greeter enable
dms-greeter sync # optional: share theming with the shell

On Void, dms-greeter enable sets up everything logind provides automatically on systemd distros: it enables the dbus and elogind services, configures greetd for elogind (LIBSEAT_BACKEND=logind), rewrites /etc/sv/greetd/run to wait for those services at boot, adds the _greeter user to the video/input groups, and adds pam_rundir to /etc/pam.d/greetd so the post-login session gets an XDG_RUNTIME_DIR. If seatd is enabled it is disabled, elogind manages the seat instead.

On runit, enabling greetd starts it within a few seconds, no separate start command is needed. greetd package updates restore the stock run script, re-run dms-greeter enable afterwards.

A Wayland compositor (niri, hyprland, sway, …) is required and is not pulled in automatically.

Installer & Manual Installation​

Dux Installer Users​

(Niri and Hyprland users only)

dms-greeter is an opt-in component in the Dux Installer. It can be toggled on during the installation process, but is skipped by default to ensure users consciously choose to enable it (since it replaces your current display manager).

If you enable dms-greeter in the Dux Installer, the full greeter setup (permissions, ACLs, greetd configuration, service enablement) runs automatically at the end of the install process. No further steps are required.

If you skipped it during the installer setup and want to add it later, install the package for your distro (see the sections above) and then proceed to Completing Setup.

warning

Enabling dms-greeter will replace your current display manager.

Manual installation (no package)​

Prefer your distro package when available (see the sections above). If your distro has no dms-greeter package, install greetd and quickshell, then grab the prebuilt binary from the latest release:

curl -fsSL https://github.com/duxlabs-dev/dux-greeter/releases/latest/download/dms-greeter-linux-amd64.tar.gz | tar -xz
sudo install -Dm755 dms-greeter-linux-amd64 /usr/local/bin/dms-greeter

Or build it from source (requires go and make):

git clone --recurse-submodules https://github.com/duxlabs-dev/dux-greeter.git
cd dux-greeter
make build
sudo make install

The UI is embedded in the binary, there is no quickshell config tree to install. Create the greeter user and cache directory if your setup does not already have them (see the dank-greeter README):

sudo mkdir -p /var/cache/dms-greeter
sudo chown greeter:greeter /var/cache/dms-greeter

Then proceed to Completing Setup below.

note

Some distributions may have different user/group names for the greetd user.

Prerequisites for Theme Syncing​

ACLs (Access Control Lists) are required to allow the greeter user to traverse your home directory and access configuration files. The acl package is installed automatically when you run dms-greeter sync or dms-greeter install, so no manual action is needed on supported distributions.

Completing Setup​

If you used dms-greeter install​

This applies to any distro where you ran dms-greeter install, including Arch Linux (requires paru or yay), Ubuntu, Fedora, Debian, openSUSE, and Gentoo.

Configuration, permissions, theme syncing, and greetd service enablement are all handled automatically. To start the greeter immediately without rebooting:

sudo systemctl start greetd

You can verify your setup at any time with dms-greeter status. dms-greeter sync can be re-run after theme changes.

If you installed the package manually​

This applies to: Arch Linux, and any other distro where you installed the package manually using the commands above.

After installing the package, run these two commands to complete setup:

1. Enable the Greeter​

dms-greeter enable

This will:

  • Configure /etc/greetd/config.toml with the correct compositor command
  • Disable conflicting display managers (gdm, lightdm, sddm)
  • Enable and start the greetd service

2. Sync with Your User Theme​

dms-greeter sync

This will:

  • Install acl (if not already installed)
  • Add your user to the greeter group (if needed)
  • Set up ACL permissions on parent directories for greeter access
  • Configure group permissions on DMS config directories
  • Create symlinks to sync settings, wallpapers, and color themes
  • Create your per-user cache slot at /var/cache/dms-greeter/users/<username>/
note

After running dms-greeter sync, you will need to log out and log back in for group membership changes to take effect.

Multi-user systems

One main admin runs dms-greeter sync once for system setup. Add every other user to the greeter group in Settings → Users (greeter access toggle), or with sudo usermod -aG greeter <username>. Each of those accounts should then run dms-greeter sync --profile after logging out and back in - not full sync. See Configuration → Multi-user systems.

note

NixOS users: The dms-greeter enable and dms-greeter sync commands are not available on NixOS. Please follow the manual steps below or see the NixOS installation guides.

For all users​

You can check your greeter configuration at any time:

dms-greeter status

This verifies your greeter setup and sync status. See the Configuration guide for detailed information.

For optional fingerprint or security-key login, see Login authentication.


Manual Setup (all distros)​

If you prefer to set up the greeter manually, follow these steps:

tip

All users: You can use dms-greeter enable to automate this process instead of following the manual steps below.

  1. Edit /etc/greetd/config.toml and set command = to use dms-greeter:
[terminal]
vt = 1

[default_session]
user = "greeter"
command = "dms-greeter --command niri"
### Uncomment the below line to run the greeter on Hyprland
# command = "dms-greeter --command Hyprland"
### Uncomment to run the greeter on sway
# command = "dms-greeter --command sway"
### Uncomment to run the greeter on Miracle WM
# command = "dms-greeter --command miracle-wm"
  1. Disable any existing conflicting greeters:
warning

Disabling a greeter while logged in under that greeter will log you out and bring you to a non-graphical TTY.

sudo systemctl disable gdm lightdm sddm
  1. Enable and start the greeter:
sudo systemctl enable greetd
sudo systemctl start greetd

Manual Setup (Void Linux / runit)​

The steps above assume systemd. On Void the greeter user is _greeter, the seat is managed by elogind, and greetd needs extra pieces that logind provides for free elsewhere. dms-greeter enable does all of this for you, this is the manual equivalent:

  1. Edit /etc/greetd/config.toml:
[terminal]
vt = 1

[default_session]
user = "_greeter"
command = "env LIBSEAT_BACKEND=logind DMS_VOID=1 dms-greeter --command niri --cache-dir /var/cache/dms-greeter"

Swap niri for hyprland or sway as needed. The LIBSEAT_BACKEND=logind prefix is required, without it the greeter compositor tries seatd and hangs.

  1. Enable dbus and elogind, and disable seatd if it is enabled (elogind manages the seat):
sudo ln -sf /etc/sv/dbus /var/service/
sudo ln -sf /etc/sv/elogind /var/service/
sudo rm -f /var/service/seatd
  1. Make greetd wait for dbus and elogind at boot. Replace /etc/sv/greetd/run with:
#!/bin/sh
sv check dbus >/dev/null || exit 1
sv check elogind >/dev/null || exit 1
exec greetd

Without this, greetd can race elogind on boot and the first session hangs. greetd package updates restore the stock run script, re-apply this (or re-run dms-greeter enable) afterwards.

  1. Add _greeter to the video and input groups:
sudo usermod -aG video,input _greeter
  1. Add pam_rundir to /etc/pam.d/greetd so sessions get an XDG_RUNTIME_DIR:
session optional pam_rundir.so
  1. Enable greetd:
sudo ln -sf /etc/sv/greetd /var/service/

runit starts it within a few seconds. If you still land on a tty login, check sudo sv status greetd dbus elogind: greetd stuck in a restart loop means dbus or elogind is not running.