A monorepo for dankinstall and dms (cli+go backend), a modern desktop suite for Wayland compositors.
- dms DankMaterialShell (cli + go backend)
- The backend side of dms, provides APIs for the desktop and a management CLI.
- Shared dbus connection for networking (NetworkManager, iwd), loginctl, accountsservice, cups, and other interfaces.
- Implements wayland protocols
- wlr-gamma-control-unstable-v1 (for night mode/gamma control)
- dwl-ipc-unstable-v2 (for dwl/MangoWC integration)
- Exposes a json API over unix socket for interaction with these interfaces
- Provides plugin management APIs for the shell
- CUPS integration for printer management
- Optionally provides
updateinterface - depending on build inputs.- This is intended to be disabled when packaged as part of distribution packages.
- dankinstall Installs the Dank Linux suite for niri and/or Hyprland
- Features the DankMaterialShell
- Which features a complete desktop experience with wallpapers, auto theming, notifications, lock screen, etc.
- Offers up solid out of the box configurations as usable, featured starting points.
- Can be installed if you already have niri/Hyprland configured
- Will allow you to keep your existing config, or replace with Dank ones (existing configs always backed up though)
- Features the DankMaterialShell
A part of the DankMaterialShell, that is provided by this repository. It is written in GO, and exposes a suite of APIs over unix socket that interface with dbus via godbus and also the plugin system.
Backend (all exposed over a unix socket json API):
- dbus
- networking - full integration with pluggable backends - NetworkManager, iwd
- bluez - integration with a pairing agent
- loginctl - creates sleep inhibitor, integrates lock before suspend, signals for lock/unlock
- accountsservice - suite of user profile APIs - name, email, profile picture, etc.
- cups - printer management and configuration
- dms plugins
- APIs to browse, install, update, and search available plugins
- wayland
- Implements wlr-gamma-control-unstable-v1
- Implements dwl-ipc-unstable-v2
- For dwl (tested with MangoWC) integration
run dms debug-srv to run the socket service in standalone mode, and see a list of available APIs
cli
- manage process: run, restart, kill
- IPC with dms: toggle launcher, notification popup, etc.
- plugins: install/browse/search (use plugin IDs like
dms plugins install myPlugin) - update (some builds): Update DMS and dependencies, (disabled for Arch AUR and Fedora copr installs, as it is handled by pacman/dnf)
- greeter (some builds): Install the dms greetd greeter (on arch/fedora it is disabled in favor of OS packages)
To build the dms CLI (Requires Go 1.24+):
This produces a build without the update or greeter functionality, which are intended for manual installation.
make distProduces bin/dms-linux-amd64 and bin/dms-linux-arm64
# Installs to /usr/local/bin/dms
make && sudo make installThe gamma control functionality uses Wayland protocol bindings generated from the protocol XML definition. To regenerate the Go bindings from internal/proto/xml/wlr-gamma-control-unstable-v1.xml:
go install github.com/rajveermalviya/go-wayland/cmd/go-wayland-scanner@latest
go-wayland-scanner -i internal/proto/xml/wlr-gamma-control-unstable-v1.xml \
-pkg wlr_gamma_control -o internal/proto/wlr_gamma_control/gamma_control.goThis is only needed if modifying the protocol or updating to a newer version.
Installs compositor, dms, terminal, and some optional dependencies - along with a default compositor & terminal configuration.
curl -fsSL https://install.danklinux.com | shAlternatively, download the latest release
Note on Greeter: dankinstall does not install a greeter automatically.
- To install the dms greeter, run
dms greeter installafter installation. - Then you can disable any existing greeter, if present, and run
sudo systemctl enable --now greetd
Supported: Arch, ArchARM, Archcraft, CachyOS, EndeavourOS, Manjaro
Special Notes:
- Uses native
pacmanfor system packages - AUR packages are built manually using
makepkg(no AUR helper dependency) - Recommendations
- Use NetworkManager to manage networking
- If using archinstall, you can choose
minimalfor profile, andNetworkManagerunder networking.
Package Sources:
| Package | Source | Notes |
|---|---|---|
| System packages (git, jq, etc.) | Official repos | Via pacman |
| quickshell | AUR | Built from source |
| matugen | AUR (matugen-bin) |
Pre-compiled binary |
| dgop | AUR | Built from source |
| niri | Official repos (niri) |
Latest niri |
| hyprland | Official repos | Available in Extra repository |
| DankMaterialShell | Manual | Git clone to ~/.config/quickshell/dms |
Supported: Fedora, Nobara, Fedora Asahi Remix
Special Notes:
- Requires
dnf-plugins-corefor COPR repository support - Automatically enables required COPR repositories
- All COPR repos are enabled with automatic acceptance
- Editions dankinstall is tested on "Workstation Edition", but probably works fine on any fedora flavor. Report issues if anything doesn't work.
- Fedora Asahi Remix hasn't been tested, but presumably it should work fine as all of the dependencies should provide arm64 variants.
Package Sources:
| Package | Source | Notes |
|---|---|---|
| System packages | Official repos | Via dnf |
| quickshell | COPR | avengemedia/danklinux |
| matugen | COPR | avengemedia/danklinux |
| dgop | Manual | Built from source with Go |
| cliphist | COPR | avengemedia/danklinux |
| ghostty | COPR | avengemedia/danklinux |
| hyprland | COPR | solopasha/hyprland |
| niri | COPR | yalter/niri |
| DankMaterialShell | COPR | avengemedia/dms |
Supported: Ubuntu 25.04+
Special Notes:
- Requires PPA support via
software-properties-common - Go installed from PPA for building manual packages
- Most packages require manual building due to limited repository availability
- This means the install can be quite slow, as many need to be compiled from source.
- niri is packages as a
.debso it can be managed viaapt
- Automatic PPA repository addition and package list updates
Package Sources:
| Package | Source | Notes |
|---|---|---|
| System packages | Official repos | Via apt |
| quickshell | Manual | Built from source with cmake |
| matugen | Manual | Built from source with Go |
| dgop | Manual | Built from source with Go |
| hyprland | PPA | ppa:cppiber/hyprland |
| hyprpicker | PPA | ppa:cppiber/hyprland |
| niri | Manual | Built from source with Rust |
| Go compiler | PPA | ppa:longsleep/golang-backports |
| DankMaterialShell | Manual | Git clone to ~/.config/quickshell/dms |
Supported: Debian 13+ (Trixie)
Special Notes:
- niri only - Debian does not support Hyprland currently, only niri.
- Most packages require manual building due to limited repository availability
- This means the install can be quite slow, as many need to be compiled from source.
- niri is packages as a
.debso it can be managed viaapt
Package Sources:
| Package | Source | Notes |
|---|---|---|
| System packages | Official repos | Via apt |
| quickshell | Manual | Built from source with cmake |
| matugen | Manual | Built from source with Go |
| dgop | Manual | Built from source with Go |
| niri | Manual | Built from source with Rust |
| DankMaterialShell | Manual | Git clone to ~/.config/quickshell/dms |
Special Notes:
- Most packages available in standard repos, minimal manual building required
- quickshell and matugen require building from source
Package Sources:
| Package | Source | Notes |
|---|---|---|
| System packages (git, jq, etc.) | Official repos | Via zypper |
| hyprland | Official repos | Available in standard repos |
| niri | Official repos | Available in standard repos |
| xwayland-satellite | Official repos | For niri X11 app support |
| ghostty | Official repos | Latest terminal emulator |
| kitty, alacritty | Official repos | Alternative terminals |
| grim, slurp, hyprpicker | Official repos | Wayland screenshot utilities |
| wl-clipboard | Official repos | Via wl-clipboard package |
| cliphist | Official repos | Clipboard manager |
| quickshell | Manual | Built from source with cmake + openSUSE flags |
| matugen | Manual | Built from source with Rust |
| dgop | Manual | Built from source with Go |
| DankMaterialShell | Manual | Git clone to ~/.config/quickshell/dms |
NixOS users should use the dms flake
The installer handles manual package building for packages not available in repositories:
- Built from source using cmake
- Requires Qt6 development libraries
- Automatically handles build dependencies
- openSUSE: Uses special CFLAGS with rpm optflags and wayland include path
- Built from Rust source
- Requires cargo and rust toolchain
- Installed to
/usr/local/bin
- Built from Go source
- Simple dependency-free build
- Installed to
/usr/local/bin
- Built from Rust source
- Requires cargo and rust toolchain
- Complex build with multiple dependencies
Main installer with interactive TUI for initial setup
Management interface for DankMaterialShell:
dms- Interactive management TUIdms run- Start interactive shelldms run -d- Start shell as daemondms restart- Restart running DMS shelldms kill- Kill running DMS shell processesdms ipc <command>- Send IPC commands to running shell