Skip to main content

Overview

DankMaterialShell (DMS) is a modern, Material Design-inspired desktop shell built with QuickShell. It provides the user interface layer for Zirconium, including panels, launchers, and the login greeter.
DMS is installed from the avengemedia/dms-git COPR repository and depends on QuickShell from the avengemedia/danklinux repository.

Components

DankMaterialShell consists of several integrated components:

dms

The main shell component that provides:
  • Desktop panels and taskbar
  • System tray integration
  • Notifications
  • Workspace indicators
  • Media controls
Systemd service: dms.service (user service)
# Check DMS status
systemctl status --user dms.service

# Restart DMS
systemctl restart --user dms.service

dms-cli

Command-line interface for interacting with DMS:
# General usage
dms <command> [options]
# Sync greeter settings
dms greeter sync

# Check DMS status
dms status

# Reload configuration
dms reload

dms-greeter

The login greeter that launches your Niri session. Configuration: /etc/greetd/config.toml
[general]
service = "greetd-spawn"

[terminal]
vt = 1

[default_session]
command = "dms-greeter --command niri"
user = "greeter"

Greeter user and cache

The greeter runs as a dedicated system user (UID 767) with its own cache directory:
# Greeter user configuration
# /usr/lib/sysusers.d/dms-greeter.conf
g greeter 767
u greeter 767 "Greetd greeter"
Greeter configuration is symlinked from zdots:
# /usr/lib/tmpfiles.d/99-dms-greeter.conf
L /var/cache/dms-greeter/settings.json - greeter greeter - /usr/share/zirconium/zdots/dot_config/DankMaterialShell/settings.json
L /var/cache/dms-greeter/session.json - greeter greeter - /usr/share/zirconium/zdots/private_dot_local/state/DankMaterialShell/session.json
L /var/cache/dms-greeter/dms-colors.json - greeter greeter - /usr/share/zirconium/zdots/dot_cache/DankMaterialShell/dms-colors.json
L /var/cache/dms-greeter/colors.json - greeter greeter - /usr/share/zirconium/zdots/dot_cache/DankMaterialShell/dms-colors.json

Updating greeter configuration

After changing greeter settings:
zjust update-greeter
# Equivalent to: dms greeter sync

dgop

DankGnomeOnlineProfiles - integration component for online accounts.
dgop provides seamless integration with GNOME Online Accounts for cloud services and email.

dsearch

Fast application and file search component integrated into the DMS launcher. Features:
  • Application launching
  • File indexing and search
  • Command execution
  • Calculator functionality

Configuration files

DMS configuration is managed through chezmoi from zdots:

User configuration

  • Settings: ~/.config/DankMaterialShell/settings.json
  • Session state: ~/.local/state/DankMaterialShell/session.json
  • Color cache: ~/.cache/DankMaterialShell/dms-colors.json

Managed by zdots

All DMS configuration files are automatically synchronized from:
/usr/share/zirconium/zdots/dot_config/DankMaterialShell/
Manual changes to DMS configuration files will be overwritten by chezmoi updates unless you disable automatic dotfile synchronization.

Configuration options

Appearance and theming

DMS uses Material Design principles with color theming generated by matugen:
  • Accent colors: Set system-wide via GNOME settings
  • Color scheme: Automatically generated from wallpaper or accent color
  • Panel styling: Configured in settings.json

Setting accent color

zjust set-accent-color
# Interactive picker: blue, teal, green, yellow, orange, red, pink, purple, slate

# Or set directly
gsettings set org.gnome.desktop.interface accent-color "blue"

Panel configuration

Customize panel behavior, position, and modules in ~/.config/DankMaterialShell/settings.json.
While specific settings are managed through zdots, you can typically configure:
  • Panel position (top/bottom)
  • Panel height and opacity
  • Module visibility (clock, system tray, workspace indicators)
  • Corner radius and styling
  • Font and icon sizes

Launcher settings

dsearch launcher can be customized for:
  • Search behavior and indexing
  • Keyboard shortcuts
  • Result ordering
  • Category filtering

Integration with other components

DMS integrates seamlessly with Zirconium components:

Authentication

PAM configuration for fingerprint support:
# Custom PAM files installed from QuickShell assets
/usr/lib/pam.d/*
# Source: /usr/share/quickshell/dms/assets/pam/*
This fixes long login times when using fingerprint authentication.

GNOME Keyring

DMS automatically starts and integrates with GNOME Keyring:
# Keyring services (enabled by default)
systemctl --user status gnome-keyring-daemon.service
systemctl --user status gnome-keyring-daemon.socket
systemctl --user status gcr-ssh-agent.service
systemctl --user status gcr-ssh-agent.socket
PAM integration is configured in /etc/pam.d/greetd.

Input methods

fcitx5 integration for multilingual input:
# Toggle fcitx5
zjust toggle-fcitx5

# Manual control
systemctl --user status fcitx5.service
Desktop launcher files for fcitx5 are removed to prevent duplicate autostart, as it’s managed via systemd.

Systemd services

DMS-related services are managed through systemd presets:
# User services (from /usr/lib/systemd/user-preset/01-zirconium.preset)
systemctl --user status dms.service
systemctl --user status chezmoi-init.service
systemctl --user status chezmoi-update.timer

# System services
systemctl status greetd.service

Automatic updates

Chezmoi automatically updates DMS configuration:
  • On login: chezmoi-init.service (if ~/.config/zirconium/chezmoi doesn’t exist)
  • Periodic: chezmoi-update.timer (scheduled updates)
See the customization guide for managing update behavior.

Customizing DMS

Temporary changes

Edit configuration files directly:
$EDITOR ~/.config/DankMaterialShell/settings.json
Reload DMS:
systemctl restart --user dms.service
These changes will be lost on the next zdots update.

Persistent changes

For persistent customization:
  1. Disable automatic dotfile updates:
    zjust toggle-automatic-dotfiles
    
  2. Fork zdots and modify DMS configuration there
  3. Point chezmoi to your custom zdots repository
See the customization guide for detailed instructions.

Troubleshooting

DMS not starting

Check service status and logs:
systemctl status --user dms.service
journalctl --user -u dms.service -b

Greeter issues

Check greetd logs:
journalctl -u greetd.service -b
Verify greeter configuration:
cat /etc/greetd/config.toml

Sync greeter settings

If greeter appearance doesn’t match your session:
zjust update-greeter

Reset DMS configuration

Reset to zdots defaults:
zjust zdots-reset ~/.config/DankMaterialShell
Or reset all configuration:
zjust zdots-override-all

Next steps

Niri window manager

Configure the Niri window manager

Customization

Deep dive into theming and dotfiles