mirror of
https://github.com/AvengeMedia/DankMaterialShell.git
synced 2025-12-06 05:25:41 -05:00
14a9828296eae089cd668c15e2f8a411246ce77f
DankMaterialShell (Quickshell)
A Quickshell built shell designed to be highly functional, in Material 3 style.
Specifically created for Niri.
Installation
- Install required dependencies
This shell kinda depends on Niri, but only for workspaces and the active window widget in TopBar. So it could be used on any other wayland compositor with minimal changes.
# 1 --- Material Symbols Font (if not present)
mkdir -p ~/.local/share/fonts && curl -L "https://github.com/google/material-design-icons/raw/master/variablefont/MaterialSymbolsRounded%5BFILL%2CGRAD%2Copsz%2Cwght%5D.ttf" -o ~/.local/share/fonts/MaterialSymbolsRounded.ttf && fc-cache -f
# Can also be installed from AUR on arch linux, paru -S ttf-material-symbols-variable-git
# 2 --- QuickShell (recommended to use a git build)
paru -S quickshell-git
- Install optional dependencies to unlock certain features
| Dependency | Purpose | If Missing |
|---|---|---|
| cava | Equalizer in TopBar uses Audio Data | Equalizer shifts at random |
| cliphist | Allows clipboard history view | No clipboard history view available |
| matugen | Allows dynamic themes based on wallpaper | Just can choose from preconfigured themes instead of dynamic colors |
| ddcutil (or brightnessctl) | Allows controlling brightness of monitors | No Brightness |
| wl-clipboard | Unlocks copy functionality of certain elements, such as process PIDs | No copy |
# Arch
paru -S ttf-material-symbols-variable-git matugen cliphist cava wl-clipboard ddcutil
Note on networking: This shell requires NetworkManager for WiFi functionality.
- Install DankMaterialShell
mkdir -p ~/.config/quickshell
git clone https://github.com/bbedward/DankMaterialShell.git ~/.config/quickshell/DankMaterialShell
- Enable
qs -c DankMaterialShell
# In niri config
spawn-at-startup "qs" "-c" "DankMaterialShell"
# Optionally at bindings for spotlight launcher and clipboard history
Mod+Space hotkey-overlay-title="Run an Application: Spotlight" { spawn "qs" "-c" "DankMaterialShell" "ipc" "call" "spotlight" "toggle"; }
Mod+V hotkey-overlay-title="Open Clipboard History" { spawn "qs" "-c" "DankMaterialShell" "ipc" "call" "clipboard" "toggle"; }
Available IPC Events
IPC Events are events that can be triggered with qs cli.
qs -c DankMaterialShell ipc call <target> <function>
| Target | Function | Description |
|---|---|---|
| spotlight | toggle | Toggle spotlight (app launcher) |
| clipboard | toggle | Toggle clipboard history view |
| processlist | toggle | Toggle process list (task manager) |
| wallpaper | set <path> | Set wallpaper to image path and refresh theme (if auto theme enabled) |
| wallpaper | get | Get current wallpaper path |
| lock | lock | Triggers lockscreen |
| lock | demo | Triggers lockscreen demo mode |
| lock | isLocked | Whether we're locked or not |
(Optional) Setup Calendar events (Google, Microsoft, other Caldev, etc.)
- Install khal, vdirsyncer, and
aiohttp-oauthlib
# Arch
pacman -S vdirsyncer khal python-aiohttp-oauthlib
- Configure vdirsyncer
Follow the documentation, you will have different steps depending on which calendars you want to sync with.
mkdir -p ~/.vdirsyncer
# Create ~/.vdirsyncer/config (a single google calendar would look like)
[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 = "...."
client_secret = "...."
[storage personallocal]
type = "filesystem"
path = "~/.calendars/Personal"
fileext = ".ics"
# Sync
vdirsyncer sync
# Create crontab
crontab -e
# e.g., this syncs every 5 minutes
*/5 * * * * /usr/bin/vdirsyncer sync
- Configure khal
# Run this
khal configure
# Choose option 2 for month/day/year
# Time format, doesnt matter
# Choose option 1 for use calendar alreayd on this computer
Languages
QML
58%
Go
32.3%
CSS
4.7%
Shell
1.8%
JavaScript
1.6%
Other
1.6%