mirror of
https://github.com/AvengeMedia/DankMaterialShell.git
synced 2025-12-05 21:15:38 -05:00
readme updoot
This commit is contained in:
841
README.md
841
README.md
@@ -1,859 +1,156 @@
|
|||||||
# DankMaterialShell (dms)
|
# DankMaterialShell (dms)
|
||||||
|
|
||||||
<div align=center>
|
<div align="center">
|
||||||
|
<a href="https://danklinux.com">
|
||||||
|
<img src="assets/danklogo2.svg" alt="DankMaterialShell Logo" width="200">
|
||||||
|
</a>
|
||||||
|
|
||||||
|
### A modern Wayland desktop shell for the scrolling compositor era
|
||||||
|
|
||||||
|
Built with [Quickshell](https://quickshell.org/) and [Go](https://go.dev/)
|
||||||
|
|
||||||
|
[](https://danklinux.com/docs)
|
||||||
[](https://github.com/AvengeMedia/DankMaterialShell/stargazers)
|
[](https://github.com/AvengeMedia/DankMaterialShell/stargazers)
|
||||||
[](https://github.com/AvengeMedia/DankMaterialShell/blob/master/LICENSE)
|
[](https://github.com/AvengeMedia/DankMaterialShell/blob/master/LICENSE)
|
||||||
[](https://github.com/AvengeMedia/DankMaterialShell/releases)
|
[](https://github.com/AvengeMedia/DankMaterialShell/releases)
|
||||||
[](https://github.com/AvengeMedia/DankMaterialShell/commits/master)
|
|
||||||
[](https://aur.archlinux.org/packages/dms-shell-bin)
|
[](https://aur.archlinux.org/packages/dms-shell-bin)
|
||||||
[)](https://aur.archlinux.org/packages/dms-shell-git)
|
[)](https://aur.archlinux.org/packages/dms-shell-git)
|
||||||
[](https://ko-fi.com/avengemediallc)
|
[](https://ko-fi.com/avengemediallc)
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
A modern Wayland desktop shell built with [Quickshell](https://quickshell.org/) and [Go](https://go.dev/). Optimized for the [niri](https://github.com/YaLTeR/niri), [Hyprland](https://hyprland.org/), [sway](https://swaywm.org/), and [dwl/mangowc](https://github.com/DreamMaoMao/mangowc) compositors.
|
DankMaterialShell is a complete desktop shell for Wayland compositors. It replaces waybar, swaylock, swayidle, mako, fuzzel, polkit, and everything else you'd normally stitch together to make a desktop - all in one cohesive package with a gorgeous interface.
|
||||||
|
|
||||||
Features notifications, app launcher, wallpaper customization, and fully customizable with [plugins](https://github.com/AvengeMedia/dms-plugin-registry).
|
---
|
||||||
|
|
||||||
## Screenshots
|
## See it in Action
|
||||||
|
|
||||||
<div align="center">
|
<div align="center">
|
||||||
<div style="max-width: 700px; margin: 0 auto;">
|
|
||||||
|
|
||||||
https://github.com/user-attachments/assets/1200a739-7770-4601-8b85-695ca527819a
|
https://github.com/user-attachments/assets/1200a739-7770-4601-8b85-695ca527819a
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<details><summary><strong>View More Screenshots</strong></summary>
|
<details><summary><strong>More Screenshots</strong></summary>
|
||||||
|
|
||||||
<br>
|
|
||||||
|
|
||||||
<div align="center">
|
<div align="center">
|
||||||
|
|
||||||
### Desktop Overview
|
<img src="https://github.com/user-attachments/assets/203a9678-c3b7-4720-bb97-853a511ac5c8" width="600" alt="Desktop" />
|
||||||
|
|
||||||
<img src="https://github.com/user-attachments/assets/203a9678-c3b7-4720-bb97-853a511ac5c8" width="600" alt="DankMaterialShell Desktop" />
|
<img src="https://github.com/user-attachments/assets/a937cf35-a43b-4558-8c39-5694ff5fcac4" width="600" alt="Dashboard" />
|
||||||
|
|
||||||
### Dashboard
|
<img src="https://github.com/user-attachments/assets/2da00ea1-8921-4473-a2a9-44a44535a822" width="450" alt="Launcher" />
|
||||||
|
|
||||||
<img width="600" alt="DankDash" src="https://github.com/user-attachments/assets/a937cf35-a43b-4558-8c39-5694ff5fcac4" />
|
<img src="https://github.com/user-attachments/assets/732c30de-5f4a-4a2b-a995-c8ab656cecd5" width="600" alt="Control Center" />
|
||||||
|
|
||||||
### Application Launcher
|
|
||||||
|
|
||||||
<img src="https://github.com/user-attachments/assets/2da00ea1-8921-4473-a2a9-44a44535a822" width="450" alt="Spotlight Launcher" />
|
|
||||||
|
|
||||||
### Control Center
|
|
||||||
|
|
||||||
<img width="600" alt="Control Center" src="https://github.com/user-attachments/assets/732c30de-5f4a-4a2b-a995-c8ab656cecd5" />
|
|
||||||
|
|
||||||
### System Monitor
|
|
||||||
|
|
||||||
<img src="https://github.com/user-attachments/assets/b3c817ec-734d-4974-929f-2d11a1065349" width="600" alt="System Monitor" />
|
|
||||||
|
|
||||||
### Widget Customization
|
|
||||||
|
|
||||||
<img src="https://github.com/user-attachments/assets/903f7c60-146f-4fb3-a75d-a4823828f298" width="500" alt="Widget Customization" />
|
|
||||||
|
|
||||||
### Lock Screen
|
|
||||||
|
|
||||||
<img src="https://github.com/user-attachments/assets/3fa07de2-c1b0-4e57-8f25-3830ac6baf4f" width="600" alt="Lock Screen" />
|
|
||||||
|
|
||||||
### Dynamic Theming
|
|
||||||
|
|
||||||
<img src="https://github.com/user-attachments/assets/a81a68e3-4f7e-4246-8199-0fef1013d4cf" width="700" alt="Auto Theme" />
|
|
||||||
|
|
||||||
### Notification Center
|
|
||||||
|
|
||||||
<img src="https://github.com/user-attachments/assets/07cbde9a-0242-4989-9f97-5765c6458c85" width="350" alt="Notification Center" />
|
|
||||||
|
|
||||||
### Dock
|
|
||||||
|
|
||||||
<img src="https://github.com/user-attachments/assets/e6999daf-f7bf-4329-98fa-0ce4f0e7219c" width="400" alt="Dock" />
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
## Quick start (Arch, Fedora, Debian, Ubuntu, openSUSE)
|
---
|
||||||
|
|
||||||
|
## Quick Install
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
curl -fsSL https://install.danklinux.com | sh
|
curl -fsSL https://install.danklinux.com | sh
|
||||||
```
|
```
|
||||||
*Installs dms & dependencies*
|
|
||||||
|
|
||||||
*Or skip to [Installation](https://github.com/AvengeMedia/DankMaterialShell?tab=readme-ov-file#installation)*
|
That's it. One command installs dms and all dependencies on Arch, Fedora, Debian, Ubuntu, and openSUSE.
|
||||||
|
|
||||||
<details><summary><strong>Features</strong></summary>
|
**[Full installation guide →](https://danklinux.com/docs/dankmaterialshell/installation)**
|
||||||
|
|
||||||
**Core Widgets:**
|
---
|
||||||
- **TopBar**: fully customizable bar where widgets can be added, removed, and re-arranged.
|
|
||||||
- **App Launcher** with fuzzy search, categories, and auto-sorting by most used apps.
|
|
||||||
- **Workspace Switcher** Configurable workspace switcher.
|
|
||||||
- **Focused Window** Displays the currently focused window app name and title.
|
|
||||||
- **Running Apps** A view of all running apps, sorted by monitor, workspace, then position on workspace.
|
|
||||||
- **Media Player** Short form media player with equalizer, song title, and controls.
|
|
||||||
- **Clock** Clock and date widget
|
|
||||||
- **Weather** Weather widget with customizable location
|
|
||||||
- **System Tray** System tray applets with context menus.
|
|
||||||
- **Process Monitor** CPU, RAM, and GPU usage percentages, temperatures. (requires [dgop](https://github.com/AvengeMedia/dgop))
|
|
||||||
- **Power/Battery** Power/Battery widget for battery metrics and power profile changing.
|
|
||||||
- **Notifications** Notification bell with a notification center popup
|
|
||||||
- **Control Center** High-level view of network, bluetooth, and audio status
|
|
||||||
- **Privacy Indicator** Attempts to reveal if a microphone or screen recording session is active, relying on Pipewire data sources
|
|
||||||
- **Idle Inhibitor** Creates a systemd idle inhibitor to prevent sleep/locking from occuring.
|
|
||||||
- **Spotlight Launcher** A central search/launcher - apps, files, emojis, running apps, calculator, command running - and basically anything since it can be enriched with plugins.
|
|
||||||
- **Central Command** A combined music, weather, calendar, and events PopUp.
|
|
||||||
- **Process List** A process list, with system metrics and information. More detailed modal available via IPC.
|
|
||||||
- **Notification Center** A center for notifications that has support for grouping.
|
|
||||||
- **Dock** A dock with pinned apps support, recent apps support, and currently running application support.
|
|
||||||
- **Control Center** A full control center with user profile information, network, bluetooth, audio input/output, display controls, and night mode automation.
|
|
||||||
- **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))
|
|
||||||
- **Notepad** A simple text notepad/scratchpad with auto-save to session data and file export/import functionality.
|
|
||||||
|
|
||||||
</details>
|
## What You Get
|
||||||
|
|
||||||
## Highlights
|
**Dynamic Theming**
|
||||||
|
Wallpaper-based color schemes that automatically theme GTK, Qt, terminals, and more with [matugen](https://github.com/InioX/matugen).
|
||||||
|
|
||||||
- Auto-theming GTK, QT, Terminal apps, and more with [matugen](https://github.com/InioX/matugen) + optional theme generation from wallpaper.
|
**System Monitoring**
|
||||||
- 20+ widgets that can be added and re-arranged on the bar.
|
Real-time CPU, RAM, GPU metrics and temps with [dgop](https://github.com/AvengeMedia/dgop). Full process list with search and management.
|
||||||
- Process list, temperature monitoring, and resource monitoring with [dgop](https://github.com/AvengeMedia/dgop)
|
|
||||||
- Notification service with support for grouping and richtext
|
|
||||||
- App launcher + Spotlighht launcher with fuzzy search
|
|
||||||
- Control center with mpris player, weather, and calendar integration.
|
|
||||||
- Clipboard history view with image previews.
|
|
||||||
- A dock for running apps + pinned apps
|
|
||||||
- Configure bluetooth, wifi, and audio input+output devices.
|
|
||||||
- A lock screen
|
|
||||||
- Idle monitoring - configure auto lock, screen off, suspend, and hibernate with different knobs for battery + AC power.
|
|
||||||
- A greeter
|
|
||||||
- A comprehensive plugin system for endless customization possibilities.
|
|
||||||
|
|
||||||
**TL;DR** *dms replaces your waybar, swaylock, swayidle, hypridle, hyprlock, fuzzels, walker, mako, and basically everything you use to stitch a desktop together*
|
**Powerful Launcher**
|
||||||
|
Spotlight-style search for apps, files, emojis, running windows, calculator, commands - extensible with plugins.
|
||||||
|
|
||||||
## Installation
|
**Control Center**
|
||||||
|
Network, Bluetooth, audio devices, display settings, night mode - all in one clean interface.
|
||||||
|
|
||||||
### Compositor Setup
|
**Smart Notifications**
|
||||||
|
Notification center with grouping, rich text support, and keyboard navigation.
|
||||||
|
|
||||||
DankMaterialShell particularly aims at supporting the **niri**, **Hyprland**, **sway**, and **dwl/MangoWC** compositors, but it does support more wayland compositors with a diminished feature set (no monitor off, workspace switcher, overview integration, etc.):
|
**Media Integration**
|
||||||
|
MPRIS player controls, calendar sync, weather widgets, clipboard history with image previews.
|
||||||
|
|
||||||
**Niri**:
|
**Complete Session Management**
|
||||||
```bash
|
Lock screen, idle detection, auto-lock/suspend with separate AC/battery settings, greeter support.
|
||||||
# Arch Linux
|
|
||||||
sudo pacman -S niri
|
|
||||||
|
|
||||||
# Fedora
|
**Plugin System**
|
||||||
sudo dnf copr enable yalter/niri && sudo dnf install niri
|
Endless customization with the [plugin registry](https://plugins.danklinux.com).
|
||||||
```
|
|
||||||
|
|
||||||
For detailed niri installation instructions, see the [niri Getting Started guide](https://yalter.github.io/niri/Getting-Started.html).
|
**TL;DR** - One shell replaces waybar, swaylock, swayidle, mako, fuzzel, polkit and everything else you normally piece together to create a linux desktop.
|
||||||
|
|
||||||
**Hyprland**:
|
---
|
||||||
```bash
|
|
||||||
# Arch Linux
|
|
||||||
sudo pacman -S hyprland
|
|
||||||
|
|
||||||
# Or from AUR for latest
|
## Supported Compositors
|
||||||
paru -S hyprland-git
|
|
||||||
|
|
||||||
# Fedora
|
DankMaterialShell works best with **[niri](https://github.com/YaLTeR/niri)**, **[Hyprland](https://hyprland.org/)**, **[sway](https://swaywm.org/)**, and **[dwl/MangoWC](https://github.com/DreamMaoMao/mangowc)** - with full workspace switching, overview integration, and monitor management.
|
||||||
sudo dnf install hyprland
|
|
||||||
|
|
||||||
# Or use Copr for latest builds
|
Other Wayland compositors work too, just with a reduced feature set.
|
||||||
sudo dnf copr enable solopasha/hyprland && sudo dnf install hyprland
|
|
||||||
```
|
|
||||||
|
|
||||||
For detailed Hyprland installation instructions, see the [Hyprland wiki](https://wiki.hypr.land/Getting-Started/Installation/).
|
**[Compositor configuration guide →](https://danklinux.com/docs/dankmaterialshell/compositors)**
|
||||||
|
|
||||||
**sway/dwl (MangoWC)**:
|
---
|
||||||
|
|
||||||
TODO - not documented.
|
## Keybinds & IPC
|
||||||
|
|
||||||
### Dank Shell Installation
|
Control everything from the command line or keybinds:
|
||||||
|
|
||||||
*feel free to contribute steps for other distributions*
|
|
||||||
|
|
||||||
#### Arch Linux - via AUR
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Stable release
|
|
||||||
paru -S dms-shell-bin
|
|
||||||
# Latest -git
|
|
||||||
paru -S dms-shell-git
|
|
||||||
```
|
|
||||||
|
|
||||||
#### Fedora - via COPR
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Stable release
|
|
||||||
sudo dnf copr enable avengemedia/dms && sudo dnf install dms
|
|
||||||
# Latest -git
|
|
||||||
sudo dnf copr enable avengemedia/dms-git && sudo dnf install dms
|
|
||||||
```
|
|
||||||
|
|
||||||
#### NixOS - via flake
|
|
||||||
|
|
||||||
```bash
|
|
||||||
nix profile install github:AvengeMedia/DankMaterialShell
|
|
||||||
```
|
|
||||||
|
|
||||||
#### NixOS - via home-manager
|
|
||||||
|
|
||||||
To install using home-manager, you need to add this repo into your flake inputs:
|
|
||||||
|
|
||||||
``` nix
|
|
||||||
dgop = {
|
|
||||||
url = "github:AvengeMedia/dgop";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
};
|
|
||||||
dms-cli = {
|
|
||||||
url = "github:AvengeMedia/danklinux";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
};
|
|
||||||
dankMaterialShell = {
|
|
||||||
url = "github:AvengeMedia/DankMaterialShell";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
inputs.dgop.follows = "dgop";
|
|
||||||
inputs.dms-cli.follows = "dms-cli";
|
|
||||||
};
|
|
||||||
```
|
|
||||||
|
|
||||||
Then somewhere in your home-manager config, add this to the imports:
|
|
||||||
|
|
||||||
``` nix
|
|
||||||
imports = [
|
|
||||||
inputs.dankMaterialShell.homeModules.dankMaterialShell.default
|
|
||||||
];
|
|
||||||
```
|
|
||||||
|
|
||||||
If you use Niri, the `niri` homeModule provides additional options for Niri integration, such as key bindings and spawn:
|
|
||||||
|
|
||||||
``` nix
|
|
||||||
imports = [
|
|
||||||
inputs.dankMaterialShell.homeModules.dankMaterialShell.default
|
|
||||||
inputs.dankMaterialShell.homeModules.dankMaterialShell.niri
|
|
||||||
];
|
|
||||||
```
|
|
||||||
|
|
||||||
> [!IMPORTANT]
|
|
||||||
> To use the `niri` homeModule, you must have `sobidoo/niri-flake` in your inputs:
|
|
||||||
|
|
||||||
``` nix
|
|
||||||
niri = {
|
|
||||||
url = "github:sodiboo/niri-flake";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
};
|
|
||||||
```
|
|
||||||
|
|
||||||
And import it in home-manager:
|
|
||||||
|
|
||||||
``` nix
|
|
||||||
imports = [
|
|
||||||
inputs.niri.homeModules.niri
|
|
||||||
];
|
|
||||||
```
|
|
||||||
|
|
||||||
Now you can enable it with:
|
|
||||||
|
|
||||||
``` nix
|
|
||||||
programs.dankMaterialShell.enable = true;
|
|
||||||
```
|
|
||||||
|
|
||||||
There 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.
|
|
||||||
|
|
||||||
#### Other Distributions - via manual installation
|
|
||||||
|
|
||||||
#### 1. Install Quickshell (Varies by Distribution)
|
|
||||||
```bash
|
|
||||||
# Arch
|
|
||||||
paru -S quickshell-git
|
|
||||||
# Fedora
|
|
||||||
sudo dnf copr enable avengemedia/danklinux && sudo dnf install quickshell-git
|
|
||||||
# ! TODO - document other distros
|
|
||||||
```
|
|
||||||
|
|
||||||
#### 2. Install the shell
|
|
||||||
|
|
||||||
#### 2.1. Clone latest QML
|
|
||||||
|
|
||||||
```bash
|
|
||||||
mkdir ~/.config/quickshell && git clone https://github.com/AvengeMedia/DankMaterialShell.git ~/.config/quickshell/dms
|
|
||||||
```
|
|
||||||
|
|
||||||
**FOR Stable Version, Checkout the latest tag**
|
|
||||||
|
|
||||||
```bash
|
|
||||||
cd ~/.config/quickshell/dms
|
|
||||||
# You'll have to re-run this, to update to the latest version.
|
|
||||||
git checkout $(git describe --tags --abbrev=0)
|
|
||||||
```
|
|
||||||
|
|
||||||
#### 2.2. Install latest dms CLI
|
|
||||||
|
|
||||||
```bash
|
|
||||||
sudo 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 > /dev/null && chmod +x /usr/local/bin/dms"
|
|
||||||
```
|
|
||||||
**Note:** this is the latest *stable* dms CLI. If you are using QML/master (not pinned to a tag), then you may periodically be missing features, etc.
|
|
||||||
|
|
||||||
If preferred, you can build the dms-cli yourself (requires GO 1.24+)
|
|
||||||
|
|
||||||
```bash
|
|
||||||
git clone https://github.com/AvengeMedia/danklinux.git && cd danklinux
|
|
||||||
make && sudo make install
|
|
||||||
```
|
|
||||||
|
|
||||||
#### 3. Optional Features (system monitoring, clipboard history, brightness controls, etc.)
|
|
||||||
|
|
||||||
#### 3.1 Core optional dependencies
|
|
||||||
```bash
|
|
||||||
# Arch Linux
|
|
||||||
sudo pacman -S cava wl-clipboard cliphist brightnessctl qt6-multimedia accountsservice
|
|
||||||
paru -S matugen-bin dgop
|
|
||||||
|
|
||||||
# Fedora
|
|
||||||
sudo dnf install cava wl-clipboard brightnessctl qt6-qtmultimedia accountsservice
|
|
||||||
sudo dnf copr enable avengemedia/danklinux && sudo dnf install cliphist ghostty hyprpicker matugen
|
|
||||||
```
|
|
||||||
Note: by enabling and installing the avengemedia/dms copr above, these core dependencies will automatically be available for use.
|
|
||||||
|
|
||||||
*Other distros will just need to find sources for the above packages*
|
|
||||||
|
|
||||||
#### 3.2 - dgop manual installation
|
|
||||||
|
|
||||||
`dgop` is available via AUR and a nix flake, other distributions can install it manually.
|
|
||||||
|
|
||||||
```bash
|
|
||||||
sudo 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 > /dev/null && chmod +x /usr/local/bin/dgop"
|
|
||||||
```
|
|
||||||
|
|
||||||
**Optional Requirement Overview**
|
|
||||||
|
|
||||||
- `dgop`: Ability to have system resource widgets, process list modal, and temperature monitoring.
|
|
||||||
- `matugen`: Wallpaper-based dynamic theming
|
|
||||||
- `brightnessctl`: Backlight and LED brightness control
|
|
||||||
- `wl-clipboard`: Required for copying various elements to clipboard.
|
|
||||||
- `cava`: Audio visualizer
|
|
||||||
- `cliphist`: Clipboard history
|
|
||||||
- `qt6-multimedia`: System sound support
|
|
||||||
- `accountsservice`: Ability to sync
|
|
||||||
|
|
||||||
## Compositor Configuration
|
|
||||||
|
|
||||||
A lot of options are subject to personal preference, but the below sets a good starting point for most features.
|
|
||||||
|
|
||||||
### Systemd Autostart
|
|
||||||
|
|
||||||
**Alternative to compositor-specific autostart**: If you installed DMS from the Fedora Copr repository, you can use systemd to manage DMS autostart instead of adding `dms run` to your compositor config.
|
|
||||||
|
|
||||||
**Benefits:**
|
|
||||||
- Works across all Wayland compositors (niri, Hyprland, sway, dwl, etc.)
|
|
||||||
- Centralized control via systemctl
|
|
||||||
- Automatic restart on failure
|
|
||||||
- Integrated logging via journalctl
|
|
||||||
|
|
||||||
**Enable autostart:**
|
|
||||||
```bash
|
|
||||||
systemctl --user enable dms.service
|
|
||||||
```
|
|
||||||
|
|
||||||
**Manual control:**
|
|
||||||
```bash
|
|
||||||
# Start DMS now
|
|
||||||
systemctl --user start dms.service
|
|
||||||
|
|
||||||
# Check status
|
|
||||||
systemctl --user status dms.service
|
|
||||||
|
|
||||||
# View logs
|
|
||||||
journalctl --user -u dms.service -f
|
|
||||||
|
|
||||||
# Restart DMS
|
|
||||||
systemctl --user restart dms.service
|
|
||||||
|
|
||||||
# Disable autostart
|
|
||||||
systemctl --user disable dms.service
|
|
||||||
```
|
|
||||||
|
|
||||||
**Note:** If using systemd autostart, remove `dms run` / `spawn "dms" "run"` from your compositor's configuration to avoid running DMS twice.
|
|
||||||
|
|
||||||
### niri Integration
|
|
||||||
|
|
||||||
Add to your niri config
|
|
||||||
|
|
||||||
```kdl
|
|
||||||
// Required for clipboard history integration
|
|
||||||
spawn-at-startup "bash" "-c" "wl-paste --watch cliphist store &"
|
|
||||||
|
|
||||||
// Recommended (must install polkit-mate before hand) for elevation prompts
|
|
||||||
spawn-at-startup "/usr/lib/mate-polkit/polkit-mate-authentication-agent-1"
|
|
||||||
// This may be a different path on different distributions, the above is for the arch linux mate-polkit package
|
|
||||||
|
|
||||||
// Starts DankShell
|
|
||||||
spawn-at-startup "dms" "run"
|
|
||||||
|
|
||||||
// If using niri newer than 271534e115e5915231c99df287bbfe396185924d (~aug 17 2025)
|
|
||||||
// you can add this to disable built in config load errors since dank shell provides this
|
|
||||||
config-notification {
|
|
||||||
disable-failed
|
|
||||||
}
|
|
||||||
|
|
||||||
// Dank keybinds
|
|
||||||
// 1. These should not be in conflict with any pre-existing keybindings
|
|
||||||
// 2. You need to merge them with your existing config if you want to use these
|
|
||||||
// 3. You can change the keys to whatever you want, if you prefer something different
|
|
||||||
// 4. For the increment/decrement ones you can change the steps to whatever you like too
|
|
||||||
binds {
|
|
||||||
Mod+Space hotkey-overlay-title="Application Launcher" {
|
|
||||||
spawn "dms" "ipc" "call" "spotlight" "toggle";
|
|
||||||
}
|
|
||||||
Mod+V hotkey-overlay-title="Clipboard Manager" {
|
|
||||||
spawn "dms" "ipc" "call" "clipboard" "toggle";
|
|
||||||
}
|
|
||||||
Mod+M hotkey-overlay-title="Task Manager" {
|
|
||||||
spawn "dms" "ipc" "call" "processlist" "toggle";
|
|
||||||
}
|
|
||||||
Mod+N hotkey-overlay-title="Notification Center" {
|
|
||||||
spawn "dms" "ipc" "call" "notifications" "toggle";
|
|
||||||
}
|
|
||||||
Mod+Comma hotkey-overlay-title="Settings" {
|
|
||||||
spawn "dms" "ipc" "call" "settings" "toggle";
|
|
||||||
}
|
|
||||||
Mod+P hotkey-overlay-title="Notepad" {
|
|
||||||
spawn "dms" "ipc" "call" "notepad" "toggle";
|
|
||||||
}
|
|
||||||
Super+Alt+L hotkey-overlay-title="Lock Screen" {
|
|
||||||
spawn "dms" "ipc" "call" "lock" "lock";
|
|
||||||
}
|
|
||||||
Mod+X hotkey-overlay-title="Power Menu" {
|
|
||||||
spawn "dms" "ipc" "call" "powermenu" "toggle";
|
|
||||||
}
|
|
||||||
Mod+C hotkey-overlay-title="Control Center" {
|
|
||||||
spawn "dms" "ipc" "call" "control-center" "toggle";
|
|
||||||
}
|
|
||||||
Mod+Y hotkey-overlay-title="Browse Wallpapers" {
|
|
||||||
spawn "dms" "ipc" "call" "dankdash" "wallpaper";
|
|
||||||
}
|
|
||||||
XF86AudioRaiseVolume allow-when-locked=true {
|
|
||||||
spawn "dms" "ipc" "call" "audio" "increment" "3";
|
|
||||||
}
|
|
||||||
XF86AudioLowerVolume allow-when-locked=true {
|
|
||||||
spawn "dms" "ipc" "call" "audio" "decrement" "3";
|
|
||||||
}
|
|
||||||
XF86AudioMute allow-when-locked=true {
|
|
||||||
spawn "dms" "ipc" "call" "audio" "mute";
|
|
||||||
}
|
|
||||||
XF86AudioMicMute allow-when-locked=true {
|
|
||||||
spawn "dms" "ipc" "call" "audio" "micmute";
|
|
||||||
}
|
|
||||||
XF86MonBrightnessUp allow-when-locked=true {
|
|
||||||
spawn "dms" "ipc" "call" "brightness" "increment" "5" "";
|
|
||||||
}
|
|
||||||
// You can override the default device for e.g. keyboards by adding the device name to the last param
|
|
||||||
XF86MonBrightnessDown allow-when-locked=true {
|
|
||||||
spawn "dms" "ipc" "call" "brightness" "decrement" "5" "";
|
|
||||||
}
|
|
||||||
// Night mode toggle
|
|
||||||
Mod+Shift+N allow-when-locked=true {
|
|
||||||
spawn "dms" "ipc" "call" "night" "toggle";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// You probably want this too
|
|
||||||
debug {
|
|
||||||
honor-xdg-activation-with-invalid-serial
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
#### niri - place wallpaper on overview (blurred or non-blurred)
|
|
||||||
|
|
||||||
Place the wallpaper on backdrop using a layer-rule for a contiguous surface.
|
|
||||||
|
|
||||||
```kdl
|
|
||||||
layer-rule {
|
|
||||||
match namespace="quickshell"
|
|
||||||
place-within-backdrop true
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
If using "Blur Layer" option, you may want the blurred layer to appear on overview only, that can be done with some layer rules:
|
|
||||||
|
|
||||||
```kdl
|
|
||||||
layer-rule {
|
|
||||||
match namespace="dms:blurwallpaper"
|
|
||||||
place-within-backdrop true
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
#### niri theming
|
|
||||||
|
|
||||||
If 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.
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# For colors
|
|
||||||
echo -e 'include "dms/colors.kdl"' >> ~/.config/niri/config.kdl
|
|
||||||
# For gaps, border widths, certain window rules
|
|
||||||
echo -e 'include "dms/layout.kdl"' >> ~/.config/niri/config.kdl
|
|
||||||
```
|
|
||||||
|
|
||||||
### Hyprland Integration
|
|
||||||
|
|
||||||
Add to your Hyprland config (`~/.config/hypr/hyprland.conf`):
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Required for clipboard history integration
|
|
||||||
exec-once = bash -c "wl-paste --watch cliphist store &"
|
|
||||||
|
|
||||||
# Recommended (must install polkit-mate beforehand) for elevation prompts
|
|
||||||
exec-once = /usr/lib/mate-polkit/polkit-mate-authentication-agent-1
|
|
||||||
# This may be a different path on different distributions, the above is for the arch linux mate-polkit package
|
|
||||||
|
|
||||||
# Starts DankShell
|
|
||||||
exec-once = dms run
|
|
||||||
|
|
||||||
# Dank keybinds
|
|
||||||
# 1. These should not be in conflict with any pre-existing keybindings
|
|
||||||
# 2. You need to merge them with your existing config if you want to use these
|
|
||||||
# 3. You can change the keys to whatever you want, if you prefer something different
|
|
||||||
# 4. For the increment/decrement ones you can change the steps to whatever you like too
|
|
||||||
|
|
||||||
# Application and system controls
|
|
||||||
bind = SUPER, Space, exec, dms ipc call spotlight toggle
|
|
||||||
bind = SUPER, V, exec, dms ipc call clipboard toggle
|
|
||||||
bind = SUPER, M, exec, dms ipc call processlist toggle
|
|
||||||
bind = SUPER, N, exec, dms ipc call notifications toggle
|
|
||||||
bind = SUPER, comma, exec, dms ipc call settings toggle
|
|
||||||
bind = SUPER, P, exec, dms ipc call notepad toggle
|
|
||||||
bind = SUPERALT, L, exec, dms ipc call lock lock
|
|
||||||
bind = SUPER, X, exec, dms ipc call powermenu toggle
|
|
||||||
bind = SUPER, Y, exec, dms ipc call dankdash wallpaper
|
|
||||||
bind = SUPER, C, exec, dms ipc call control-center toggle
|
|
||||||
bind = SUPER, TAB, exec, dms ipc call hypr toggleOverview
|
|
||||||
|
|
||||||
# Audio controls (function keys)
|
|
||||||
bindl = , XF86AudioRaiseVolume, exec, dms ipc call audio increment 3
|
|
||||||
bindl = , XF86AudioLowerVolume, exec, dms ipc call audio decrement 3
|
|
||||||
bindl = , XF86AudioMute, exec, dms ipc call audio mute
|
|
||||||
bindl = , XF86AudioMicMute, exec, dms ipc call audio micmute
|
|
||||||
|
|
||||||
# Brightness controls (function keys)
|
|
||||||
bindl = , XF86MonBrightnessUp, exec, dms ipc call brightness increment 5 ""
|
|
||||||
# You can override the default device for e.g. keyboards by adding the device name to the last param
|
|
||||||
bindl = , XF86MonBrightnessDown, exec, dms ipc call brightness decrement 5 ""
|
|
||||||
|
|
||||||
# Night mode toggle
|
|
||||||
bind = SUPERSHIFT, N, exec, dms ipc call night toggle
|
|
||||||
```
|
|
||||||
|
|
||||||
## Greeter
|
|
||||||
|
|
||||||
You can install a matching [greetd](https://github.com/kennylevinsen/greetd) greeter, that will give you a greeter that matches the lock screen.
|
|
||||||
|
|
||||||
It's as simple as running `dms greeter install` in most cases, but more information is in the [Greetd module](Modules/Greetd/README.md)
|
|
||||||
|
|
||||||
## IPC Commands
|
|
||||||
|
|
||||||
Control everything from the command line, or via keybinds. For comprehensive documentation of all available IPC commands, see [docs/IPC.md](docs/IPC.md).
|
|
||||||
|
|
||||||
### Audio control
|
|
||||||
```bash
|
|
||||||
dms ipc call audio setvolume 50
|
|
||||||
dms ipc call audio mute
|
|
||||||
```
|
|
||||||
### Launch applications
|
|
||||||
```bash
|
```bash
|
||||||
dms ipc call spotlight toggle
|
dms ipc call spotlight toggle
|
||||||
dms ipc call notepad toggle
|
dms ipc call audio setvolume 50
|
||||||
dms ipc call processlist toggle
|
|
||||||
dms ipc call powermenu toggle
|
|
||||||
```
|
|
||||||
### System control
|
|
||||||
```
|
|
||||||
dms ipc call wallpaper set /path/to/image.jpg
|
dms ipc call wallpaper set /path/to/image.jpg
|
||||||
dms ipc call theme toggle
|
dms ipc call theme toggle
|
||||||
dms ipc call night toggle
|
|
||||||
dms ipc call lock lock
|
|
||||||
```
|
|
||||||
### Media control
|
|
||||||
```
|
|
||||||
dms ipc call mpris playPause
|
|
||||||
dms ipc call mpris next
|
|
||||||
```
|
```
|
||||||
|
|
||||||
|
**[Full keybind and IPC documentation →](https://danklinux.com/docs/dankmaterialshell/keybinds-ipc)**
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## Theming
|
## Theming
|
||||||
|
|
||||||
dms 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.
|
DankMaterialShell automatically generates color schemes from your wallpaper and applies them to GTK, Qt, terminals, and more.
|
||||||
|
|
||||||
### Custom Themes
|
**Application theming:** [GTK, Qt, Firefox, terminals →](https://danklinux.com/docs/dankmaterialshell/application-themes)
|
||||||
|
|
||||||
DankMaterialShell 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.
|
**Custom themes:** [Create your own color schemes →](https://danklinux.com/docs/dankmaterialshell/custom-themes)
|
||||||
|
|
||||||
For detailed instructions on creating and using custom themes, see [docs/CUSTOM_THEMES.md](docs/CUSTOM_THEMES.md).
|
---
|
||||||
|
|
||||||
### System App Integration
|
|
||||||
|
|
||||||
There's two toggles in the appearance section of settings, for GTK and QT apps.
|
|
||||||
|
|
||||||
These 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.
|
|
||||||
|
|
||||||
No matter what when matugen is enabled the files will be created on wallpaper changes:
|
|
||||||
|
|
||||||
- ~/.config/gtk-3.0/dank-colors.css
|
|
||||||
- ~/.config/gtk-4.0/dank-colors.css
|
|
||||||
- ~/.config/qt6ct/colors/matugen.conf
|
|
||||||
- ~/.config/qt5ct/colors/matugen.conf
|
|
||||||
|
|
||||||
If you do not like our theme path, you can integrate this with other GTK themes, matugen themes, etc.
|
|
||||||
|
|
||||||
#### GTK Apps
|
|
||||||
|
|
||||||
1. Install adw-gtk3
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Arch
|
|
||||||
sudo pacman -S adw-gtk-theme
|
|
||||||
# Fedora
|
|
||||||
sudo dnf install adw-gtk3-theme
|
|
||||||
```
|
|
||||||
|
|
||||||
In dms settings, navigate to Theme & Colors, and "apply GTK themes"
|
|
||||||
|
|
||||||
This will create symlinks from `~/.config/gtk-3.0/4.0/dank-colors.css` to `~/.config/gtk-3.0/4.0/gtk.css` which enables theming.
|
|
||||||
|
|
||||||
#### QT: basic gtk3 based theme (Option 1)
|
|
||||||
|
|
||||||
If you mostly use gtk apps, you'll probably be happy to just set the QT platform theme to gtk3.
|
|
||||||
|
|
||||||
```kdl
|
|
||||||
environment {
|
|
||||||
// Add to existing environment block
|
|
||||||
QT_QPA_PLATFORMTHEME "gtk3"
|
|
||||||
QT_QPA_PLATFORMTHEME_QT6 "gtk3"
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
#### QT: better theming (Option 2)
|
|
||||||
|
|
||||||
1. Install qt6ct-kde
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Arch
|
|
||||||
paru -S qt6ct-kde
|
|
||||||
```
|
|
||||||
|
|
||||||
*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)
|
|
||||||
|
|
||||||
2. **Configure Environment in niri**
|
|
||||||
|
|
||||||
```kdl
|
|
||||||
// Add to existing environment block
|
|
||||||
QT_QPA_PLATFORMTHEME "qt6ct"
|
|
||||||
QT_QPA_PLATFORMTHEME_QT6 "qt6ct"
|
|
||||||
```
|
|
||||||
|
|
||||||
You'll have to restart your session for themes to take effect.
|
|
||||||
|
|
||||||
Nevigate to dms settings -> themes & colors -> and click "Apply QT Themes"
|
|
||||||
|
|
||||||
#### Firefox
|
|
||||||
|
|
||||||
There are two theme paths for Firefox, using with [pywalfox](https://github.com/Frewacom/pywalfox) or [material fox](https://github.com/edelvarden/material-fox-updated)
|
|
||||||
|
|
||||||
**(Option 1) - pywalfox**
|
|
||||||
|
|
||||||
1. **Install [pywalfox](https://github.com/Frewacom/pywalfox)** on system.
|
|
||||||
- Available in AUR via `paru -S python-pywalfox`
|
|
||||||
|
|
||||||
2. **Install [pywalfox extension](https://addons.mozilla.org/firefox/addon/pywalfox/)** in firefox.
|
|
||||||
|
|
||||||
3. **Restart dms and create symlink** to generate palette and then enable dank colors.
|
|
||||||
- Run `ln -sf ~/.cache/wal/dank-pywalfox.json ~/.cache/wal/colors.json`
|
|
||||||
|
|
||||||
|
|
||||||
**(Option 2) - Chrome-like theme with dynamic colors**
|
|
||||||
|
|
||||||
Firefox 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.
|
|
||||||
|
|
||||||
1. **In firefox, navigate to `about:config`**
|
|
||||||
- set `toolkit.legacyuserprofilecustomizations.stylesheets` to `true`
|
|
||||||
- set `svg.context-properties.content.enabled` to `true`
|
|
||||||
- Create a new property called `userChrome.theme-material` and type `boolean`
|
|
||||||
- set to `true`
|
|
||||||
|
|
||||||
<details><summary><strong>Expand for firefox screenshots</strong></summary>
|
|
||||||
<img width="1262" height="104" alt="image" src="https://github.com/user-attachments/assets/4bca43d1-5735-4401-9b91-5ee4f0b1e357" />
|
|
||||||
<img width="1262" height="104" alt="image" src="https://github.com/user-attachments/assets/348d37e0-5c6c-4db8-b7c9-89cabf282c25" />
|
|
||||||
<img width="1244" height="106" alt="image" src="https://github.com/user-attachments/assets/75fd4972-bc4a-4657-b756-b31ef8061b3b" />
|
|
||||||
</details>
|
|
||||||
|
|
||||||
2. **Install material fox theme**
|
|
||||||
```bash
|
|
||||||
# Find Firefox profile directory
|
|
||||||
export PROFILE_DIR=$(find ~/.mozilla/firefox -maxdepth 1 -type d -name "*.default-release" | head -n 1)
|
|
||||||
|
|
||||||
# Download, extract to profile dir, and cleanup
|
|
||||||
curl -L -o "$PROFILE_DIR/chrome.zip" https://github.com/edelvarden/material-fox-updated/releases/download/v2.0.0/chrome.zip
|
|
||||||
unzip -o "$PROFILE_DIR/chrome.zip" -d "$PROFILE_DIR"
|
|
||||||
rm "$PROFILE_DIR/chrome.zip"
|
|
||||||
```
|
|
||||||
|
|
||||||
3. **Configure dynamic colors for material fox theme**
|
|
||||||
```bash
|
|
||||||
export PROFILE_DIR=$(find ~/.mozilla/firefox -maxdepth 1 -type d -name "*.default-release" | head -n 1)
|
|
||||||
rm -f "$PROFILE_DIR/chrome/theme-material-blue.css"
|
|
||||||
ln -sf ~/.config/DankMaterialShell/firefox.css "$PROFILE_DIR/chrome/theme-material-blue.css"
|
|
||||||
```
|
|
||||||
|
|
||||||
### Terminal Integration
|
|
||||||
|
|
||||||
The matugen integration will automatically generate new colors for certain apps only if they are installed.
|
|
||||||
|
|
||||||
You can enable the dynamic color schemes in supported terminal apps by modifying their configurations:
|
|
||||||
|
|
||||||
**Ghostty**:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
echo "config-file = ./config-dankcolors" >> ~/.config/ghostty/config
|
|
||||||
```
|
|
||||||
|
|
||||||
If you want to disable excessive config reloaded popup sin ghostty, you may wish to also add this:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# These are the default danklinux options, if you still want config reloaded and copied to clipboard popups you can skip it.
|
|
||||||
echo "app-notifications = no-clipboard-copy,no-config-reload" >> ~/.config/ghostty/config
|
|
||||||
```
|
|
||||||
|
|
||||||
**kitty**:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
echo "include dank-theme.conf" >> ~/.config/kitty/kitty.conf
|
|
||||||
```
|
|
||||||
|
|
||||||
## Plugins
|
## Plugins
|
||||||
|
|
||||||
[Plugin registry](https://github.com/AvengeMedia/dms-plugin-registry) - collection of available dms plugins.
|
Extend dms with the plugin system. Browse community plugins at [plugins.danklinux.com](https://plugins.danklinux.com).
|
||||||
|
|
||||||
dms features a plugin system - meaning you can create your own widgets and load other user widgets.
|
**[Plugin development guide →](https://danklinux.com/docs/dankmaterialshell/plugins-overview)**
|
||||||
|
|
||||||
More 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.
|
---
|
||||||
|
|
||||||
Install an example plugin by:
|
## Documentation
|
||||||
|
|
||||||
```bash
|
**Website:** [danklinux.com](https://danklinux.com)
|
||||||
mkdir ~/.config/DankMaterialShell/plugins
|
|
||||||
cp -R ./PLUGINS/ExampleEmojiPlugin ~/.config/DankMaterialShell/plugins
|
|
||||||
```
|
|
||||||
|
|
||||||
**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.
|
**Docs:** [danklinux.com/docs](https://danklinux.com/docs)
|
||||||
|
|
||||||
### NixOS - via home-manager
|
**Support:** [Ko-fi](https://ko-fi.com/avengemediallc)
|
||||||
|
|
||||||
Add the following to your home-manager config to install a plugin:
|
---
|
||||||
|
|
||||||
```nix
|
|
||||||
programs.dankMaterialShell.plugins = {
|
|
||||||
ExampleEmojiPlugin.src = "${inputs.dankMaterialShell}/PLUGINS/ExampleEmojiPlugin";
|
|
||||||
};
|
|
||||||
```
|
|
||||||
|
|
||||||
### Calendar Setup
|
|
||||||
|
|
||||||
Sync your caldev compatible calendar (Google, Office365, etc.) for dashboard integration:
|
|
||||||
|
|
||||||
<details><summary>Configuration Steps</summary>
|
|
||||||
|
|
||||||
**Install dependencies:**
|
|
||||||
|
|
||||||
#### Arch
|
|
||||||
```bash
|
|
||||||
sudo pacman -S vdirsyncer khal python-aiohttp-oauthlib
|
|
||||||
```
|
|
||||||
|
|
||||||
#### Fedora
|
|
||||||
```bash
|
|
||||||
sudo dnf install python3-vdirsyncer khal python3-aiohttp-oauthlib
|
|
||||||
```
|
|
||||||
|
|
||||||
**Configure vdirsyncer** (`~/.vdirsyncer/config`):
|
|
||||||
|
|
||||||
```ini
|
|
||||||
[general]
|
|
||||||
status_path = "~/.calendars/status"
|
|
||||||
|
|
||||||
[pair personal_sync]
|
|
||||||
a = "personal"
|
|
||||||
b = "personallocal"
|
|
||||||
collections = ["from a", "from b"]
|
|
||||||
conflict_resolution = "a wins"
|
|
||||||
metadata = ["color"]
|
|
||||||
|
|
||||||
[storage personal]
|
|
||||||
type = "google_calendar"
|
|
||||||
token_file = "~/.vdirsyncer/google_calendar_token"
|
|
||||||
client_id = "your_client_id"
|
|
||||||
client_secret = "your_client_secret"
|
|
||||||
|
|
||||||
[storage personallocal]
|
|
||||||
type = "filesystem"
|
|
||||||
path = "~/.calendars/Personal"
|
|
||||||
fileext = ".ics"
|
|
||||||
```
|
|
||||||
|
|
||||||
**Setup sync:**
|
|
||||||
|
|
||||||
```bash
|
|
||||||
vdirsyncer sync
|
|
||||||
khal configure
|
|
||||||
```
|
|
||||||
|
|
||||||
#### Auto-sync every 5 minutes
|
|
||||||
```bash
|
|
||||||
crontab -e
|
|
||||||
# Add: */5 * * * * /usr/bin/vdirsyncer sync
|
|
||||||
```
|
|
||||||
|
|
||||||
</details>
|
|
||||||
|
|
||||||
## Configuration
|
|
||||||
|
|
||||||
All settings are configurable in
|
|
||||||
```
|
|
||||||
~/.config/DankMaterialShell/settings.json`, or more intuitively the built-in settings modal.
|
|
||||||
```
|
|
||||||
|
|
||||||
**Key configuration areas:**
|
|
||||||
|
|
||||||
- Widget positioning and behavior
|
|
||||||
- Theme and color preferences
|
|
||||||
- Time format, weather units and location
|
|
||||||
- Light/Dark modes
|
|
||||||
- Wallpaper and Profile picture
|
|
||||||
- Dock enable/disable and various tunes.
|
|
||||||
|
|
||||||
## Troubleshooting
|
|
||||||
|
|
||||||
**Common issues:**
|
|
||||||
|
|
||||||
- **No dynamic theming:** Install matugen and enable in settings
|
|
||||||
- **Qt apps not themed:** Configure qt5ct/qt6ct and set QT_QPA_PLATFORMTHEME
|
|
||||||
- **Calendar not syncing:** Check vdirsyncer credentials and network connectivity
|
|
||||||
|
|
||||||
**Getting help:**
|
|
||||||
|
|
||||||
- Check the [issues](https://github.com/AvengeMedia/DankMaterialShell/issues) for known problems
|
|
||||||
- Re-run the shell with `dms kill && dms run` to capture logs.
|
|
||||||
- Join the niri community for compositor-specific questions
|
|
||||||
|
|
||||||
## Contributing
|
## Contributing
|
||||||
|
|
||||||
DankMaterialShell welcomes contributions! Whether it's bug fixes, new widgets, theme improvements, or documentation updates - all help is appreciated.
|
Contributions welcome! Bug fixes, new widgets, theme improvements, or docs - it all helps.
|
||||||
|
|
||||||
**Areas that need attention:**
|
Check the [issues](https://github.com/AvengeMedia/DankMaterialShell/issues) or join the community.
|
||||||
|
|
||||||
- More widget options and customization
|
---
|
||||||
- Additional compositor compatibility
|
|
||||||
- Performance optimizations
|
|
||||||
- Documentation and examples
|
|
||||||
|
|
||||||
## Credits
|
## Credits
|
||||||
|
|
||||||
|
|||||||
113
assets/danklogo2.svg
Normal file
113
assets/danklogo2.svg
Normal file
@@ -0,0 +1,113 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
version="1.1"
|
||||||
|
id="svg1"
|
||||||
|
width="482.90668"
|
||||||
|
height="558.15088"
|
||||||
|
viewBox="0 0 482.90667 558.15088"
|
||||||
|
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
shape-rendering="auto"
|
||||||
|
style="image-rendering: auto; filter: url(#smoothing);">
|
||||||
|
<defs
|
||||||
|
id="defs1">
|
||||||
|
<filter id="smoothing" x="-0.05" y="-0.05" width="1.1" height="1.1">
|
||||||
|
<feGaussianBlur in="SourceGraphic" stdDeviation="0.5" />
|
||||||
|
</filter>
|
||||||
|
<color-profile
|
||||||
|
name="sRGB IEC61966-2.1"
|
||||||
|
xlink:href="data:application/vnd.iccprofile;base64,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"
|
||||||
|
id="color-profile1" />
|
||||||
|
<clipPath
|
||||||
|
clipPathUnits="userSpaceOnUse"
|
||||||
|
id="clipPath21">
|
||||||
|
<path
|
||||||
|
d="M 0,1200 H 2000 V 0 H 0 Z"
|
||||||
|
transform="translate(-673.87432,-704.25842)"
|
||||||
|
id="path21" />
|
||||||
|
</clipPath>
|
||||||
|
<clipPath
|
||||||
|
clipPathUnits="userSpaceOnUse"
|
||||||
|
id="clipPath25">
|
||||||
|
<path
|
||||||
|
d="M 0,1200 H 2000 V 0 H 0 Z"
|
||||||
|
transform="translate(-466.30451,-703.59782)"
|
||||||
|
id="path25" />
|
||||||
|
</clipPath>
|
||||||
|
<clipPath
|
||||||
|
clipPathUnits="userSpaceOnUse"
|
||||||
|
id="clipPath27">
|
||||||
|
<path
|
||||||
|
d="M 0,1200 H 2000 V 0 H 0 Z"
|
||||||
|
transform="translate(-695.28002,-473.92741)"
|
||||||
|
id="path27" />
|
||||||
|
</clipPath>
|
||||||
|
<clipPath
|
||||||
|
clipPathUnits="userSpaceOnUse"
|
||||||
|
id="clipPath29">
|
||||||
|
<path
|
||||||
|
d="M 0,1200 H 2000 V 0 H 0 Z"
|
||||||
|
transform="translate(-457.93881,-632.99062)"
|
||||||
|
id="path29" />
|
||||||
|
</clipPath>
|
||||||
|
<clipPath
|
||||||
|
clipPathUnits="userSpaceOnUse"
|
||||||
|
id="clipPath31">
|
||||||
|
<path
|
||||||
|
d="M 0,1200 H 2000 V 0 H 0 Z"
|
||||||
|
transform="translate(-466.30451,-703.59782)"
|
||||||
|
id="path31" />
|
||||||
|
</clipPath>
|
||||||
|
<clipPath
|
||||||
|
clipPathUnits="userSpaceOnUse"
|
||||||
|
id="clipPath33">
|
||||||
|
<path
|
||||||
|
d="M 0,1200 H 2000 V 0 H 0 Z"
|
||||||
|
transform="translate(-614.51722,-638.93302)"
|
||||||
|
id="path33" />
|
||||||
|
</clipPath>
|
||||||
|
</defs>
|
||||||
|
<g
|
||||||
|
id="layer-MC0"
|
||||||
|
transform="translate(-486.31024,-515.02722)">
|
||||||
|
<path
|
||||||
|
id="path20"
|
||||||
|
d="M 0,0 C -1.568,1.568 -3.163,3.098 -4.787,4.61 -5.944,3.966 -7.185,3.35 -8.529,2.762 -9.658,2.277 -10.815,1.82 -11.981,1.4 c 1.885,-1.689 3.742,-3.425 5.552,-5.207 0.448,-0.429 0.886,-0.868 1.325,-1.306 2.221,-2.221 4.386,-4.498 6.476,-6.84 27.639,-30.784 44.453,-71.459 44.453,-116.089 0,-29.347 -7.259,-56.977 -20.09,-81.21 -2.192,-4.134 -4.544,-8.174 -7.054,-12.102 -6.83,-10.74 -14.827,-20.669 -23.785,-29.636 -5.944,-5.944 -12.317,-11.459 -19.073,-16.498 -0.56,-0.42 -1.12,-0.83 -1.689,-1.231 -28.675,-20.893 -63.975,-33.201 -102.186,-33.201 -48.018,0 -91.464,19.456 -122.948,50.93 -0.737,0.737 -1.465,1.474 -2.174,2.221 -0.55,0.569 -1.101,1.147 -1.633,1.726 -15.545,16.553 -27.881,36.14 -36.018,57.779 -3.098,8.211 -5.58,16.712 -7.409,25.464 -2.417,11.534 -3.686,23.496 -3.686,35.758 0.01,42.326 15.117,81.097 40.246,111.246 -2.072,1.278 -3.975,2.809 -5.534,4.637 -26.174,-31.399 -41.934,-71.822 -41.934,-115.883 0,-18.187 2.678,-35.748 7.67,-52.311 3.359,-11.142 7.754,-21.835 13.092,-31.95 8.528,-16.208 19.446,-30.961 32.276,-43.801 1.251,-1.25 2.529,-2.491 3.817,-3.685 0.662,-0.644 1.334,-1.26 2.006,-1.876 10.862,-9.938 22.945,-18.578 36,-25.661 25.632,-13.913 55.016,-21.816 86.229,-21.816 2.454,0 4.908,0.047 7.334,0.14 36.056,1.446 69.424,13.427 97.054,32.976 0.569,0.392 1.148,0.793 1.698,1.204 7.82,5.655 15.164,11.925 21.966,18.718 7.904,7.904 15.07,16.526 21.406,25.773 2.556,3.723 4.973,7.558 7.25,11.477 15.499,26.697 24.382,57.723 24.382,90.812 C 53.038,-78.055 32.762,-32.762 0,0"
|
||||||
|
style="fill:#D0BCFF;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||||
|
transform="matrix(1.3333333,0,0,-1.3333333,898.49907,660.9888)"
|
||||||
|
clip-path="url(#clipPath21)" />
|
||||||
|
<path
|
||||||
|
id="path24"
|
||||||
|
d="M 0,0 -0.169,-0.292 C 1.43,-0.2 3.091,-0.108 4.798,0 Z"
|
||||||
|
style="fill:#D0BCFF;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||||
|
transform="matrix(1.3333333,0,0,-1.3333333,621.73933,661.8696)"
|
||||||
|
clip-path="url(#clipPath25)" />
|
||||||
|
<path
|
||||||
|
id="path26"
|
||||||
|
d="m 0,0 c -6.336,-9.247 -13.502,-17.869 -21.406,-25.773 -6.802,-6.793 -14.146,-13.063 -21.965,-18.718 -0.551,-0.411 -1.129,-0.812 -1.699,-1.204 -27.629,-19.549 -60.998,-31.53 -97.053,-32.976 -33.247,1.129 -64.852,8.762 -93.564,21.676 -13.054,7.082 -25.138,15.723 -36,25.661 -0.672,0.616 -1.343,1.232 -2.006,1.876 -1.288,1.194 -2.566,2.435 -3.816,3.685 -12.831,12.84 -23.748,27.593 -32.277,43.801 -1.092,7.651 -1.941,15.378 -2.445,23.039 -0.102,1.502 -0.186,3.004 -0.261,4.497 0,0 -2.865,29.795 23.944,36.634 26.827,6.84 65.654,19.745 87.722,50.305 0,0 0.327,-8.38 5.506,-15.779 8.034,-11.422 46.674,-100.46 46.674,-100.46 l 6.121,51.135 -13.978,15.079 -4.553,-1.987 15.228,16.544 c 0,0 8.94,4.218 16.554,-0.653 7.605,-4.899 14.146,-16.153 14.146,-16.153 l -5.879,3.892 -4.227,-12.364 c -0.756,-2.184 -0.83,-4.535 -0.233,-6.784 l 16.796,-62.687 c 0,0 -0.243,87.415 -2.781,111.685 0,0 14.221,-10.367 21.621,-14.454 7.381,-4.078 47.215,-20.407 53.738,-22.395 6.504,-1.987 13.222,-5.841 15.882,-11.916 1.026,-2.351 8.594,-26.939 17.486,-56.229 C -1.829,6.028 -0.914,3.023 0,0"
|
||||||
|
style="fill:#D0BCFF;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||||
|
transform="matrix(1.3333333,0,0,-1.3333333,927.04,968.0968)"
|
||||||
|
clip-path="url(#clipPath27)" />
|
||||||
|
<path
|
||||||
|
id="path28"
|
||||||
|
d="m 0,0 c 0,0 -3.081,-67.22 -8.64,-90.616 -5.559,-23.397 30.316,0 30.316,0 l 20.9,68.629 z"
|
||||||
|
style="fill:#D0BCFF;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||||
|
transform="matrix(1.3333333,0,0,-1.3333333,610.58507,756.01253)"
|
||||||
|
clip-path="url(#clipPath29)" />
|
||||||
|
<path
|
||||||
|
id="path30"
|
||||||
|
d="M 0,0 -0.169,-0.292 C 1.43,-0.2 3.091,-0.108 4.798,0 Z"
|
||||||
|
style="fill:#D0BCFF;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||||
|
transform="matrix(1.3333333,0,0,-1.3333333,621.73933,661.8696)"
|
||||||
|
clip-path="url(#clipPath31)" />
|
||||||
|
<path
|
||||||
|
id="path32"
|
||||||
|
d="m 0,0 c 0,0 12.178,7.604 15.029,18.355 0,0 36.913,-9.243 52.904,-26.719 C 66.887,-8.091 29.642,2.031 0,0 m -36.152,-5.643 c -26.791,0.404 -31.781,16.05 -34.086,29.523 -0.511,2.958 -3.148,5.073 -6.13,4.883 l -46.275,-4.764 14.922,7.14 c 3.505,1.687 7.164,3.077 10.895,4.17 3.742,1.093 7.556,1.901 11.429,2.376 4.051,0.499 8.542,1.01 13.46,1.509 0,0 6.19,2.459 7.414,-4.479 1.259,-6.926 0.499,-31.864 28.287,-31.103 27.777,0.76 32.612,19.412 32.612,19.412 0,0 3.458,14.471 9.232,14.257 5.263,-0.202 7.27,-6.142 7.853,-10.479 0.142,-1.045 -0.06,-3.54 0.582,-4.324 -0.939,1.152 -2.162,2.032 -3.564,2.554 C 7.604,26.113 3.065,26.945 2.471,21.658 1.616,13.877 -9.599,-6.059 -36.152,-5.643 m 13.306,48.354 9.528,-2.377 c 0,0 -2.388,-17.5 -11.227,-21.979 -0.25,-0.13 4.194,14.281 1.699,24.356 m 59.022,3.041 3.79,-1.687 c 0,0 2.198,-14.209 -3.79,-20.577 0,0 2.174,12.474 0,22.264 m -187.451,35.63 c 12.225,2.067 24.45,4.229 36.664,6.332 l 36.663,6.392 73.303,12.748 c 2.958,0.522 5.774,-1.462 6.285,-4.408 0.522,-2.947 -1.462,-5.762 -4.42,-6.285 -0.119,-0.024 -0.261,-0.036 -0.38,-0.047 H -3.184 L -114.243,85.029 c -12.344,-1.224 -24.676,-2.495 -37.032,-3.647 M 43.97,16.93 c 3.54,4.693 5.215,23.096 5.215,23.096 l 1.497,2.518 v 8.744 C 29.381,61.327 11.869,50.682 11.869,50.682 l -16.491,0.749 c -3.112,0.142 -7.449,2.637 -10.644,3.433 -4.42,1.093 -8.804,2.068 -13.342,2.566 -16.407,1.735 -32.933,0 -49.091,-2.934 -7.021,-1.271 -13.971,-2.851 -20.957,-4.325 -6.701,-1.425 -12.878,-3.908 -19.151,-6.605 -4.313,-1.842 -8.649,-3.659 -12.641,-6.119 -2.436,-1.496 -4.741,-3.243 -6.737,-5.31 -2.126,-2.21 -3.659,-4.859 -5.476,-7.319 -1.545,-2.091 -4.907,-0.463 -4.147,2.032 0.024,0.059 0.048,0.119 0.06,0.154 0.867,2.044 2.221,4.646 3.659,6.345 3.588,4.241 8.958,8.292 13.686,11.12 10.039,6.071 21.48,9.766 32.767,12.985 24.771,7.057 51.442,8.138 77.009,10.55 14.114,1.331 28.43,2.091 42.473,4.016 12.784,1.734 37.935,4.859 36.176,22.882 -1.71,18.129 -59.355,18.712 -59.355,18.712 0,0 -21.943,45.027 -27.372,50.468 -5.418,5.418 -16.503,18.474 -74.254,4.384 -57.739,-14.078 -55.327,-42.259 -55.327,-42.259 l -2.412,-39.622 c 0,0 -43.198,-11.179 -41.832,-23.321 1.391,-12.142 39.171,-12.819 39.171,-12.819 0,0 8.577,0.439 20.696,1.152 l -5.382,-9.683 c -6.749,-12.13 -6.38,-25.258 -8.851,-38.908 -4.277,-23.631 11.963,-52.702 33.978,-62.147 21.1,-9.053 53.949,-13.782 99.012,6.368 11.085,4.954 20.328,13.282 26.66,23.618 l 0.499,0.796 c 22.728,26.125 80.574,9.386 80.574,9.386 C 81.774,1.699 43.97,16.93 43.97,16.93"
|
||||||
|
style="fill:#D0BCFF;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||||
|
transform="matrix(1.3333333,0,0,-1.3333333,819.35627,748.08933)"
|
||||||
|
clip-path="url(#clipPath33)" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 13 KiB |
Reference in New Issue
Block a user