Dux Greeter
Installation
Installation
Installation Methods
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.
The old dms greeter <command> form still works as a deprecated alias that forwards to dms-greeter.
Distro Installation
Arch & Derivatives
DankGreeter is available in the AUR as a prebuilt binary package or a source (-git) package.
- Prebuilt Binary
- Latest Development Build
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.
paru -S greetd-dms-greeter-git
greetd-dms-greeter-git builds from the tip of the master branch. Use it if you want the newest changes before they are tagged, at the cost of a local compile and possible instability.
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 & CentOS
DankGreeter is published to the avengemedia/danklinux COPR from the dank-greeter repository.
- Stable
- Git (development)
sudo dnf copr enable avengemedia/danklinux
sudo dnf install dms-greeter
Tagged releases. Recommended for most users.
sudo dnf copr enable avengemedia/danklinux
sudo dnf install dms-greeter-git
Builds from the tip of master in dank-greeter. Conflicts with the stable dms-greeter package (both provide /usr/bin/dms-greeter).
To switch from stable:
sudo dnf swap dms-greeter dms-greeter-git
To switch back:
sudo dnf swap dms-greeter-git dms-greeter
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
DankGreeter is published from dank-greeter into the danklinux 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):
- Debian 13 (Trixie)
- Debian Testing
- Debian Sid
curl -fsSL https://download.opensuse.org/repositories/home:AvengeMedia:danklinux/Debian_13/Release.key | \
sudo gpg --dearmor -o /etc/apt/keyrings/danklinux.gpg
echo "deb [signed-by=/etc/apt/keyrings/danklinux.gpg] https://download.opensuse.org/repositories/home:/AvengeMedia:/danklinux/Debian_13/ /" | \
sudo tee /etc/apt/sources.list.d/danklinux.list
sudo apt update
curl -fsSL https://download.opensuse.org/repositories/home:AvengeMedia:danklinux/Debian_Testing/Release.key | \
sudo gpg --dearmor -o /etc/apt/keyrings/danklinux.gpg
echo "deb [signed-by=/etc/apt/keyrings/danklinux.gpg] https://download.opensuse.org/repositories/home:/AvengeMedia:/danklinux/Debian_Testing/ /" | \
sudo tee /etc/apt/sources.list.d/danklinux.list
sudo apt update
curl -fsSL https://download.opensuse.org/repositories/home:AvengeMedia:danklinux/Debian_Unstable/Release.key | \
sudo gpg --dearmor -o /etc/apt/keyrings/danklinux.gpg
echo "deb [signed-by=/etc/apt/keyrings/danklinux.gpg] https://download.opensuse.org/repositories/home:/AvengeMedia:/danklinux/Debian_Unstable/ /" | \
sudo tee /etc/apt/sources.list.d/danklinux.list
sudo apt update
Then install:
- Stable
- Git (development)
sudo apt install dms-greeter
Tagged releases. Recommended for most users.
sudo apt install dms-greeter-git
Builds from the tip of master in dank-greeter. Conflicts with stable dms-greeter; both install /usr/bin/dms-greeter.
To switch from stable → git or git → stable, install the package you want:
sudo apt install dms-greeter-git # replaces dms-greeter
sudo apt install dms-greeter # replaces dms-greeter-git
Ubuntu
Ubuntu 26.04 LTS+ (Resolute Raccoon) is supported via Launchpad PPA.
sudo add-apt-repository ppa:avengemedia/danklinux
sudo apt update
- Stable
- Git (development)
sudo apt install dms-greeter
Tagged releases. Recommended for most users.
sudo apt install dms-greeter-git
Builds from the tip of master in dank-greeter. Conflicts with stable dms-greeter; both install /usr/bin/dms-greeter.
To switch from stable → git or git → stable, install the package you want:
sudo apt install dms-greeter-git # replaces dms-greeter
sudo apt install dms-greeter # replaces dms-greeter-git
openSUSE & Derivatives
DankGreeter 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):
- Tumbleweed
- Leap 16
- Leap 16.1
- Slowroll
sudo zypper addrepo https://download.opensuse.org/repositories/home:AvengeMedia:danklinux/openSUSE_Tumbleweed/home:AvengeMedia:danklinux.repo
sudo zypper refresh
sudo zypper addrepo https://download.opensuse.org/repositories/home:AvengeMedia:danklinux/16.0/home:AvengeMedia:danklinux.repo
sudo zypper refresh
sudo zypper addrepo https://download.opensuse.org/repositories/home:AvengeMedia:danklinux/16.1/home:AvengeMedia:danklinux.repo
sudo zypper refresh
sudo zypper addrepo https://download.opensuse.org/repositories/home:AvengeMedia:danklinux/openSUSE_Slowroll/home:AvengeMedia:danklinux.repo
sudo zypper refresh
Then install:
- Stable
- Git (development)
sudo zypper install dms-greeter
Tagged releases. Recommended for most users.
sudo zypper install dms-greeter-git
Builds from the tip of master in dank-greeter. Conflicts with stable dms-greeter
To switch:
sudo zypper remove dms-greeter && sudo zypper install dms-greeter-git
sudo zypper remove dms-greeter-git && sudo zypper install dms-greeter
Void Linux
Install DankGreeter from our R2-backed DMS XBPS repository or build it from source. Stable and git packages conflict; both provide /usr/bin/dms-greeter.
- DMS Repository
- Build from Source
echo "repository=https://void.danklinux.com/dms/current" | sudo tee /etc/xbps.d/dms.conf
sudo xbps-install -Su
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.
- Stable
- Git (development)
sudo xbps-install -S dms-greeter
Tagged releases. Recommended for most users.
sudo xbps-install -S dms-greeter-git
Builds from the master branch in dank-greeter. Conflicts with stable dms-greeter.
To switch:
sudo xbps-remove dms-greeter && sudo xbps-install -S dms-greeter-git
sudo xbps-remove dms-greeter-git && sudo xbps-install -S dms-greeter
If you prefer to build from source using xbps-src:
# Set up the Void packages tree (one time)
git clone --depth 1 https://github.com/void-linux/void-packages.git
cd void-packages
./xbps-src binary-bootstrap
# Copy in the templates (adjust paths as needed)
cp -R ../dank-greeter/distro/void/srcpkgs/dms-greeter srcpkgs/
# Optional git snapshot template:
# cp -R ../dank-greeter/distro/void/srcpkgs/dms-greeter-git srcpkgs/
# Build the package (use dms-greeter-git for a master snapshot)
./xbps-src pkg dms-greeter
# ./xbps-src pkg dms-greeter-git
# Install the results
sudo xbps-install --repository=hostdir/binpkgs dms-greeter
# sudo xbps-install --repository=hostdir/binpkgs dms-greeter-git
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:
| File | Purpose |
|---|---|
/usr/lib/sysusers.d/dms-greeter.conf | Declares the greeter UNIX account (home /var/lib/greeter, shell /bin/bash) |
/usr/lib/tmpfiles.d/dms-greeter.conf | Creates /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-greeterordms-greeter-gitfrom your distro repo (layered package or image build). Do not rely ondms-greeter install,dms-greeter enable, ordms-greeter uninstall- those commands are disabled on immutable systems by CLI policy. - After installing or upgrading the greeter package, reboot once if
getent passwd greeteris empty (sysusers runs early in boot). - Configure
/etc/greetd/config.toml, enablegreetd, and set up theme sync using your distro or image documentation.dms-greeter syncmay 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 DankLinux includes the same file.
Gentoo
There is no Gentoo package yet. Install the prebuilt binary from the latest release:
curl -fsSL https://github.com/AvengeMedia/dank-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
NixOS has dedicated documentation with two installation methods:
- Native nixpkgs installation - Recommended for NixOS 26.05+
- Flake-based installation - Use for quicker updates
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
DankInstall Users
(Niri and Hyprland users only)
dms-greeter is an opt-in component in the DankInstaller. 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 DankInstall, 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 dankinstall and want to add it later, install the package for your distro (see the sections above) and then proceed to Completing Setup.
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/AvengeMedia/dank-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/AvengeMedia/dank-greeter.git
cd dank-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.
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.tomlwith 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
greetergroup (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>/
After running dms-greeter sync, you will need to log out and log back in for group membership changes to take effect.
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.
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:
All users: You can use dms-greeter enable to automate this process instead of following the manual steps below.
- Edit
/etc/greetd/config.tomland setcommand =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"
- Disable any existing conflicting greeters:
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
- 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:
- 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.
- 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
- Make greetd wait for dbus and elogind at boot. Replace
/etc/sv/greetd/runwith:
#!/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.
- Add
_greeterto the video and input groups:
sudo usermod -aG video,input _greeter
- Add pam_rundir to
/etc/pam.d/greetdso sessions get anXDG_RUNTIME_DIR:
session optional pam_rundir.so
- 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.