commit 051b7576f7ed31bbfbc58620e2eadfee41dbbac3 Author: purian23 <purian23@gmail.com> Date: Sun Feb 15 16:38:45 2026 -0500 Height for realz commit 7784488a61a3a66e03ea2b387ca1e9da2f5e02fd Author: purian23 <purian23@gmail.com> Date: Sun Feb 15 16:34:09 2026 -0500 Fix height and truncate text/URLs commit 31b328d428b6cb1266aeb890eef052f003379a32 Author: bbedward <bbedward@gmail.com> Date: Sun Feb 15 16:25:57 2026 -0500 notifications: handle URL encoding in markdown2html commit dbb04f74a2ab52751f48bd851e74a79a3549c68a Author: bbedward <bbedward@gmail.com> Date: Sun Feb 15 16:10:20 2026 -0500 notifications: more comprehensive decoder commit b29c7192c2b27d8b3e01a08dbad7656029abf673 Author: bbedward <bbedward@gmail.com> Date: Sun Feb 15 15:51:37 2026 -0500 notifications: html unescape commit 8a48fa11ecfffa6588807a736c897d247167b3cc Author: purian23 <purian23@gmail.com> Date: Sun Feb 15 15:04:33 2026 -0500 Add expressive curve on init toast commit ee124f5e04f39435b7c8cbaabc82f89a689a3847 Author: purian23 <purian23@gmail.com> Date: Sun Feb 15 15:02:16 2026 -0500 Expressive curves on swipe & btn height commit 0fce90463567be6b01c4a316bc489baffdaa4602 Author: purian23 <purian23@gmail.com> Date: Sun Feb 15 13:40:02 2026 -0500 Provide bottom button clearance commit 00d3829999492ab1b698a0d6c3079e53f510f725 Author: bbedward <bbedward@gmail.com> Date: Sun Feb 15 13:24:31 2026 -0500 notifications: cleanup popup display logic commit fd05768059db8abda8a33ae8f47caf962c6aefaa Author: purian23 <purian23@gmail.com> Date: Sun Feb 15 01:00:55 2026 -0500 Add Privacy Mode - Smoother notification expansions - Shadow & Privacy Toggles commit 0dba11d845871eeaa969571e6bede56f984655c7 Author: purian23 <purian23@gmail.com> Date: Sat Feb 14 22:48:46 2026 -0500 Further M3 enhancements commit 949c216964b87c1ae265854ef1886b5b4990fd0d Author: purian23 <purian23@gmail.com> Date: Sat Feb 14 19:59:38 2026 -0500 Right-Click to set Rules on Notifications directly commit 62bc25782cc1dcc5f71e3c3718d7eefbcc88029e Author: bbedward <bbedward@gmail.com> Date: Fri Feb 13 21:44:27 2026 -0500 notifications: fix compact spacing, reveal header bar, add bottom center position, pointing hand cursor fix commit ed495d4396b52df2b44eb96bbfd3dea1565f8458 Author: purian23 <purian23@gmail.com> Date: Fri Feb 13 20:25:40 2026 -0500 Tighten init toast commit ebe38322a03956b864171a4fdf6986c97befbd34 Author: purian23 <purian23@gmail.com> Date: Fri Feb 13 20:09:59 2026 -0500 Update more m3 baselines & spacing commit b1735bb7013a7c96917597e83d7f5433e528a735 Author: purian23 <purian23@gmail.com> Date: Fri Feb 13 14:10:05 2026 -0500 Expand rules on-Click commit 9f13546b4d9df991da91ed0f3eedccd32747530e Author: purian23 <purian23@gmail.com> Date: Fri Feb 13 12:59:29 2026 -0500 Add Notification Rules - Additional right-click ops - Allow for 3rd boy line on init notification popup commit be133b73c7c0781cde74258da2a455d14bc9feea Author: purian23 <purian23@gmail.com> Date: Fri Feb 13 10:10:03 2026 -0500 Truncate long title in groups commit 4fc275bead670d5485a7cfb0402e38057efe6443 Author: bbedward <bbedward@gmail.com> Date: Thu Feb 12 23:27:34 2026 -0500 notification: expand/collapse animation adjustment commit 00e6172a6888cd08781c2b321ded2d3c359dbf18 Author: purian23 <purian23@gmail.com> Date: Thu Feb 12 22:50:11 2026 -0500 Fix global warnings commit 0772f6deb7aa19bad3ee88a769e7b75d36d7f775 Author: purian23 <purian23@gmail.com> Date: Thu Feb 12 22:46:40 2026 -0500 Tweak expansion duration commit 0ffeed3ff0b25d54eca00166a3f77db6c4dc4c49 Author: purian23 <purian23@gmail.com> Date: Thu Feb 12 22:16:16 2026 -0500 notifications: Update Material 3 baselines - New right-click to mute option - New independent Notification Animation settings
DMS Backend & CLI
Go-based backend for DankMaterialShell providing system integration, IPC, and installation tools.
See root README for project overview and installation.
Components
dms CLI Command-line interface and daemon for shell management and system control.
dankinstall Distribution-aware installer with TUI for deploying DMS and compositor configurations on Arch, Fedora, Debian, Ubuntu, openSUSE, and Gentoo.
System Integration
Wayland Protocols (Client)
All Wayland protocols are consumed as a client - connecting to the compositor.
| Protocol | Purpose |
|---|---|
wlr-gamma-control-unstable-v1 |
Night mode color temperature control |
wlr-screencopy-unstable-v1 |
Screen capture for color picker/screenshot |
wlr-layer-shell-unstable-v1 |
Overlay surfaces for color picker UI/screenshot |
wlr-output-management-unstable-v1 |
Display configuration |
wlr-output-power-management-unstable-v1 |
DPMS on/off CLI |
wp-viewporter |
Fractional scaling support (color picker/screenshot UIs) |
keyboard-shortcuts-inhibit-unstable-v1 |
Inhibit compositor shortcuts during color picker/screenshot |
ext-data-control-v1 |
Clipboard history and persistence |
ext-workspace-v1 |
Workspace integration |
dwl-ipc-unstable-v2 |
dwl/MangoWC IPC for tags, outputs, etc. |
DBus Interfaces
Client (consuming external services):
| Interface | Purpose |
|---|---|
org.bluez |
Bluetooth management with pairing agent |
org.freedesktop.NetworkManager |
Network management |
net.connman.iwd |
iwd Wi-Fi backend |
org.freedesktop.network1 |
systemd-networkd integration |
org.freedesktop.login1 |
Session control, sleep inhibitors, brightness |
org.freedesktop.Accounts |
User account information |
org.freedesktop.portal.Desktop |
Desktop appearance settings (color scheme) |
| CUPS via IPP + D-Bus | Printer management with job notifications |
Server (implementing interfaces):
| Interface | Purpose |
|---|---|
org.freedesktop.ScreenSaver |
Screensaver inhibit for video playback |
Custom IPC via unix socket (JSON API) for shell communication.
Hardware Control
| Subsystem | Method | Purpose |
|---|---|---|
| DDC/CI | I2C direct | External monitor brightness |
| Backlight | logind or sysfs | Internal display brightness |
| evdev | /dev/input/event* |
Keyboard state (caps lock LED) |
| udev | netlink monitor | Backlight device updates (for OSD) |
Plugin System
- Plugin registry integration
- Plugin lifecycle management
- Settings persistence
CLI Commands
dms run [-d]- Start shell (optionally as daemon)dms restart/dms kill- Manage running processesdms ipc <command>- Send IPC commands (toggle launcher, notifications, etc.)dms plugins [install|browse|search]- Plugin managementdms brightness [list|set]- Control display/monitor brightnessdms color pick- Native color picker (see below)dms update- Update DMS and dependencies (disabled in distro packages)dms greeter install- Install greetd greeter (disabled in distro packages)
Color Picker
Native Wayland color picker with magnifier, no external dependencies. Supports HiDPI and fractional scaling.
dms color pick # Pick color, output hex
dms color pick --rgb # Output as RGB (255 128 64)
dms color pick --hsv # Output as HSV (24 75% 100%)
dms color pick --json # Output all formats as JSON
dms color pick -a # Auto-copy to clipboard
The on-screen preview displays the selected format. JSON output includes hex, RGB, HSL, HSV, and CMYK values.
Building
Requires Go 1.24+
Development build:
make # Build dms CLI
make dankinstall # Build installer
make test # Run tests
Distribution build:
make dist # Build without update/greeter features
Produces bin/dms-linux-amd64 and bin/dms-linux-arm64
Installation:
sudo make install # Install to /usr/local/bin/dms
Development
Setup pre-commit hooks:
git config core.hooksPath .githooks
This runs gofmt, golangci-lint, tests, and builds before each commit when core/ files are staged.
Regenerating Wayland Protocol Bindings:
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.go
Module Structure:
cmd/- Binary entrypoints (dms, dankinstall)internal/distros/- Distribution-specific installation logicinternal/proto/- Wayland protocol bindingspkg/- Shared packages
Installation via dankinstall
curl -fsSL https://install.danklinux.com | sh
Supported Distributions
Arch, Fedora, Debian, Ubuntu, openSUSE, Gentoo (and derivatives)
Arch Linux
Uses pacman for system packages, builds AUR packages via makepkg, no AUR helper dependency.
Fedora
Uses COPR repositories (avengemedia/danklinux, avengemedia/dms).
Ubuntu Requires PPA support. Most packages built from source (slow first install).
Debian Debian 13+ (Trixie). niri only, no Hyprland support. Builds from source.
openSUSE Most packages available in standard repos. Minimal building required.
Gentoo Uses Portage with GURU overlay. Automatically configures USE flags. Variable success depending on system configuration.
See installer output for distribution-specific details during installation.