Skip to main content
Version: 1.4

Overview & Architecture

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

DankMaterialShell (dms) is a Wayland desktop shell built with Quickshell and Go. It serves a purpose similar to GNOME Shell or KDE Plasma, providing a unified interface for launching applications, managing windows, managing hardware interfaces, notifications, and much more.

General Features

There's really too much to list, but those are some of the highlights!

Architecture

DankMaterialShell uses a client-server architecture where a Go backend (dms) manages system integrations and spawns the Quickshell-based UI as a child process. Communication happens over Unix socket using REQ/REP and PUB/SUB patterns.

Key Points:

Component Overview

ComponentRoleDankMaterialShell - QuickshellFrontend powering widgets, modals, and user experience.DankMaterialShell - Backend (cli)Bridges DBus, Wayland, and plugin APIs - also a management CLIdgopOptional system telemetry service used by resource widgets.dsearchOptional filesystem search engine used by the Spotlight launcher.

Desktop Integration

DankMaterialShell includes a browser picker modal that appears when URLs are activated within the shell.

Opening URLs

You can open URLs directly from the terminal using the dms open command:

dms open https://danklinux.com

When a URL is opened, DankMaterialShell displays a modal dialog with a list of installed web browsers, allowing you to select your preferred browser or set a default for future URL openings.

Setting Default Web Browser

To set DankMaterialShell as your default web browser handler:

xdg-settings set default-web-browser dms-open.desktop

File Associations

You can configure file type associations using xdg-mime commands. For example, to set DankMaterialShell as the default handler for specific MIME types:

# Set as default for HTTP/HTTPS URLs
xdg-mime default dms-open.desktop x-scheme-handler/http
xdg-mime default dms-open.desktop x-scheme-handler/https

Desktop Entry

The desktop entry file (dms-open.desktop) follows the freedesktop.org Desktop Entry Specification and allows DankMaterialShell to be launched from application menus and integrated with desktop environments.

Next Steps

Continue with Installation to get DankMaterialShell running on your system.

DankMaterialShell is open source and welcomes contributions ranging from core code changes to new widgets and plugins to documentation improvements.