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 Quickshell Interface
QML-based desktop shell interface for DankMaterialShell providing panels, widgets, and overlays.
See root README for project overview and installation.
Architecture
Modular QML Structure
Modules/- UI components (panels, widgets, overlays)Services/- System integration singletons (audio, network, bluetooth)Widgets/- Reusable UI controlsCommon/- Shared resources and themes
Technology Stack
- Quickshell - QML-based shell framework
- Qt/QtQuick - UI rendering and controls
- Material Design 3 - Design system and theming
Development
Run the shell:
quickshell -p quickshell/
Code formatting:
qmlfmt -t 4 -i 4 -b 250 -w path/to/file.qml
qmllint **/*.qml
Components
Panels & Bars
Modules/TopBar/- Multi-monitor status bars with workspace switchingModules/DankBar/- Customizable widget bar with plugin supportModules/Dock/- Application dock with window management
System Controls
Modules/ControlCenter/- WiFi, Bluetooth, audio, display settingsModules/Notifications/- Notification center with popupsModules/Greetd/- Login greeter interface
Overlays
Modules/Spotlight/- Application and file launcherModules/Overview/- Workspace overviewModules/Lock/- Screen lock system
Utilities
Modules/ProcessList/- System monitoring and process managementModules/Calendar/- Calendar widget with event syncModules/Weather/- Weather display
Services
Singletons providing system integration:
Media & Audio
AudioService- PipeWire/PulseAudio volume and device controlMprisController- Media player integration
Network
NetworkService- NetworkManager WiFi controlBluetoothService- BlueZ Bluetooth management
Display
DisplayService- Brightness control and night modeWallpaperService- Wallpaper management and effects
System
BatteryService- Battery status and power profilesIdleService- Idle detection and inhibit locksClipboardService- Clipboard history with imagesDgopService- System metrics (CPU, RAM, GPU)
Integration
NiriService- Niri workspace integrationHyprlandService- Hyprland workspace integrationPluginService- Plugin discovery and lifecycle
Widgets
Reusable Material Design 3 components in Widgets/:
DankIcon- Icon component with Material fontDankSlider- Enhanced slider with animationsDankToggle- Toggle switch componentDankTabBar- Tab bar implementationDankGridView- Grid layout with adaptive columnsDankListView- Scrollable list viewDankTextField- Text input with validationDankDropdown- Dropdown selectionDankPopout- Base for overlay componentsStateLayer- Material interaction states
Theming
Dynamic Color Schemes
Wallpaper-based theming using matugen:
import qs.Common
Rectangle {
color: Theme.container
border.color: Theme.outline
}
Theme singleton provides Material Design 3 color system, spacing, fonts, and elevation.
Application Themes
Templates in scripts/templates/ generate themes for:
- GTK 3/4
- Qt5/Qt6
- Alacritty, Kitty, Ghostty, Foot, Wezterm terminals
- Neovim
- VSCode/VSCodium
- Firefox
Multi-Monitor Support
Per-monitor panel instances using Quickshell Variants:
Variants {
model: Quickshell.screens
PanelWindow {
screen: modelData
// Per-screen configuration
}
}
Workspace switchers adapt to compositor (Niri/Hyprland).
Plugin System
External plugins in ~/.config/DankMaterialShell/plugins/:
Widget plugins - UI components in DankBar Daemon plugins - Background processes without UI
Plugin manifest (plugin.json):
{
"id": "pluginId",
"name": "Plugin Name",
"version": "1.0.0",
"type": "widget",
"component": "./Widget.qml",
"settings": "./Settings.qml",
"permissions": ["settings_read", "settings_write"]
}
Plugins access pluginService for persistent data:
pluginService.savePluginData("pluginId", "key", value)
pluginService.loadPluginData("pluginId", "key", defaultValue)
IPC Integration
Backend IPC socket communication:
import Quickshell.Io
Process {
command: ["dms", "ipc", "call", "spotlight", "toggle"]
running: true
}
Common IPC commands exposed through services for reactive property bindings.
Code Conventions
Component Structure:
import QtQuick
import Quickshell
import qs.Common
import qs.Services
Item {
id: root
property type name: value
signal customSignal(type param)
Component { /* children */ }
}
Services (Singletons):
import QtQuick
import Quickshell
pragma Singleton
pragma ComponentBehavior: Bound
Singleton {
id: root
property bool featureAvailable: false
property type currentValue: defaultValue
function performAction(param) { /* implementation */ }
}
Guidelines:
- Use
Theme.propertyNamefor consistent styling - Bind directly to service properties for reactivity
- Use
DankIconfor all icons - Implement feature detection and graceful degradation
- 4-space indentation, no unnecessary comments
Translation
Internationalization using POEditor:
export POEDITOR_API_TOKEN="token"
export POEDITOR_PROJECT_ID="id"
python3 scripts/i18nsync.py sync
Pre-commit hook checks translation sync status.
License
MIT License - See LICENSE for details.