# DankMaterialShell: A Go and QML Desktop Shell That Replaces the Wayland Parts Bin

> DankMaterialShell (DMS) is a Quickshell and Go based desktop shell for Wayland compositors like niri, Hyprland, and Sway. It bundles panels, lock screen, notifications, launcher, and system monitoring into one package, but its compositor support and plugin lockfile deserve scrutiny before adoption.

**AvengeMedia/DankMaterialShell** — Desktop shell for wayland compositors built with Quickshell & GO, optimized for niri, hyprland, sway, MangoWC, labwc, and MiracleWM.

- Repository: https://github.com/AvengeMedia/DankMaterialShell
- Website: https://danklinux.com
- Stars: 8,552 · Forks: 559
- Language: QML
- License: MIT
- Published: 2026-08-23 · Updated: 2026-08-23 · Language: en
- Canonical page: https://hysenlabs.com/projects/avengemedia-dankmaterialshell

## What DankMaterialShell Replaces and Who It Is For

DankMaterialShell (DMS) is a complete desktop shell for Wayland compositors. The README lists niri, Hyprland, MangoWC, Sway, labwc, Scroll, and MiracleWM as supported. It replaces waybar, swaylock, swayidle, mako, fuzzel, polkit, and other tools you would normally assemble into a desktop. That is a bold claim. Most users on Sway or Hyprland are used to picking a bar, a launcher, a notification daemon, and a lock screen separately. DMS bundles all of those into one QML interface and one Go backend. The target user is someone who wants a cohesive, Material Design inspired desktop without stitching together a dozen tools. The project also targets users who want dynamic theming across GTK, Qt, terminals, and editors, which is not something a typical bar setup offers.

## Architecture: A Monorepo with QML Frontend and Go Backend

The repository is a monorepo. The quickshell/ directory holds the QML shell interface, split into Modules, Services, Widgets, and Common. The core/ directory contains the Go backend and CLI. The core has cmd/ for the dms CLI and dankinstall binaries, internal/ for system integration and IPC, and pkg/ for shared packages. The split is clear: QML renders the UI, Go handles system calls and daemon logic. The README mentions that the dms daemon is powered by dgop, a separate Go library for system monitoring. That daemon provides real-time CPU, RAM, GPU metrics, and temperatures. The launcher uses dsearch for file search. This means DMS is not a single binary but a set of cooperating components. The Quickshell framework handles the Wayland compositor integration, while Go handles the heavy lifting. This architecture is unusual. Most Wayland shells are pure QML or pure C. Mixing Go and QML adds complexity but also gives the project a robust backend for IPC and system calls.

## Installation and First Run: One-Liner Script and Manual Build

The README gives a one-line installer: curl -fsSL https://install.danklinux.com | sh. That script installs DMS and all dependencies on Arch, Fedora, Debian, Ubuntu, openSUSE, or Gentoo. For manual installation, there is a guide on the website. To build from source, you go into core/ and run make to build the dms CLI, and make dankinstall for the installer. Then you run quickshell -p quickshell/ to start the shell. The CLI is central to controlling the shell. You use dms run to start it, and dms ipc call to trigger actions. Examples include dms ipc call spotlight toggle, dms ipc call audio setvolume 50, and dms ipc call wallpaper set /path/to/image.jpg. There is also dms brightness list. The CLI is not just for keybinds; it is the way you integrate DMS with your compositor's keybind system. The README points to a full CLI and IPC documentation, but the given commands show the pattern. The installer script is convenient, but it requires trust in a remote script. For a security conscious user, building from source or using the Arch package might be better.

## Dynamic Theming and the Plugin System

DMS uses matugen and dank16 for dynamic theming. The README says wallpaper-based color schemes automatically theme GTK, Qt, terminals, editors like vscode and vscodium. That is a strong feature, but it depends on matugen, which is an external tool. The plugin system is more distinctive. The README describes a plugin registry at plugins.danklinux.com. DMS keeps ~/.config/DankMaterialShell/plugins.lock.json synchronized with managed plugin installs and their exact Git commits. This lockfile is meant to reproduce the same plugins on another machine. The CLI has commands: dms plugins search, dms plugins lock, and dms plugins restore ~/plugins.lock.json. That is a reproducible plugin approach, similar to a package manager lockfile. It is a good idea, but it only works if the registry is reliable and the plugins are maintained. The README does not say how many plugins exist or how they are vetted. That is a gap. The plugin system is extensible, but the quality control is unclear.

## Compositor Support: Full Features vs Reduced Features

The README states that DMS works best with niri, Hyprland, Sway, MangoWC, labwc, Scroll, and MiracleWM, with full workspace switching, overview integration, and monitor management. Other Wayland compositors work with reduced features. That is a critical limitation. If you are on a compositor not in that list, you lose core functionality. The README does not specify which features are reduced. It could be the overview, workspace switching, or even the bar itself. The supported list is long, but it is not exhaustive. For example, wlroots-based compositors like River or Wayfire are not mentioned. The documentation has a compositor configuration guide, but the README does not summarize it. This means you must read the guide to know if your compositor works. The project is optimized for a specific set, and that is a trade-off. If you use a niche compositor, DMS may not be worth the effort.

## Session Management and System Monitoring

DMS includes session management features: lock screen, idle detection, auto-lock and suspend with separate AC and battery settings. It also has a settings front-end for dank-greeter, a greetd login screen. That integration is deep. The system monitoring is built into the dms daemon, powered by dgop. The README mentions a process list with search and management. That means you can kill processes from the shell. The control center unifies network, Bluetooth, audio devices, display settings, and night mode. Notifications support grouping, rich text, and keyboard navigation. Media integration includes MPRIS player controls, calendar sync, weather widgets, and clipboard history with image previews. These are all features that you would normally get from separate tools. The question is whether the Go daemon handles all of these reliably. The README does not provide benchmarks or error rates. It is a lot of surface area for one daemon to manage. The fact that it is written in Go gives some confidence, but the complexity is high.

## Maintenance, Licensing, and Upgrade Cost

The project is under the MIT license, which is permissive. The last push was on 2026-07-27, and there are recent releases v1.5.3, v1.5.2, and v1.5.1. That indicates active maintenance. The release cadence is roughly weekly, which is fast. That means you will need to keep up with updates. The README does not mention a changelog or migration guide. The plugin lockfile is a way to manage plugin upgrades, but the shell itself updates via the installer or your distro package. The repository has a distro/ directory with packaging for Fedora, Debian, NixOS, and there is an Arch package in the extra repo. That reduces upgrade cost on those systems. However, the Go backend and QML shell are tightly coupled. Upgrading one without the other could break things. The README does not specify version compatibility between core and quickshell. You should check the release notes for each version. The fast release cycle is both a benefit and a cost: you get fixes, but you also get breaking changes.

## Conclusion

Adopt DankMaterialShell if you run niri, Hyprland, Sway, MangoWC, labwc, Scroll, or MiracleWM and want a single shell that replaces waybar, swaylock, mako, fuzzel, and polkit. Do not adopt it if you need a stable, minimal setup on an exotic compositor or if you dislike a large monorepo with a Go daemon and a QML interface. Before adopting, verify that your compositor is in the supported list, test the dms ipc calls for your keybinds, and check the plugin registry for the specific plugins you need. The project is actively maintained with recent releases, but the documentation warns that other compositors get reduced features, so confirm your exact version works.

## FAQ

### What is dank material shell?

A desktop shell for Wayland compositors, built with Quickshell and a Go backend. It takes over the roles of waybar, swaylock, swayidle, mako, fuzzel and polkit, and it works best with niri, Hyprland, MangoWC, Sway, labwc, Scroll and Miracle WM.

### How do I install Dank Material shell?

Run curl -fsSL https://install.danklinux.com | sh, which installs DMS and its dependencies on Arch, Fedora, Debian, Ubuntu, openSUSE or Gentoo. Arch users can instead take the packaged dms-shell from extra or the rolling dms-shell-git from the AUR.

### how to install dank material shell on nixos

Use the flake input and import its home module, as in the repository's NixOS snippet. The distro/ directory also carries packaging for Fedora, Debian and NixOS, and the flake pins the shared dank-qml-common QML components next to the submodule pointer.

### dankmaterialshell vs waybar

waybar is one of the six standalone tools DMS lists as replaced, alongside swaylock, swayidle, mako, fuzzel and polkit. DMS is the whole shell around those jobs, also carrying the launcher, control center, notifications, monitoring and session management.

### How do I delete the dank material shell?

For a source build, the root Makefile has uninstall, uninstall-bin, uninstall-shell, uninstall-completions, uninstall-systemd, uninstall-icon and uninstall-desktop targets. The curl installer has no documented undo, and restoring waybar, swaylock, swayidle, mako, fuzzel or polkit is left to you.

## Sources

- [Official documentation](https://danklinux.com)
- [Official README](https://github.com/AvengeMedia/DankMaterialShell#readme)
- [Project repository](https://github.com/AvengeMedia/DankMaterialShell)
- [Release notes](https://github.com/AvengeMedia/DankMaterialShell/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/avengemedia-dankmaterialshell
