1
0
mirror of https://github.com/AvengeMedia/DankMaterialShell.git synced 2025-12-06 05:25:41 -05:00

DankMaterialShell (Quickshell)

A Quickshell built shell designed to be highly functional, in Material 3 style.

Specifically created for Niri.

Installation

  1. Install dependencies, this will vary based on your distribution.
# Arch
paru -S quickshell-git nerd-fonts ttf-material-symbols-variable-git matugen cliphist cava wl-clipboard ddcutil

# Some dependencies are optional
# - cava for audio visualizer, without it music will just randomly visualize
# - cliphist for clipboard history
# - matugen for dynamic themes based on wallpaper
# - ddcutil for brightness changing
  1. Configure SwayBG (Optional)
# Install wallpaper script
sudo cp ./scripts/set-wallpaper.sh /usr/local/bin/set-wallpaper.sh
sudo chmod +x /usr/local/bin/set-wallpaper.sh

# Arch
pacman -S swaybg

# Create service
echo '[Unit]
PartOf=graphical-session.target
After=graphical-session.target
Requisite=graphical-session.target

[Service]
ExecStart=/usr/bin/swaybg -m fill -i "%h/quickshell/current_wallpaper"
Restart=on-failure

[Install]
WantedBy=graphical-session.target' > ~/.config/systemd/user/swaybg.service

# Set a wallpaper
set-wallpaper.sh /path/to/image.jpg

# Enable service
systemctl --user enable --now swaybg.service
  1. Install DankMaterialShell
mkdir -p ~/.config/quickshell
git clone https://github.com/bbedward/DankMaterialShell.git ~/.config/quickshell/DankMaterialShell
  1. 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 refresh Refresh theme (refreshes theme after wallpaper change)

(Optional) Setup Calendar events (Google, Microsoft, other Caldev, etc.)

  1. Install khal, vdirsyncer, and aiohttp-oauthlib
# Arch
pacman -S vdirsyncer khal python-aiohttp-oauthlib
  1. 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
  1. 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%