Managing Your Installation
██████╗ ███╗ ███╗███████╗ ██╔══██╗████╗ ████║██╔════╝ ██║ ██║██╔████╔██║███████╗ ██║ ██║██║╚██╔╝██║╚════██║ ██████╔╝██║ ╚═╝ ██║███████║ ╚═════╝ ╚═╝ ╚═╝╚══════╝
This guide covers how to manage, update, and configure DankMaterialShell after installation.
Service Management
DMS can run as a systemd user service or be launched manually. The dms CLI handles both transparently - commands like dms restart work regardless of how DMS was started.
If you installed via dankinstall, DMS is configured as a systemd service by default. The installer runs systemctl --user enable --now dms during setup. You don't need to add dms run to your compositor config.
Systemd (Recommended)
Systemd provides automatic startup, proper session integration, and logging via journalctl.
Enable and start:
systemctl --user enable --now dms
Common operations:
# Check status
systemctl --user status dms
# View logs
journalctl --user -u dms -f
# Restart (or just use: dms restart)
systemctl --user restart dms
# Stop
systemctl --user stop dms
# Disable autostart
systemctl --user disable dms
If using systemd, remove any dms run / spawn "dms" "run" lines from your compositor config to avoid running DMS twice.
niri: Per-Session Control
niri has proper systemd session integration. You can make DMS only start under niri (not Plasma, GNOME, etc.):
systemctl --user add-wants niri.service dms
This ties the dms service to niri's session, so it won't start under other desktop environments.
Other Compositors
Hyprland, Sway, and MangoWC don't have systemd session targets. If you use multiple desktop environments and only want DMS on one of them, disable the systemd unit and start DMS from your compositor config instead:
systemctl --user disable dms
Then add dms run to your compositor's autostart (see Manual Launch below).
Manual Launch
For testing, debugging, or if you prefer compositor-managed startup:
Compositor autostart:
# Hyprland (~/.config/hypr/hyprland.conf)
exec-once = dms run
# Sway (~/.config/sway/config)
exec dms run
# niri (~/.config/niri/config.kdl)
spawn-at-startup "dms" "run"
Manual control:
# Launch (foreground)
dms run
# Launch (background/daemon)
dms run -d
# Restart
dms restart
# Kill
dms kill
Switching Between Methods
From manual to systemd:
- Remove
dms runfrom your compositor config - Enable the service:
systemctl --user enable --now dms - Restart your compositor or log out/in
From systemd to manual:
- Disable the service:
systemctl --user disable --now dms - Add
dms runto your compositor's autostart - Restart your compositor or log out/in
Environment Variables
DMS and its themed applications need certain environment variables set. Where these live depends on your setup.
dankinstall creates ~/.config/environment.d/90-dms.conf with the necessary variables. This file is loaded by systemd for all user sessions. If you need to change Qt theming (e.g., switching to qt6ct), edit this file.
Checking Your Environment
# See what's currently set
env | grep -E "QT_|GTK|XDG"
# Check dankinstall's environment file (if it exists)
cat ~/.config/environment.d/90-dms.conf
Manual Configuration
If you didn't use dankinstall, set environment variables in your compositor config:
niri (~/.config/niri/config.kdl):
environment {
QT_QPA_PLATFORM "wayland"
QT_QPA_PLATFORMTHEME "gtk3"
ELECTRON_OZONE_PLATFORM_HINT "auto"
}
Hyprland (~/.config/hypr/hyprland.conf):
env = QT_QPA_PLATFORM,wayland
env = QT_QPA_PLATFORMTHEME,gtk3
env = ELECTRON_OZONE_PLATFORM_HINT,auto
Or create ~/.config/environment.d/90-dms.conf:
QT_QPA_PLATFORM=wayland
QT_QPA_PLATFORMTHEME=gtk3
ELECTRON_OZONE_PLATFORM_HINT=auto
Changes to environment.d require logging out and back in (or rebooting) to take effect.
Updating
Package Installations
Arch & Derivatives:
paru -Syu dms-shell-bin
# or
paru -Syu dms-shell-git
Fedora & Derivatives:
sudo dnf upgrade dms
Debian & Ubuntu:
sudo apt update && sudo apt upgrade dms
# or dms-git
OpenSUSE:
sudo zypper refresh && sudo zypper update dms
NixOS:
# Update flake inputs, then:
sudo nixos-rebuild switch
After package updates, restart the shell:
dms restart
Manual Installations
For source builds or dankinstall setups:
dms update
For manually compiled dependencies (quickshell, niri, etc.), use the interactive TUI:
dms
# Navigate to Update → select packages to rebuild
After Updating
- Restart DMS:
dms restart - Check release notes for breaking changes
- Review Settings if new options are available
- Update plugins if needed
Uninstalling
Package Installations
Arch & Derivatives:
# Whichever you have installed
sudo pacman -Rns dms-shell-bin
# or
sudo pacman -Rns dms-shell-git
Fedora, Debian, Ubuntu, OpenSUSE:
# Stable
sudo dnf remove dms # Fedora
sudo apt remove dms # Debian/Ubuntu
sudo zypper remove dms # OpenSUSE
# Or git version
sudo dnf remove dms-git
sudo apt remove dms-git
sudo zypper remove dms-git
Manual/Source Installs
# Stop and disable the service
systemctl --user disable --now dms
# Remove the binary and shell config
rm -rf ~/.config/quickshell/dms
sudo rm /usr/local/bin/dms
Troubleshooting
DMS won't start:
- Check logs:
journalctl --user -u dms -n 50(systemd) or rundms runin a terminal - Verify quickshell is installed:
which qs - Kill stuck processes:
dms kill
Settings not applying:
- Backup and remove
~/.config/DankMaterialShell/settings.json - Restart DMS to regenerate defaults
Environment variables not working:
- For
environment.dchanges: log out and back in - For compositor config changes: restart the compositor
- Verify with
echo $QT_QPA_PLATFORMTHEME
Multiple instances running:
dms kill
dms restart