{"id":31605362,"url":"https://github.com/AvengeMedia/DankMaterialShell","last_synced_at":"2025-10-06T08:06:40.031Z","repository":{"id":304004143,"uuid":"1017466877","full_name":"AvengeMedia/DankMaterialShell","owner":"AvengeMedia","description":"Quickshell optimized for niri \u0026 hyprland. Check out the niri community Discord below. ","archived":false,"fork":false,"pushed_at":"2025-10-06T03:56:41.000Z","size":4415,"stargazers_count":952,"open_issues_count":36,"forks_count":56,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-10-06T05:40:25.856Z","etag":null,"topics":["quickshell","theme","tiling-window-manager","wayland"],"latest_commit_sha":null,"homepage":"https://discord.gg/vT8Sfjy7sx","language":"QML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/AvengeMedia.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-07-10T15:18:23.000Z","updated_at":"2025-10-06T04:05:06.000Z","dependencies_parsed_at":"2025-07-10T21:57:12.688Z","dependency_job_id":"1a7df3d3-4285-4e1e-81a2-0647ba639152","html_url":"https://github.com/AvengeMedia/DankMaterialShell","commit_stats":null,"previous_names":["bbedward/dank-material-dark-shell","bbedward/dankmaterialshell","avengemedia/dankmaterialshell"],"tags_count":13,"template":false,"template_full_name":null,"purl":"pkg:github/AvengeMedia/DankMaterialShell","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AvengeMedia%2FDankMaterialShell","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AvengeMedia%2FDankMaterialShell/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AvengeMedia%2FDankMaterialShell/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AvengeMedia%2FDankMaterialShell/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AvengeMedia","download_url":"https://codeload.github.com/AvengeMedia/DankMaterialShell/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AvengeMedia%2FDankMaterialShell/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278577929,"owners_count":26009703,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-06T02:00:05.630Z","response_time":65,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["quickshell","theme","tiling-window-manager","wayland"],"created_at":"2025-10-06T08:02:14.833Z","updated_at":"2025-10-06T08:06:40.016Z","avatar_url":"https://github.com/AvengeMedia.png","language":"QML","readme":"# DankMaterialShell (dms)\n\n\u003cdiv align=center\u003e\n\n[![GitHub stars](https://img.shields.io/github/stars/AvengeMedia/DankMaterialShell?style=for-the-badge\u0026labelColor=101418\u0026color=ffd700)](https://github.com/AvengeMedia/DankMaterialShell/stargazers)\n[![GitHub License](https://img.shields.io/github/license/AvengeMedia/DankMaterialShell?style=for-the-badge\u0026labelColor=101418\u0026color=b9c8da)](https://github.com/AvengeMedia/DankMaterialShell/blob/master/LICENSE)\n[![GitHub release](https://img.shields.io/github/v/release/AvengeMedia/DankMaterialShell?style=for-the-badge\u0026labelColor=101418\u0026color=9ccbfb)](https://github.com/AvengeMedia/DankMaterialShell/releases)\n[![GitHub last commit](https://img.shields.io/github/last-commit/AvengeMedia/DankMaterialShell?style=for-the-badge\u0026labelColor=101418\u0026color=9ccbfb)](https://github.com/AvengeMedia/DankMaterialShell/commits/master)\n[![AUR version](https://img.shields.io/aur/version/dms-shell?style=for-the-badge\u0026labelColor=101418\u0026color=9ccbfb)](https://aur.archlinux.org/packages/dms-shell)\n[![AUR version (git)](https://img.shields.io/aur/version/dms-shell-git?style=for-the-badge\u0026labelColor=101418\u0026color=9ccbfb\u0026label=AUR%20(git))](https://aur.archlinux.org/packages/dms-shell-git)\n\n\u003c/div\u003e\n\nA modern Wayland desktop shell built with [Quickshell](https://quickshell.org/) and optimized for the [niri](https://github.com/YaLTeR/niri) and [Hyprland](https://hyprland.org/) compositors.\n\nFeatures notifications, app launcher, wallpaper customization, and fully customizable with [plugins](https://github.com/AvengeMedia/dms-plugin-registry).\n\n## Screenshots\n\n\u003cdiv align=\"center\"\u003e\n\u003cdiv style=\"max-width: 700px; margin: 0 auto;\"\u003e\n\nhttps://github.com/user-attachments/assets/9b99dbbf-42d3-44ab-83b6-fae6c2aa3cc0\n\n\u003c/div\u003e\n\u003c/div\u003e\n\n\u003cdetails\u003e\u003csummary\u003e\u003cstrong\u003eView More Screenshots\u003c/strong\u003e\u003c/summary\u003e\n\n\u003cbr\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n### Desktop Overview\n\n\u003cimg src=\"https://github.com/user-attachments/assets/203a9678-c3b7-4720-bb97-853a511ac5c8\" width=\"600\" alt=\"DankMaterialShell Desktop\" /\u003e\n\n### Dashboard\n\n\u003cimg width=\"600\" alt=\"DankDash\" src=\"https://github.com/user-attachments/assets/a937cf35-a43b-4558-8c39-5694ff5fcac4\" /\u003e\n\n### Application Launcher\n\n\u003cimg src=\"https://github.com/user-attachments/assets/2da00ea1-8921-4473-a2a9-44a44535a822\" width=\"450\" alt=\"Spotlight Launcher\" /\u003e\n\n### Control Center\n\n\u003cimg width=\"600\" alt=\"Control Center\" src=\"https://github.com/user-attachments/assets/732c30de-5f4a-4a2b-a995-c8ab656cecd5\" /\u003e\n\n### System Monitor\n\n\u003cimg src=\"https://github.com/user-attachments/assets/b3c817ec-734d-4974-929f-2d11a1065349\" width=\"600\" alt=\"System Monitor\" /\u003e\n\n### Widget Customization\n\n\u003cimg src=\"https://github.com/user-attachments/assets/903f7c60-146f-4fb3-a75d-a4823828f298\" width=\"500\" alt=\"Widget Customization\" /\u003e\n\n### Lock Screen\n\n\u003cimg src=\"https://github.com/user-attachments/assets/3fa07de2-c1b0-4e57-8f25-3830ac6baf4f\" width=\"600\" alt=\"Lock Screen\" /\u003e\n\n### Dynamic Theming\n\n\u003cimg src=\"https://github.com/user-attachments/assets/a81a68e3-4f7e-4246-8199-0fef1013d4cf\" width=\"700\" alt=\"Auto Theme\" /\u003e\n\n### Notification Center\n\n\u003cimg src=\"https://github.com/user-attachments/assets/07cbde9a-0242-4989-9f97-5765c6458c85\" width=\"350\" alt=\"Notification Center\" /\u003e\n\n### Dock\n\n\u003cimg src=\"https://github.com/user-attachments/assets/e6999daf-f7bf-4329-98fa-0ce4f0e7219c\" width=\"400\" alt=\"Dock\" /\u003e\n\n\u003c/div\u003e\n\n\u003c/details\u003e\n\n## Quick start (full dotfiles, most distros)\n\n```bash\ncurl -fsSL https://install.danklinux.com | sh\n```\n*Or skip to [Installation](https://github.com/AvengeMedia/DankMaterialShell?tab=readme-ov-file#installation)*\n\n\u003cdetails\u003e\u003csummary\u003e\u003cstrong\u003eFeatures\u003c/strong\u003e\u003c/summary\u003e\n\n**Core Widgets:**\n- **TopBar**: fully customizable bar where widgets can be added, removed, and re-arranged.\n  - **App Launcher** with fuzzy search, categories, and auto-sorting by most used apps.\n  - **Workspace Switcher** Configurable workspace switcher.\n  - **Focused Window** Displays the currently focused window app name and title.\n  - **Running Apps** A view of all running apps, sorted by monitor, workspace, then position on workspace.\n  - **Media Player** Short form media player with equalizer, song title, and controls.\n  - **Clock** Clock and date widget\n  - **Weather** Weather widget with customizable location\n  - **System Tray** System tray applets with context menus.\n  - **Process Monitor** CPU, RAM, and GPU usage percentages, temperatures. (requires [dgop](https://github.com/AvengeMedia/dgop))\n  - **Power/Battery** Power/Battery widget for battery metrics and power profile changing.\n  - **Notifications** Notification bell with a notification center popup\n  - **Control Center** High-level view of network, bluetooth, and audio status\n  - **Privacy Indicator** Attempts to reveal if a microphone or screen recording session is active, relying on Pipewire data sources\n  - **Idle Inhibitor** Creates a systemd idle inhibitor to prevent sleep/locking from occuring.\n- **Spotlight Launcher** A central app launcher/search that can be triggered via an IPC keybinding.\n- **Central Command** A combined music, weather, calendar, and events PopUp.\n- **Process List** A process list, with system metrics and information. More detailed modal available via IPC.\n- **Notification Center** A center for notifications that has support for grouping.\n- **Dock** A dock with pinned apps support, recent apps support, and currently running application support.\n- **Control Center** A full control center with user profile information, network, bluetooth, audio input/output, display controls, and night mode automation.\n- **Lock Screen** Using quickshell's WlSessionLock with embedded virtual keyboard for Niri (Niri doesn't support placing virtual keyboard above lockscreen natively: [issue](https://github.com/YaLTeR/niri/issues/2201))\n- **Notepad** A simple text notepad/scratchpad with auto-save to session data and file export/import functionality.\n\n\u003c/details\u003e\n\n## Highlights\n\n- Auto-theming GTK, QT, Terminal apps, and more with [matugen](https://github.com/InioX/matugen) + optional theme generation from wallpaper.\n- 20+ widgets that can be added and re-arranged on the bar.\n- Process list, temperature monitoring, and resource monitoring with [dgop](https://github.com/AvengeMedia/dgop)\n- Notification service with support for grouping and richtext\n- App launcher + Spotlighht launcher with fuzzy search\n- Control center with mpris player, weather, and calendar integration.\n- Clipboard history view with image previews.\n- A dock for running apps + pinned apps\n- Configure bluetooth, wifi, and audio input+output devices.\n- A lock screen\n- Idle monitoring - configure auto lock, screen off, suspend, and hibernate with different knobs for battery + AC power.\n- A greeter\n- A comprehensive plugin system for endless customization possibilities.\n\n**TL;DR** *dms replaces your waybar, swaylock, swayidle, hypridle, hyprlock, fuzzels, walker, mako, and basically everything you use to stitch a desktop together*\n\n## Installation\n\n### Compositor Setup\n\nDankMaterialShell supports both **niri** and **Hyprland** compositors:\n\n**Niri**:\n```bash\n# Arch Linux\nparu -S niri-git\n\n# Fedora  \nsudo dnf copr enable yalter/niri \u0026\u0026 sudo dnf install niri\n```\n\nFor detailed niri installation instructions, see the [niri Getting Started guide](https://yalter.github.io/niri/Getting-Started.html).\n\n**Hyprland**:\n```bash\n# Arch Linux\nsudo pacman -S hyprland\n\n# Or from AUR for latest\nparu -S hyprland-git\n\n# Fedora\nsudo dnf install hyprland\n\n# Or use Copr for latest builds\nsudo dnf copr enable solopasha/hyprland \u0026\u0026 sudo dnf install hyprland\n```\n\nFor detailed Hyprland installation instructions, see the [Hyprland wiki](https://wiki.hypr.land/Getting-Started/Installation/).\n\n### Dank Shell Installation\n\n*feel free to contribute steps for other distributions*\n\n#### Arch Linux - via AUR\n\n```bash\nparu -S dms-shell-git\n```\n\n#### nixOS - via flake\n\n```bash\nnix profile install github:AvengeMedia/DankMaterialShell\n```\n\n#### nixOS - via home-manager\n\nTo install using home-manager, you need to add this repo into your flake inputs:\n\n``` nix\ndankMaterialShell = {\n  url = \"github:AvengeMedia/DankMaterialShell\";\n  inputs.nixpkgs.follows = \"nixpkgs\";\n};\n```\n\nThen somewhere in your home-manager config, add this to the imports:\n\n``` nix\nimports = [\n  inputs.dankMaterialShell.homeModules.dankMaterialShell.default\n];\n```\n\nIf you use Niri, the `niri` homeModule provides additional options for Niri integration, such as key bindings and spawn:\n\n``` nix\nimports = [\n  inputs.dankMaterialShell.homeModules.dankMaterialShell.default\n  inputs.dankMaterialShell.homeModules.dankMaterialShell.niri\n];\n```\n\n\u003e [!IMPORTANT]\n\u003e To use the `niri` homeModule, you must have `sobidoo/niri-flake` in your inputs:\n\n``` nix\nniri = {\n  url = \"github:sodiboo/niri-flake\";\n  inputs.nixpkgs.follows = \"nixpkgs\";\n};\n```\n\nAnd import it in home-manager:\n\n``` nix\nimports = [\n  inputs.niri.homeModules.niri\n];\n```\n\nNow you can enable it with:\n\n``` nix\nprograms.dankMaterialShell.enable = true;\n```\n\nThere are a lot of possible configurations that you can enable/disable in the flake, check [nix/default.nix](nix/default.nix) and [nix/niri.nix](nix/niri.nix) to see them all.\n\n#### Other Distributions - via manual installation\n\n**1. Install Quickshell (Varies by Distribution)**\n```bash\n# Arch\nparu -S quickshell-git\n# Fedora\nsudo dnf copr enable errornointernet/quickshell \u0026\u0026 sudo dnf install quickshell-git\n# ! TODO - document other distros\n```\n\n**2. Install fonts**\n*Inter Variable* and *Fira Code* are not strictly required, but they are the default fonts of dms.\n\n**2.1 Install Material Symbols**\n```bash\nsudo curl -L \"https://github.com/google/material-design-icons/raw/master/variablefont/MaterialSymbolsRounded%5BFILL%2CGRAD%2Copsz%2Cwght%5D.ttf\" -o /usr/share/fonts/MaterialSymbolsRounded.ttf\n```\n**2.2 Install Inter Variable**\n```bash\nsudo curl -L \"https://github.com/rsms/inter/raw/refs/tags/v4.1/docs/font-files/InterVariable.ttf\" -o /usr/share/fonts/InterVariable.ttf\n```\n\n**2.3 Install Fira Code (monospace font)**\n```bash\nsudo curl -L \"https://github.com/tonsky/FiraCode/releases/latest/download/FiraCode-Regular.ttf\" -o /usr/share/fonts/FiraCode-Regular.ttf\n```\n\n**2.4 Refresh font cache**\n```bash\nfc-cache -fv\n```\n\n**3. Install the shell**\n\n**3.1. Clone latest master**\n```bash\nmkdir ~/.config/quickshell \u0026\u0026 git clone https://github.com/AvengeMedia/DankMaterialShell.git ~/.config/quickshell/dms\n```\n\n**3.2. Install latest dms CLI**\n```bash\nsudo sh -c \"curl -L https://github.com/AvengeMedia/danklinux/releases/latest/download/dms-$(uname -m | sed 's/x86_64/amd64/;s/aarch64/arm64/').gz | gunzip | tee /usr/local/bin/dms \u003e /dev/null \u0026\u0026 chmod +x /usr/local/bin/dms\"\n```\n\n**4. Optional Features (system monitoring, clipboard history, brightness controls, etc.)**\n\n**4.1 Core optional dependencies**\n```bash\n# Arch Linux\nsudo pacman -S cava wl-clipboard cliphist brightnessctl\nparu -S matugen-bin dgop\n\n# Fedora\nsudo dnf install cava wl-clipboard brightnessctl\nsudo dnf copr enable wef/cliphist \u0026\u0026 sudo dnf install cliphist\nsudo dnf copr enable heus-sueh/packages \u0026\u0026 sudo dnf install matugen\n```\n\n*Other distros will just need to find sources for the above packages*\n\n**4.2 - dgop manual installation**\n\n`dgop` is available via AUR and a nix flake, other distributions can install it manually.\n\n```bash\nsudo sh -c \"curl -L https://github.com/AvengeMedia/dgop/releases/latest/download/dgop-linux-$(uname -m | sed 's/x86_64/amd64/;s/aarch64/arm64/').gz | gunzip | tee /usr/local/bin/dgop \u003e /dev/null \u0026\u0026 chmod +x /usr/local/bin/dgop\"\n```\n\n**Optional Requirement Overview**\n\n- `dgop`: Ability to have system resource widgets, process list modal, and temperature monitoring.\n- `matugen`: Wallpaper-based dynamic theming\n- `brightnessctl`: Backlight and LED brightness control\n- `wl-clipboard`: Required for copying various elements to clipboard.\n- `cava`: Audio visualizer\n- `cliphist`: Clipboard history\n- `gammastep`: Night mode support\n\n## Compositor Configuration\n\nA lot of options are subject to personal preference, but the below sets a good starting point for most features.\n\n### niri Integration\n\nAdd to your niri config\n\n```kdl\n// Required for clipboard history integration\nspawn-at-startup \"bash\" \"-c\" \"wl-paste --watch cliphist store \u0026\"\n\n// Recommended (must install polkit-mate before hand) for elevation prompts\nspawn-at-startup \"/usr/lib/mate-polkit/polkit-mate-authentication-agent-1\"\n// This may be a different path on different distributions, the above is for the arch linux mate-polkit package\n\n// Starts DankShell\nspawn-at-startup \"dms\" \"run\"\n\n// If using niri newer than 271534e115e5915231c99df287bbfe396185924d (~aug 17 2025)\n// you can add this to disable built in config load errors since dank shell provides this\nconfig-notification {\n    disable-failed\n}\n\n// Dank keybinds\n// 1. These should not be in conflict with any pre-existing keybindings\n// 2. You need to merge them with your existing config if you want to use these\n// 3. You can change the keys to whatever you want, if you prefer something different\n// 4. For the increment/decrement ones you can change the steps to whatever you like too\nbinds {\n   Mod+Space hotkey-overlay-title=\"Application Launcher\" {\n      spawn \"dms\" \"ipc\" \"call\" \"spotlight\" \"toggle\";\n   }\n   Mod+V hotkey-overlay-title=\"Clipboard Manager\" {\n      spawn \"dms\" \"ipc\" \"call\" \"clipboard\" \"toggle\";\n   }\n   Mod+M hotkey-overlay-title=\"Task Manager\" {\n      spawn \"dms\" \"ipc\" \"call\" \"processlist\" \"toggle\";\n   }\n   Mod+N hotkey-overlay-title=\"Notification Center\" {\n      spawn \"dms\" \"ipc\" \"call\" \"notifications\" \"toggle\";\n   }\n   Mod+Comma hotkey-overlay-title=\"Settings\" {\n      spawn \"dms\" \"ipc\" \"call\" \"settings\" \"toggle\";\n   }\n   Mod+P hotkey-overlay-title=\"Notepad\" {\n      spawn \"dms\" \"ipc\" \"call\" \"notepad\" \"toggle\";\n   }\n   Super+Alt+L hotkey-overlay-title=\"Lock Screen\" {\n      spawn \"dms\" \"ipc\" \"call\" \"lock\" \"lock\";\n   }\n   Mod+X hotkey-overlay-title=\"Power Menu\" {\n      spawn \"dms\" \"ipc\" \"call\" \"powermenu\" \"toggle\";\n   }\n   Mod+C hotkey-overlay-title=\"Control Center\" {\n      spawn \"dms\" \"ipc\" \"call\" \"control-center\" \"toggle\";\n   }\n   XF86AudioRaiseVolume allow-when-locked=true {\n      spawn \"dms\" \"ipc\" \"call\" \"audio\" \"increment\" \"3\";\n   }\n   XF86AudioLowerVolume allow-when-locked=true {\n      spawn \"dms\" \"ipc\" \"call\" \"audio\" \"decrement\" \"3\";\n   }\n   XF86AudioMute allow-when-locked=true {\n      spawn \"dms\" \"ipc\" \"call\" \"audio\" \"mute\";\n   }\n   XF86AudioMicMute allow-when-locked=true {\n      spawn \"dms\" \"ipc\" \"call\" \"audio\" \"micmute\";\n   }\n   XF86MonBrightnessUp allow-when-locked=true {\n      spawn \"dms\" \"ipc\" \"call\" \"brightness\" \"increment\" \"5\" \"\";\n   }\n   // You can override the default device for e.g. keyboards by adding the device name to the last param\n   XF86MonBrightnessDown allow-when-locked=true {\n      spawn \"dms\" \"ipc\" \"call\" \"brightness\" \"decrement\" \"5\" \"\";\n   }\n   // Night mode toggle\n   Mod+Shift+N allow-when-locked=true {\n      spawn \"dms\" \"ipc\" \"call\" \"night\" \"toggle\";\n   }\n}\n```\n\n#### niri theming\n\nIf using a niri build newer than [3933903](https://github.com/YaLTeR/niri/commit/39339032cee3453faa54c361a38db6d83756f750), you can synchronize colors and gaps with the shell settings by adding the following to your niri config.\n\n```bash\n# For colors\necho -e 'include \"dms/colors.kdl\"' \u003e\u003e ~/.config/niri/config.kdl\n# For gaps, border widths, certain window rules\necho -e 'include \"dms/layout.kdl\"' \u003e\u003e ~/.config/niri/config.kdl\n```\n\n### Hyprland Integration\n\nAdd to your Hyprland config (`~/.config/hypr/hyprland.conf`):\n\n```bash\n# Required for clipboard history integration\nexec-once = bash -c \"wl-paste --watch cliphist store \u0026\"\n\n# Recommended (must install polkit-mate beforehand) for elevation prompts  \nexec-once = /usr/lib/mate-polkit/polkit-mate-authentication-agent-1\n# This may be a different path on different distributions, the above is for the arch linux mate-polkit package\n\n# Starts DankShell\nexec-once = dms run\n\n# Dank keybinds\n# 1. These should not be in conflict with any pre-existing keybindings\n# 2. You need to merge them with your existing config if you want to use these\n# 3. You can change the keys to whatever you want, if you prefer something different\n# 4. For the increment/decrement ones you can change the steps to whatever you like too\n\n# Application and system controls\nbind = SUPER, Space, exec, dms ipc call spotlight toggle\nbind = SUPER, V, exec, dms ipc call clipboard toggle\nbind = SUPER, M, exec, dms ipc call processlist toggle\nbind = SUPER, N, exec, dms ipc call notifications toggle\nbind = SUPER, comma, exec, dms ipc call settings toggle\nbind = SUPER, P, exec, dms ipc call notepad toggle\nbind = SUPERALT, L, exec, dms ipc call lock lock\nbind = SUPER, X, exec, dms ipc call powermenu toggle\nbind = SUPER, C, exec, dms ipc call control-center toggle \n\n# Audio controls (function keys)\nbindl = , XF86AudioRaiseVolume, exec, dms ipc call audio increment 3\nbindl = , XF86AudioLowerVolume, exec, dms ipc call audio decrement 3\nbindl = , XF86AudioMute, exec, dms ipc call audio mute\nbindl = , XF86AudioMicMute, exec, dms ipc call audio micmute\n\n# Brightness controls (function keys)\nbindl = , XF86MonBrightnessUp, exec, dms ipc call brightness increment 5 \"\"\n# You can override the default device for e.g. keyboards by adding the device name to the last param\nbindl = , XF86MonBrightnessDown, exec, dms ipc call brightness decrement 5 \"\"\n\n# Night mode toggle\nbind = SUPERSHIFT, N, exec, dms ipc call night toggle\n```\n\n## Greeter\n\nYou can install a matching [greetd](https://github.com/kennylevinsen/greetd) greeter, that will give you a greeter that matches the lock screen.\n\nIt's as simple as running `dms greeter install` in most cases, but more information is in the [Greetd module](Modules/Greetd/README.md)\n\n## IPC Commands\n\nControl everything from the command line, or via keybinds. For comprehensive documentation of all available IPC commands, see [docs/IPC.md](docs/IPC.md).\n\n### Audio control\n```bash\ndms ipc call audio setvolume 50\ndms ipc call audio mute\n```\n### Launch applications\n```bash\ndms ipc call spotlight toggle\ndms ipc call notepad toggle\ndms ipc call processlist toggle\ndms ipc call powermenu toggle\n```\n### System control\n```\ndms ipc call wallpaper set /path/to/image.jpg\ndms ipc call theme toggle\ndms ipc call night toggle\ndms ipc call lock lock\n```\n### Media control\n```\ndms ipc call mpris playPause\ndms ipc call mpris next\n```\n\n## Theming\n\ndms will spawn a matugen process on theme changes to generate color palettes for installed and supported apps. If you do not want these files generated, you can set the env variable `DMS_DISABLE_MATUGEN=1` to disable it entirely.\n\n### Custom Themes\n\nDankMaterialShell supports custom color themes! You can create your own Material Design 3 color schemes or use pre-made themes like Cyberpunk Electric, Hotline Miami, and Miami Vice.\n\nFor detailed instructions on creating and using custom themes, see [docs/CUSTOM_THEMES.md](docs/CUSTOM_THEMES.md).\n\n### System App Integration\n\nThere's two toggles in the appearance section of settings, for GTK and QT apps.\n\nThese settings will override some local GTK and QT configuration files, you can still integrate auto-theming if you do not wish DankShell to mess with your QTCT/GTK files.\n\nNo matter what when matugen is enabled the files will be created on wallpaper changes:\n\n- ~/.config/gtk-3.0/dank-colors.css\n- ~/.config/gtk-4.0/dank-colors.css\n- ~/.config/qt6ct/colors/matugen.conf\n- ~/.config/qt5ct/colors/matugen.conf\n\nIf you do not like our theme path, you can integrate this with other GTK themes, matugen themes, etc.\n\n#### GTK Apps\n\n1. Install [Colloid](https://github.com/vinceliuice/Colloid-gtk-theme)\n\nColloid is a hard requirement for the auto-theming because of how it integrates with colloid css files, however you can integrate auto-theming with other themes, you just have to do it manually (so leave the toggle OFF in settings)\n\nIt will still create `~/.config/gtk-3.0/4.0/dank-colors.css` on theme updates, these you can import into other compatible GTK themes.\n\n```bash\n# Some default install settings for colloid\n./install.sh -s standard -l --tweaks normal\n```\n\nConfigure in `~/.config/gtk-3.0/settings.ini` and `~/.config/gtk-4.0/settings.ini`:\n\n```ini\n[Settings]\ngtk-theme-name=Colloid\n```\n\n#### QT: basic gtk3 based theme (Option 1)\n\nIf you mostly use gtk apps, you'll probably be happy to just set the QT platform theme to gtk3.\n\n```kdl\nenvironment {\n  // Add to existing environment block\n  QT_QPA_PLATFORMTHEME \"gtk3\"\n  QT_QPA_PLATFORMTHEME_QT6 \"gtk3\"\n}\n```\n\n#### QT: better theming (Option 2)\n\n1. Install qt6ct-kde\n\n```bash\n# Arch\nparu -S qt6ct-kde\n```\n\n*I'm not sure what it is on other distros, but you can manually install via instructions provides on [qt6ct-kde github](https://www.opencode.net/trialuser/qt6ct)\n\n2. **Configure Environment in niri**\n\n```kdl\n  // Add to existing environment block\n  QT_QPA_PLATFORMTHEME \"qt6ct\"\n  QT_QPA_PLATFORMTHEME_QT6 \"qt6ct\"\n```\n\nYou'll have to restart your session for themes to take effect.\n\nNevigate to dms settings -\u003e themes \u0026 colors -\u003e and click \"Apply QT Themes\"\n\n#### Firefox\n\nThere are two theme paths for Firefox, using with [pywalfox](https://github.com/Frewacom/pywalfox) or [material fox](https://github.com/edelvarden/material-fox-updated)\n\n**(Option 1) - pywalfox**\n\n1. **Install [pywalfox](https://github.com/Frewacom/pywalfox)** on system.\n- Available in AUR via `paru -S python-pywalfox`\n\n2. **Install [pywalfox extension](https://addons.mozilla.org/firefox/addon/pywalfox/)** in firefox.\n\n3. **Restart dms and create symlink** to generate palette and then enable dank colors.\n- Run `ln -sf ~/.cache/wal/dank-pywalfox.json ~/.cache/wal/colors.json`\n\n\n**(Option 2) - Chrome-like theme with dynamic colors**\n\nFirefox does use the GTK3 theme, but it doesn't look that good on the stock theme IMO. A separate matugen css is generated for the [material fox](https://github.com/edelvarden/material-fox-updated) theme, you can configure that theme with dynamic colors by following the steps below.\n\n1. **In firefox, navigate to `about:config`**\n- set `toolkit.legacyuserprofilecustomizations.stylesheets` to `true`\n- set `svg.context-properties.content.enabled` to `true`\n- Create a new property called `userChrome.theme-material` and type `boolean`\n  - set to `true`\n\n\u003cdetails\u003e\u003csummary\u003e\u003cstrong\u003eExpand for firefox screenshots\u003c/strong\u003e\u003c/summary\u003e\n\u003cimg width=\"1262\" height=\"104\" alt=\"image\" src=\"https://github.com/user-attachments/assets/4bca43d1-5735-4401-9b91-5ee4f0b1e357\" /\u003e\n\u003cimg width=\"1262\" height=\"104\" alt=\"image\" src=\"https://github.com/user-attachments/assets/348d37e0-5c6c-4db8-b7c9-89cabf282c25\" /\u003e\n\u003cimg width=\"1244\" height=\"106\" alt=\"image\" src=\"https://github.com/user-attachments/assets/75fd4972-bc4a-4657-b756-b31ef8061b3b\" /\u003e\n\u003c/details\u003e\n\n2. **Install material fox theme**\n```bash\n# Find Firefox profile directory\nexport PROFILE_DIR=$(find ~/.mozilla/firefox -maxdepth 1 -type d -name \"*.default-release\" | head -n 1)\n\n# Download, extract to profile dir, and cleanup\ncurl -L -o \"$PROFILE_DIR/chrome.zip\" https://github.com/edelvarden/material-fox-updated/releases/download/v2.0.0/chrome.zip\nunzip -o \"$PROFILE_DIR/chrome.zip\" -d \"$PROFILE_DIR\"\nrm \"$PROFILE_DIR/chrome.zip\"\n```\n\n3. **Configure dynamic colors for material fox theme**\n```bash\nexport PROFILE_DIR=$(find ~/.mozilla/firefox -maxdepth 1 -type d -name \"*.default-release\" | head -n 1)\nrm -f \"$PROFILE_DIR/chrome/theme-material-blue.css\"\nln -sf ~/.config/DankMaterialShell/firefox.css \"$PROFILE_DIR/chrome/theme-material-blue.css\"\n```\n\n### Terminal Integration\n\nThe matugen integration will automatically generate new colors for certain apps only if they are installed.\n\nYou can enable the dynamic color schemes in supported terminal apps by modifying their configurations:\n\n**Ghostty**:\n\n```bash\necho \"config-file = ./config-dankcolors\" \u003e\u003e ~/.config/ghostty/config\n```\n\nIf you want to disable excessive config reloaded popup sin ghostty, you may wish to also add this:\n\n```bash\n# These are the default danklinux options, if you still want config reloaded and copied to clipboard popups you can skip it.\necho \"app-notifications = no-clipboard-copy,no-config-reload\" \u003e\u003e ~/.config/ghostty/config\n```\n\n**kitty**:\n\n```bash\necho \"include dank-theme.conf\" \u003e\u003e ~/.config/kitty/kitty.conf\n```\n\n## Plugins\n\n[Plugin registry](https://github.com/AvengeMedia/dms-plugin-registry) - collection of available dms plugins.\n\ndms features a plugin system - meaning you can create your own widgets and load other user widgets.\n\nMore comprehensive details available in the [PLUGINS](PLUGINS/README.md) - and examples [Emoji Plugin](PLUGINS/ExampleEmojiPlugin) and [Wallpaper Change Hook](PLUGINS/WallpaperWatcherDaemon) are available for reference.\n\nInstall an example plugin by:\n\n```bash\nmkdir ~/.config/DankMaterialShell/plugins\ncp -R ./PLUGINS/ExampleEmojiPlugin ~/.config/DankMaterialShell/plugins\n```\n\n**Only install plugins from TRUSTED sources.** Plugins execute QML and javascript at runtime, plugins from third parties should be reviewed before enabling them in dms.\n\n### Calendar Setup\n\nSync your caldev compatible calendar (Google, Office365, etc.) for dashboard integration:\n\n\u003cdetails\u003e\u003csummary\u003eConfiguration Steps\u003c/summary\u003e\n\n**Install dependencies:**\n\n#### Arch\n```bash\nsudo pacman -S vdirsyncer khal python-aiohttp-oauthlib\n```\n\n#### Fedora\n```bash\nsudo dnf install python3-vdirsyncer khal python3-aiohttp-oauthlib\n```\n\n**Configure vdirsyncer** (`~/.vdirsyncer/config`):\n\n```ini\n[general]\nstatus_path = \"~/.calendars/status\"\n\n[pair personal_sync]\na = \"personal\"\nb = \"personallocal\"\ncollections = [\"from a\", \"from b\"]\nconflict_resolution = \"a wins\"\nmetadata = [\"color\"]\n\n[storage personal]\ntype = \"google_calendar\"\ntoken_file = \"~/.vdirsyncer/google_calendar_token\"\nclient_id = \"your_client_id\"\nclient_secret = \"your_client_secret\"\n\n[storage personallocal]\ntype = \"filesystem\"\npath = \"~/.calendars/Personal\"\nfileext = \".ics\"\n```\n\n**Setup sync:**\n\n```bash\nvdirsyncer sync\nkhal configure\n```\n\n#### Auto-sync every 5 minutes\n```bash\ncrontab -e\n# Add: */5 * * * * /usr/bin/vdirsyncer sync\n```\n\n\u003c/details\u003e\n\n## Configuration\n\nAll settings are configurable in\n```\n~/.config/DankMaterialShell/settings.json`, or more intuitively the built-in settings modal.\n```\n\n**Key configuration areas:**\n\n- Widget positioning and behavior\n- Theme and color preferences\n- Time format, weather units and location\n- Light/Dark modes\n- Wallpaper and Profile picture\n- Dock enable/disable and various tunes.\n\n## Troubleshooting\n\n**Common issues:**\n\n- **Missing icons:** Verify Material Symbols font installation with `fc-list | grep Material`\n- **No dynamic theming:** Install matugen and enable in settings\n- **Qt apps not themed:** Configure qt5ct/qt6ct and set QT_QPA_PLATFORMTHEME\n- **Calendar not syncing:** Check vdirsyncer credentials and network connectivity\n\n**Getting help:**\n\n- Check the [issues](https://github.com/AvengeMedia/DankMaterialShell/issues) for known problems\n- Re-run the shell with `dms kill \u0026\u0026 dms run` to capture logs.\n- Join the niri community for compositor-specific questions\n\n## Contributing\n\nDankMaterialShell welcomes contributions! Whether it's bug fixes, new widgets, theme improvements, or documentation updates - all help is appreciated.\n\n**Areas that need attention:**\n\n- More widget options and customization\n- Additional compositor compatibility\n- Performance optimizations\n- Documentation and examples\n\n## Credits\n\n- [quickshell](https://quickshell.org/) the core of what makes a shell like this possible.\n- [niri](https://github.com/YaLTeR/niri) for the awesome scrolling compositor.\n- [Ly-sec](http://github.com/ly-sec) for awesome wallpaper effects among other things from [Noctalia](https://github.com/noctalia-dev/noctalia-shell)\n- [soramanew](https://github.com/soramanew) who built [caelestia](https://github.com/caelestia-dots/shell) which served as inspiration and guidance for many dank widgets.\n- [end-4](https://github.com/end-4) for [dots-hyprland](https://github.com/end-4/dots-hyprland) which also served as inspiration and guidance for many dank widgets.\n","funding_links":[],"categories":["go","QML","Custom Shells"],"sub_categories":["Miscellaneous"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FAvengeMedia%2FDankMaterialShell","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FAvengeMedia%2FDankMaterialShell","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FAvengeMedia%2FDankMaterialShell/lists"}