Installation
██████╗ ███╗ ███╗███████╗ ██╔══██╗████╗ ████║██╔════╝ ██║ ██║██╔████╔██║███████╗ ██║ ██║██║╚██╔╝██║╚════██║ ██████╔╝██║ ╚═╝ ██║███████║ ╚═════╝ ╚═╝ ╚═╝╚══════╝
This guide covers installation of DankMaterialShell across different Linux distributions and methods.
Dependencies
- Quickshell (required) - The core framework
- cava (optional) - Audio visualizer widget
- cliphist + wl-clipboard (optional) - Clipboard history
- dgop (optional) - System telemetry for resource widgets
- dsearch (optional) - Filesystem search engine
- matugen (optional) - Material Design color palette generation
- niri (optional) - DMS Team's choice of Wayland compositor
- qt6-multimedia (optional) - System sound feedback
For pre-built packages on Fedora, Debian, Ubuntu, and OpenSUSE, see the DankLinux Repository page.
Only Quickshell is required. All other dependencies are optional and enable specific features.
Arch & Derivatives
dms is available on the AUR, it is assumed that you have an aur helper installed such as paru or yay.
For the sake of consistency, we will use paru in the examples.
Stable Release
paru -S dms-shell-bin
Latest Development Build
paru -S dms-shell-git
These packages ship the shell, widgets, and CLI. Pair them with niri, hyprland, sway, mangowc, or labwc packages from the official repositories for a complete desktop stack.
Fedora & CentOS
DankMaterialShell is available through COPR repositories for Fedora 41/42/43 rawhide and CentOS 10. Enable the COPR repositories managed by the team to install prebuilt packages:
Stable Release
sudo dnf copr enable avengemedia/dms
sudo dnf install dms
Latest Development Build
sudo dnf copr enable avengemedia/dms-git
sudo dnf install dms
The COPR repositories also provide companion packages such as quickshell-git, cliphist, matugen, and other utilities used by the default configuration.
Debian & Ubuntu
DankMaterialShell is available through Open Build Service (OBS) for Debian and Launchpad PPA for Ubuntu.
Debian
For Debian 13 (Trixie):
# DankLinux repository
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
# DMS stable repository
curl -fsSL https://download.opensuse.org/repositories/home:/AvengeMedia:/dms/Debian_13/Release.key | \
sudo gpg --dearmor -o /etc/apt/keyrings/avengemedia-dms.gpg
echo "deb [signed-by=/etc/apt/keyrings/avengemedia-dms.gpg] https://download.opensuse.org/repositories/home:/AvengeMedia:/dms/Debian_13/ /" | \
sudo tee /etc/apt/sources.list.d/avengemedia-dms.list
# DMS development repository
curl -fsSL https://download.opensuse.org/repositories/home:/AvengeMedia:/dms-git/Debian_13/Release.key | \
sudo gpg --dearmor -o /etc/apt/keyrings/avengemedia-dms-git.gpg
echo "deb [signed-by=/etc/apt/keyrings/avengemedia-dms-git.gpg] https://download.opensuse.org/repositories/home:/AvengeMedia:/dms-git/Debian_13/ /" | \
sudo tee /etc/apt/sources.list.d/avengemedia-dms-git.list
sudo apt update
For Debian Testing:
# DankLinux repository
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
# DMS stable repository
curl -fsSL https://download.opensuse.org/repositories/home:/AvengeMedia:/dms/Debian_Testing/Release.key | \
sudo gpg --dearmor -o /etc/apt/keyrings/avengemedia-dms.gpg
echo "deb [signed-by=/etc/apt/keyrings/avengemedia-dms.gpg] https://download.opensuse.org/repositories/home:/AvengeMedia:/dms/Debian_Testing/ /" | \
sudo tee /etc/apt/sources.list.d/avengemedia-dms.list
# DMS development repository
curl -fsSL https://download.opensuse.org/repositories/home:/AvengeMedia:/dms-git/Debian_Testing/Release.key | \
sudo gpg --dearmor -o /etc/apt/keyrings/avengemedia-dms-git.gpg
echo "deb [signed-by=/etc/apt/keyrings/avengemedia-dms-git.gpg] https://download.opensuse.org/repositories/home:/AvengeMedia:/dms-git/Debian_Testing/ /" | \
sudo tee /etc/apt/sources.list.d/avengemedia-dms-git.list
sudo apt update
For Debian Sid:
# DankLinux repository
curl -fsSL https://download.opensuse.org/repositories/home:AvengeMedia:danklinux/Debian_Sid/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_Sid/ /" | \
sudo tee /etc/apt/sources.list.d/danklinux.list
# DMS stable repository
curl -fsSL https://download.opensuse.org/repositories/home:/AvengeMedia:/dms/Debian_Sid/Release.key | \
sudo gpg --dearmor -o /etc/apt/keyrings/avengemedia-dms.gpg
echo "deb [signed-by=/etc/apt/keyrings/avengemedia-dms.gpg] https://download.opensuse.org/repositories/home:/AvengeMedia:/dms/Debian_Sid/ /" | \
sudo tee /etc/apt/sources.list.d/avengemedia-dms.list
# DMS development repository
curl -fsSL https://download.opensuse.org/repositories/home:/AvengeMedia:/dms-git/Debian_Sid/Release.key | \
sudo gpg --dearmor -o /etc/apt/keyrings/avengemedia-dms-git.gpg
echo "deb [signed-by=/etc/apt/keyrings/avengemedia-dms-git.gpg] https://download.opensuse.org/repositories/home:/AvengeMedia:/dms-git/Debian_Sid/ /" | \
sudo tee /etc/apt/sources.list.d/avengemedia-dms-git.list
sudo apt update
Install Packages
Install the stable release:
sudo apt install dms
Install the latest development build:
sudo apt install dms-git
Ubuntu
Ubuntu 25.10+ (Questing) is supported via Launchpad PPA.
Stable Release
sudo add-apt-repository ppa:avengemedia/danklinux
sudo add-apt-repository ppa:avengemedia/dms
sudo apt update
sudo apt install dms
Latest Development Build
sudo add-apt-repository ppa:avengemedia/danklinux
sudo add-apt-repository ppa:avengemedia/dms-git
sudo apt update
sudo apt install dms-git
Visit the DankLinux Repository page for OBS and PPA links and more information about available packages.
Add niri or niri-git to your system to get the best experience.
OpenSUSE & Derivatives
DankMaterialShell is available through the Open Build Service (OBS) for OpenSUSE Tumbleweed, Leap 16/16.1 & Slowroll.
OpenSUSE Tumbleweed
Stable Release
# DankLinux repository
sudo zypper addrepo https://download.opensuse.org/repositories/home:AvengeMedia:danklinux/openSUSE_Tumbleweed/home:AvengeMedia:danklinux.repo
# DMS repository
sudo zypper addrepo https://download.opensuse.org/repositories/home:/AvengeMedia:/dms/openSUSE_Tumbleweed/home:AvengeMedia:dms.repo
sudo zypper refresh
# Install DMS
sudo zypper install dms
Latest Development Build
# DankLinux repository
sudo zypper addrepo https://download.opensuse.org/repositories/home:AvengeMedia:danklinux/openSUSE_Tumbleweed/home:AvengeMedia:danklinux.repo
# DMS repository
sudo zypper addrepo https://download.opensuse.org/repositories/home:/AvengeMedia:/dms-git/openSUSE_Tumbleweed/home:AvengeMedia:dms-git.repo
sudo zypper refresh
# Install DMS
sudo zypper install dms-git
OpenSUSE Leap 16
Stable Release
# DankLinux repository
sudo zypper addrepo https://download.opensuse.org/repositories/home:AvengeMedia:danklinux/16.0/home:AvengeMedia:danklinux.repo
# DMS repository
sudo zypper addrepo https://download.opensuse.org/repositories/home:/AvengeMedia:/dms/16.0/home:AvengeMedia:dms.repo
sudo zypper refresh
# Install DMS
sudo zypper install dms
Latest Development Build
# DankLinux repository
sudo zypper addrepo https://download.opensuse.org/repositories/home:AvengeMedia:danklinux/16.0/home:AvengeMedia:danklinux.repo
# DMS repository
sudo zypper addrepo https://download.opensuse.org/repositories/home:/AvengeMedia:/dms-git/16.0/home:AvengeMedia:dms-git.repo
sudo zypper refresh
# Install DMS
sudo zypper install dms-git
OpenSUSE Leap 16.1
Stable Release
# DankLinux repository
sudo zypper addrepo https://download.opensuse.org/repositories/home:AvengeMedia:danklinux/16.1/home:AvengeMedia:danklinux.repo
# DMS repository
sudo zypper addrepo https://download.opensuse.org/repositories/home:/AvengeMedia:/dms/16.1/home:AvengeMedia:dms.repo
sudo zypper refresh
# Install DMS
sudo zypper install dms
Latest Development Build
# DankLinux repository
sudo zypper addrepo https://download.opensuse.org/repositories/home:AvengeMedia:danklinux/16.1/home:AvengeMedia:danklinux.repo
# DMS repository
sudo zypper addrepo https://download.opensuse.org/repositories/home:/AvengeMedia:/dms-git/16.1/home:AvengeMedia:dms-git.repo
sudo zypper refresh
# Install DMS
sudo zypper install dms-git
OpenSUSE Slowroll
Stable Release
# DankLinux repository
sudo zypper addrepo https://download.opensuse.org/repositories/home:AvengeMedia:danklinux/openSUSE_Slowroll/home:AvengeMedia:danklinux.repo
# DMS repository
sudo zypper addrepo https://download.opensuse.org/repositories/home:/AvengeMedia:/dms/openSUSE_Slowroll/home:AvengeMedia:dms.repo
sudo zypper refresh
# Install DMS
sudo zypper install dms
Latest Development Build
# DankLinux repository
sudo zypper addrepo https://download.opensuse.org/repositories/home:AvengeMedia:danklinux/openSUSE_Slowroll/home:AvengeMedia:danklinux.repo
# DMS repository
sudo zypper addrepo https://download.opensuse.org/repositories/home:/AvengeMedia:/dms-git/openSUSE_Slowroll/home:AvengeMedia:dms-git.repo
sudo zypper refresh
# Install DMS
sudo zypper install dms-git
NixOS
NixOS has dedicated documentation with two installation methods:
- Native nixpkgs installation - Recommended for NixOS unstable users
- Flake-based installation - For NixOS stable, home-manager support, or quicker updates
All Other Distributions
This guide doesn't cover compositor installation. You need a compatible Wayland compositor (niri, Hyprland, sway, dwl/MangoWC, etc.).
1. Install Essential Dependencies
Quickshell
If your distribution does not provide a quickshell package, you'll need to build it from source. Quickshell requires:
Base dependencies:
- cmake, qt6base, qt6declarative, qtshadertools, pkg-config, cli11
- Private Qt headers for qt6declarative (and qt6wayland on Qt < 6.10)
- Qt 6.6 or newer
Key features and their dependencies:
- Wayland support (enabled by default) - qt6wayland, wayland, wayland-protocols
- Crash reporter (recommended) - google-breakpad
- Jemalloc (recommended for better memory management) - jemalloc
- System tray - qt6dbus
- PAM authentication - pam
For complete build instructions and feature flags, see the Quickshell BUILD.md.
AccountsService
AccountsService is needed to persist user profile configurations such as profile pictures. Available in most repositories as accountsservice.
# Arch + Friends
sudo pacman -S accountsservice
# Fedora + Friends
sudo dnf install accountsservice
# Debian, Ubuntu + Friends
sudo apt install accountsservice
# openSUSE + Friends
sudo zypper install accountsservice
# Gentoo
sudo emerge --ask sys-apps/accountsservice
2. Clone the DMS Repository
git clone https://github.com/AvengeMedia/DankMaterialShell.git ~/dms
3. Compile & Install the DMS Backend
Requires GO 1.24+
cd ~/dms
sudo make install
To uninstall a source build, run sudo make uninstall from the repository directory.
4. Install Optional Integrations
Install optional components for full functionality using your distribution's package manager:
dgop- Detailed system metrics and process listsdsearch- Filesystem search enginematugen- Material Design color palette generationi2c-tools- ddc monitor backlight controlwl-clipboard+cliphist- Clipboard historycava- Audio visualizer widgetqt6-multimedia- System sound feedback
Post Install
After completing installation:
- Enable the systemd service (recommended) or add
dms runto your compositor config - Configure your compositor keybinds - see the Keybinds & IPC guide
- Customize appearance via Themes
- Extend functionality with Plugins
See Managing Your Installation for detailed guidance on service management, environment variables, and updates.
Systemd Integration (Recommended)
If you used dankinstall, this is already configured. The installer runs systemctl --user enable --now dms during setup.
Enable autostart:
systemctl --user enable dms
Manual control:
# Start DMS now
systemctl --user start dms
# Check status
systemctl --user status dms
# View logs
journalctl --user -u dms -f
# Restart DMS
systemctl --user restart dms
# Disable autostart
systemctl --user disable dms
If using systemd autostart, remove dms run / spawn "dms" "run" / exec-once=dms run from your compositor's configuration to avoid running DMS twice.
Compositor-Specific Systemd Setup
Different compositors have different levels of systemd session integration. Choose the section that matches your compositor.
If you have multiple desktop environments installed (e.g., Plasma, GNOME, niri), using systemctl --user enable dms starts DMS in all of them. Using add-wants binds DMS to a specific compositor's service or session target, so it only runs where you want it. DMS won't launch when you log into Plasma or GNOME.
niri
niri has native systemd session integration. Bind DMS to niri's service:
systemctl --user add-wants niri.service dms
DMS starts when niri starts and stops when niri exits. It won't run in other sessions.
Hyprland
Hyprland doesn't initialize the systemd user session by default. You need to export the environment to systemd for user services to work.
Create a session target:
[Unit]
Description=Hyprland Session Target
Requires=graphical-session.target
After=graphical-session.target
Add to your Hyprland config (after any env = lines):
exec-once = dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP
exec-once = systemctl --user start hyprland-session.target
Bind DMS to the session target:
systemctl --user add-wants hyprland-session.target dms
MangoWC
MangoWC is a dynamic tiling compositor based on dwl (wlroots). Like other wlroots compositors, it requires manual environment export for systemd user services.
Create a session target:
[Unit]
Description=MangoWC Session Target
Requires=graphical-session.target
After=graphical-session.target
Add to your MangoWC config:
exec-once=dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP
exec-once=systemctl --user start mango-session.target
Bind DMS to the session:
systemctl --user add-wants mango-session.target dms
Sway
Sway (wlroots-based) needs the environment exported for systemd services:
exec dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP
Create a session target and bind DMS:
systemctl --user add-wants sway-session.target dms