Skip to main content

DankInstall

██████╗  █████╗ ███╗   ██╗██╗  ██╗██╗███╗   ██╗███████╗████████╗ █████╗ ██╗     ██╗
██╔══██╗██╔══██╗████╗  ██║██║ ██╔╝██║████╗  ██║██╔════╝╚══██╔══╝██╔══██╗██║     ██║
██║  ██║███████║██╔██╗ ██║█████╔╝ ██║██╔██╗ ██║███████╗   ██║   ███████║██║     ██║
██║  ██║██╔══██║██║╚██╗██║██╔═██╗ ██║██║╚██╗██║╚════██║   ██║   ██╔══██║██║     ██║
██████╔╝██║  ██║██║ ╚████║██║  ██╗██║██║ ╚████║███████║   ██║   ██║  ██║███████╗███████╗
╚═════╝ ╚═╝  ╚═╝╚═╝  ╚═══╝╚═╝  ╚═╝╚═╝╚═╝  ╚═══╝╚══════╝   ╚═╝   ╚═╝  ╚═╝╚══════╝╚══════╝

dankinstall sets up the full DankMaterialShell desktop experience - wallpapers, auto-theming, notifications, lock screen, and everything else you'd expect from a modern desktop. It installs packages and configures user-level settings for your compositor and terminal. If you already have niri or Hyprland set up, dankinstall can work around your existing config (and always backs things up before making changes).

Quickstart

curl -fsSL https://install.danklinux.com | sh
tip

The installer is interactive and guides you through setup for your distribution. You can also download the latest release manually.

What Gets Installed

Core Components

  • DankMaterialShell - The desktop shell built with quickshell & Go.
  • Compositor - Your choice of niri or Hyprland
  • Terminal - Ghostty, with Kitty and Alacritty as alternatives
  • dms CLI - Backend service providing dbus APIs, plugin management, and wayland protocol implementations

Desktop Utilities

  • quickshell - The QML-based shell framework powering DMS
  • matugen - Auto-theming engine that generates color schemes from wallpapers
  • dgop - System resource monitoring (CPU, RAM, GPU, temperatures)
  • dsearch - Blazingly fast filesystem search.
  • cliphist - Clipboard history manager
  • wl-clipboard - Clipboard utilities for Wayland

System Packages

Build dependencies: git, jq, curl, wget, go, cmake, rustup. The exact package list varies by distribution.

Supported Distributions

Arch Linux & Derivatives

Supported: Arch, ArchARM, Archcraft, CachyOS, EndeavourOS, Manjaro

Uses pacman for system packages from official repos. Builds quickshell, matugen (pre-compiled binary), and dgop from AUR using makepkg - no AUR helper needed. niri and hyprland are available in official repos.

If you're using archinstall, the minimal profile with NetworkManager for networking is a good starting point.

Fedora & Derivatives

Supported: Fedora, Nobara, Fedora Asahi Remix

Almost everything comes from official repos or COPR repositories (avengemedia/danklinux, avengemedia/dms, solopasha/hyprland, yalter/niri). Only dgop needs to be built from source with Go.

dankinstall is tested on Workstation Edition but should work fine on any Fedora flavor. Fedora Asahi Remix hasn't been tested yet, but should work since all dependencies have arm64 variants.

Ubuntu

Supported: Ubuntu 25.04+

warning

Installation is slow. Most packages compile from source since Ubuntu repos lack recent versions. Expect 15-30 minutes depending on hardware.

Hyprland comes from a PPA (ppa:cppiber/hyprland), but quickshell, matugen, dgop, and niri all get built during installation. Go compiler comes from ppa:longsleep/golang-backports.

Debian

Supported: Debian 13+ (Trixie), Debian Testing, Debian sid

note

niri only - Debian doesn't support Hyprland yet. Expect longer install times due to source compilation.

openSUSE Tumbleweed

Good package availability out of the box. niri, hyprland, ghostty, and most tools are in standard repos via zypper. Only quickshell and matugen need to be built from source.

Gentoo

warning

Gentoo requires a systemd installation. OpenRC is not supported.

Special Notes:

  • Gentoo installs are highly variable and user-specific, success is not guaranteed.
    • dankinstall is most likely to succeed on a fresh stage3/systemd system
  • Uses Portage package manager with GURU overlay for additional packages
  • Automatically configures global USE flags in /etc/portage/make.conf
    • Will create or append to your existing USE flags.
  • Automatically configures package-specific USE flags in /etc/portage/package.use/danklinux
  • Unmasks packages as-needed with architecture keywords in /etc/portage/package.accept_keywords/danklinux
  • Supports both amd64 and arm64 architectures dynamically
  • If not using bin packages, prepare for long compilation times
  • Ghostty is removed from the options, due to extremely long compilation time of its

Package Sources:

PackageSourceNotes
System packages (git, etc.)Official reposVia emerge
niriGURU overlayWith dbus and screencast USE flags
hyprlandOfficial repos (GURU for -git)Depends on variant selection, with X USE flag
quickshellGURU overlayAlways uses live ebuild (** keywords), full feature set
matugenGURU overlayColor generation tool
cliphistGURU overlayClipboard manager
xdg-desktop-portal-gtkOfficial reposWith wayland and X USE flags
mate-polkitOfficial reposPolicyKit authentication agent
accountsserviceOfficial reposUser account management
dgopManualBuilt from source with Go
xwayland-satelliteManualFor niri X11 app support
DankMaterialShellManualGit clone to ~/.config/quickshell/dms

Global USE Flags: dbus udev alsa policykit jpeg png webp gif tiff svg brotli gdbm accessibility gtk qt6 egl gbm

Package-Specific USE Flags:

  • sys-apps/xdg-desktop-portal-gtk: wayland X
  • gui-wm/niri: dbus screencast
  • gui-wm/hyprland: X
  • dev-qt/qtbase: wayland opengl vulkan widgets
  • dev-qt/qtdeclarative: opengl vulkan
  • media-libs/mesa: opengl vulkan
  • gui-apps/quickshell: breakpad jemalloc sockets wayland layer-shell session-lock toplevel-management screencopy X pipewire tray mpris pam hyprland hyprland-global-shortcuts hyprland-focus-grab i3 i3-ipc bluetooth

What About Manual Building?

The installer handles all build dependencies and manual building for you when packages aren't in repos:

  • quickshell (Ubuntu, Debian, openSUSE) - Built with cmake, needs Qt6 dev libraries. openSUSE uses special CFLAGS.
  • matugen (Ubuntu, Debian, Fedora, openSUSE) - Built from Rust source, needs cargo. Installs to /usr/local/bin.
  • dgop (All distros) - Built from Go source, no dependencies. Installs to /usr/local/bin.
  • niri (Ubuntu, Debian) - Built from Rust source with cargo. More complex build with multiple dependencies.

Managing Your Setup

dankinstall configures DMS as a systemd user service by default. The shell starts automatically when you log in - no need to add anything to your compositor config.

# Restart the shell (works with both systemd and manual setups)
dms restart

# Check service status
systemctl --user status dms

# View logs
journalctl --user -u dms -f

# Interactive management TUI
dms

# Send IPC commands to running shell
dms ipc <command>
tip

See Managing Your Installation for details on switching between systemd and manual startup, environment variable configuration, and more.

Environment Variables

dankinstall creates ~/.config/environment.d/90-dms.conf with environment variables for Qt/GTK theming and Wayland compatibility. If you need to change Qt platform theming (e.g., switching from gtk3 to qt6ct), edit this file and log out/in for changes to take effect.