Dank Material Shell (DMS) Details
Dank Material Shell (DMS) is a modern, premium, and Material 3-inspired desktop shell built specifically for Wayland compositors using Quickshell and Go.
In this system configuration, DMS is declared as a flake input from:
> Source Repository:
github:AvengeMedia/DankMaterialShell/stable
Rather than serving as a basic bar, DMS functions as an all-in-one system dashboard, notification hub, lock screen, and session management suite.
Enabled Features & Configuration
All active features of the Dank Material Shell are configured within
the modular Nix block under
modules/desktop/niri/dms/default.nix. By declaring
programs.dank-material-shell.enable = true, the following
selected features have been customized and enabled in this profile:
1. Unified Status Bar
(modules.bar = true)
The shell renders a premium top bar, custom-tailored with the following layout and design variables:
- Floating Capsule-only Aesthetic: The main bar
transparency is set to
0.50with widget opacity at0.90. Spacing is set to0. This creates a floating pill look where the background is subtle but provides distinct separation from the wallpaper. - High-Visibility Widget Outlines: Widget outlines
are enabled (
widgetOutlineEnabled = true), styled in the themeโs primary color, set to fully opaque (1.0), and given a clean 1px thickness for maximum contrast and defined borders. - Geometric Controls: The configuration forces
squareCorners = trueto give all corners a classic square shape, overriding anygothCornersEnabledparameters. - Enhanced Scale: Fonts and icons are scaled to
1.5to provide an impactful visual presence and high readability on the bar. - Minimalist Workspaces: The workspace switcher
(
workspace_switcher) explicitly hides text labels (show_labels = false) and uses a modern โpillโ indicator style. - Custom Widget Layout:
- Left Area:
launcherButton(configured withlauncherLogoMode = "os"to display a custom inline QML NixOS logo),workspaceSwitcher, andfocusedWindow. - Center Area:
clock(for elegant central timekeeping). - Right Area:
weather,cpuTemp,systemTray,memUsage,controlCenterButton, andnotificationButton.
- Left Area:
- Interactive Applets: Clicking the network and audio
icons automatically triggers their respective system applets
(
network_click_action = "applet",audio_click_action = "applet").
2. Notification
Daemon (modules.notifications = true)
- Replaces standard standalone notification daemons (like Mako or Dunst) by acting as the system-wide desktop notification server.
- Popups utilize a
0.40transparency value to create a gorgeous frosted glass look that keeps text perfectly readable while letting background elements bleed through.
3.
Session & Lock Screen Control
(modules.lockscreen = true /
modules.idle = true)
- Enables built-in desktop idle timers and lock screen engines natively integrated with the compositor environment.
4.
Background & Wallpaper Management
(modules.wallpaper = false)
- Wallpaper management is explicitly disabled
(
modules.wallpaper = false) to keep backgrounds handled securely by separate external utility wrappers (e.g., awww/swaybg). - DMS v6 Compliance: Incorporates the updated
screenPreferences.wallpaper = [ ]list syntax, effectively replacing the obsoletedisableWallpaper = trueflag.
5. Conflict Resolution & Seamless Niri Integration
- Keybind & Autostart Decoupling: Sets
niri.enableKeybinds = falseandniri.enableSpawn = falseto disable internal DMS hotkeys/launch routines, preserving custom Niri KDL configuration maps. - Niri Custom Overrides: Niri integration includes
flag configurations (
includes.enable = trueandincludes.override = false) ensuring customhm.kdlparameters take absolute priority. It explicitly restricts injected files to["alttab", "binds", "wpblur"]to block DMS from pushing unauthorized border styles or layouts. - State Cleanup: Requires manual or scripted clearing
of legacy paths (
~/.config/niri/dms/colors.kdlandlayout.kdl) to bypass structure conflicts introduced moving into DMS v6.
๐จ System Theming & Session Initialization
Automatic Theme Generation
Instead of rigid assets, DMS color management is dynamically
constructed directly via Stylix base16 color schemes. Nix transforms
these values into a valid Material-compliant JSON tree mapped directly
to:
~/.config/DankMaterialShell/themes/catppuccinMocha/theme.json
- Theme Base: Modeled off a clean CatppuccinMocha structure applied symmetry-wise to both dark and light variations.
- Dynamic Theming Isolation:
dynamicThemingis locked tofalseandcurrentThemeNameis forced to"custom". This keeps global palettes locked tightly to your customized Stylix overrides rather than reacting fluidly to changing active wallpapers. - System Tray Polish: System tray icons use
systemTrayIconTintMode = "primary", tuned with a saturation metric of40and an explicit tint strength of150for deep integration into the overall accent aesthetics. - UI FX: Global corner radii are standard locked at
16. UI elements utilize background blur configurations (blurEnabled = trueandblurWallpaperOnOverview = true) while maintaining sharp foreground layers (blurForegroundLayers = false).
Profile Customization
- User Avatar: Implements a dedicated local image
file (
./nix.png) symlinked automatically via Nix into the expected configuration path (~/.config/DankMaterialShell/nix.png), feeding directly into the shell dashboard overview profile component.
Automated Weather Engine State Activation
To circumvent manual dashboard parameter lookup, the environment
leverages a Home Manager activation script
(home.activation.dmsWeather) executing right after
filesystem generation (entryAfter [ "writeBoundary" ]). The
script leverages jq to safely initialize or modify the
state payload cache inside
~/.local/state/DankMaterialShell/session.json, locking
coordinates and region indicators dynamically.
Packages & Dependencies
To support the complete functionality of this shell, the module declares and installs the following package hooks:
dgop: Core system performance-tracking daemon required for real-time CPU/RAM status bar reporting.jq: Lightweight command-line JSON processor leveraged during activation loops to stamp session values safely.nerd-fonts.jetbrains-mono: Premium monospace font applied across text layouts and terminal integrations.material-symbols&material-design-icons: Complete modern icon packs utilized by DMS status bar capsules.