- Split auth capability state by lock screen and greeter - Share detection between settings UI and lock runtime - Broaden greeter PAM include detection across supported distros
Dank (dms) Greeter
A greeter for greetd that follows the aesthetics of the dms lock screen.
Features
- Multi user: Login with any system user
- dms sync: Sync settings with dms for consistent styling between shell and greeter
- Multiple compositors: Supports niri, Hyprland, Sway, or mangowc.
- Custom PAM: Supports custom PAM configuration in
/etc/pam.d/greetd - Session Memory: Remembers last selected session and user
- Can be disabled via
settings.jsonkeys:greeterRememberLastSessionandgreeterRememberLastUser
- Can be disabled via
Installation
Arch Linux
Arch linux users can install greetd-dms-greeter-git from the AUR.
paru -S greetd-dms-greeter-git
# Or with yay
yay -S greetd-dms-greeter-git
Debian / openSUSE
Official packages are available from the DankLinux OBS repository. Add the repo for your distribution and install:
# Debian 13
sudo apt install dms-greeter # after adding the repo
# openSUSE Tumbleweed
zypper install dms-greeter # after adding the repo
See the Installation guide for full repository setup.
If you previously installed manually, remove legacy files first:
sudo rm -f /usr/local/bin/dms-greeter
sudo rm -rf /etc/xdg/quickshell/dms-greeter
Then complete setup:
dms greeter enable
dms greeter sync
Syncing themes (Optional)
To sync your wallpaper and theme with the greeter login screen, follow the manual setup below:
Manual theme syncing
# Add yourself to greeter group
sudo usermod -aG greeter <username>
# Set ACLs to allow greeter to traverse your directories
setfacl -m u:greeter:x ~ ~/.config ~/.local ~/.cache ~/.local/state
# Set group ownership on config directories
sudo chgrp -R greeter ~/.config/DankMaterialShell
sudo chgrp -R greeter ~/.local/state/DankMaterialShell
sudo chgrp -R greeter ~/.cache/DankMaterialShell
sudo chmod -R g+rX ~/.config/DankMaterialShell ~/.cache/DankMaterialShell ~/.cache/quickshell
# Create symlinks
sudo ln -sf ~/.config/DankMaterialShell/settings.json /var/cache/dms-greeter/settings.json
sudo ln -sf ~/.local/state/DankMaterialShell/session.json /var/cache/dms-greeter/session.json
sudo ln -sf ~/.cache/DankMaterialShell/dms-colors.json /var/cache/dms-greeter/colors.json
# Logout and login for group membership to take effect
Fedora / RHEL / Rocky / Alma
Install from COPR or build the RPM:
# From COPR (when available)
sudo dnf copr enable avenge/dms
sudo dnf install dms-greeter
# Or build locally
cd /path/to/DankMaterialShell
rpkg local
sudo rpm -ivh x86_64/dms-greeter-*.rpm
The package automatically:
- Creates the greeter user
- Sets up directories and permissions
- Configures greetd with auto-detected compositor
- Applies SELinux contexts
Then complete setup:
dms greeter enable
dms greeter sync
Syncing themes (Optional)
Run:
dms greeter sync
Then logout/login to see your wallpaper on the greeter.
Automatic
The easiest thing is to run dms greeter install or dms for interactive installation.
On Debian/openSUSE, this now prefers the dms-greeter package when the OBS repo is configured.
Manual (fallback only)
Use this only if no package is available for your distro.
-
Install
greetd(in most distro's standard repositories) andquickshell -
Create the greeter user (if not already created by greetd):
sudo groupadd -r greeter
sudo useradd -r -g greeter -d /var/lib/greeter -s /bin/bash -c "System Greeter" greeter
sudo mkdir -p /var/lib/greeter
sudo chown greeter:greeter /var/lib/greeter
- Clone the dms project to
/etc/xdg/quickshell/dms-greeter:
sudo git clone https://github.com/AvengeMedia/DankMaterialShell.git /etc/xdg/quickshell/dms-greeter
- Copy
Modules/Greetd/assets/dms-greeterto/usr/local/bin/dms-greeter:
sudo cp /etc/xdg/quickshell/dms-greeter/Modules/Greetd/assets/dms-greeter /usr/local/bin/dms-greeter
sudo chmod +x /usr/local/bin/dms-greeter
- Create greeter cache directory with proper permissions:
sudo mkdir -p /var/cache/dms-greeter
sudo chown greeter:greeter /var/cache/dms-greeter
sudo chmod 750 /var/cache/dms-greeter
- Edit or create
/etc/greetd/config.toml:
[terminal]
vt = 1
[default_session]
user = "greeter"
# Change compositor to sway, hyprland, or mangowc if preferred
command = "/usr/local/bin/dms-greeter --command niri"
- Disable existing display manager and enable greetd:
sudo systemctl disable gdm sddm lightdm
sudo systemctl enable greetd
- (Optional) Set up theme syncing using the manual ACL method described in the Configuration → Personalization section below
Legacy installation (deprecated)
If you prefer the old method with separate shell scripts and config files:
- Copy
assets/dms-niri.kdlorassets/dms-hypr.confto/etc/greetd - Copy
assets/greet-niri.shorassets/greet-hyprland.shto/usr/local/bin/start-dms-greetd.sh - Edit the config file and replace
_DMS_PATH_with your DMS installation path - Configure greetd to use
/usr/local/bin/start-dms-greetd.sh
NixOS
To install the greeter on NixOS add the repo to your flake inputs as described in the readme. Then somewhere in your NixOS config add this to imports:
imports = [
inputs.dank-material-shell.nixosModules.greeter
]
Enable the greeter with this in your NixOS config:
programs.dank-material-shell.greeter = {
enable = true;
compositor.name = "niri"; # or set to hyprland
configHome = "/home/user"; # optionally copyies that users DMS settings (and wallpaper if set) to the greeters data directory as root before greeter starts
};
Usage
Using dms-greeter wrapper (recommended)
The dms-greeter wrapper simplifies running the greeter with any compositor:
dms-greeter --command niri
dms-greeter --command hyprland
dms-greeter --command sway
dms-greeter --command mangowc
dms-greeter --command niri -C /path/to/custom-niri.kdl
dms-greeter --command niri --remember-last-user false --remember-last-session false
Configure greetd to use it in /etc/greetd/config.toml:
[terminal]
vt = 1
[default_session]
user = "greeter"
command = "/usr/bin/dms-greeter --command niri"
Manual usage
To run dms in greeter mode you can also manually set environment variables:
DMS_RUN_GREETER=1 qs -p /path/to/dms
Configuration
Compositor
You can configure compositor specific settings such as outputs/displays the same as you would in niri or Hyprland.
Simply edit /etc/greetd/dms-niri.kdl or /etc/greetd/dms-hypr.conf to change compositor settings for the greeter
Personalization
The greeter can be personalized with wallpapers, themes, weather, clock formats, and more - configured exactly the same as dms.
Easiest method: Run dms greeter sync to automatically sync your DMS theme with the greeter.
Manual method: You can manually synchronize configurations if you want greeter settings to always mirror your shell:
# Add yourself to the greeter group
sudo usermod -aG greeter $USER
# Set ACLs to allow greeter user to traverse your home directory
setfacl -m u:greeter:x ~ ~/.config ~/.local ~/.cache ~/.local/state
# Set group permissions on DMS directories
sudo chgrp -R greeter ~/.config/DankMaterialShell ~/.local/state/DankMaterialShell ~/.cache/quickshell
sudo chmod -R g+rX ~/.config/DankMaterialShell ~/.local/state/DankMaterialShell ~/.cache/quickshell
# Create symlinks for theme files
sudo ln -sf ~/.config/DankMaterialShell/settings.json /var/cache/dms-greeter/settings.json
sudo ln -sf ~/.local/state/DankMaterialShell/session.json /var/cache/dms-greeter/session.json
sudo ln -sf ~/.cache/DankMaterialShell/dms-colors.json /var/cache/dms-greeter/colors.json
# Logout and login for group membership to take effect
Advanced: You can override the configuration path with the DMS_GREET_CFG_DIR environment variable or the --cache-dir flag when using dms-greeter. The default is /var/cache/dms-greeter.
The cache directory should be owned by greeter:greeter with 770 permissions.