Files
dotfiles/dot_config/quickshell
mpuchstein 7b1ff73004 chezmoi: split tags into compositor/apps, data-drive workspace placement
Collapse redundant template tags into a cleaner data model:
- drop the desktop tag (use "not laptop"); replace hyprland/niri with
  compositor = "hyprland"|"niri"; replace cs2/entertainment with an
  apps list (gated via has); drop the dead waybar tag.
- move app->workspace->monitor routing into a portable [[data.placement]]
  table keyed by monitor role (left/right/primary), resolved per machine
  with fallback to the primary monitor. workspaces.lua.tmpl and
  rules.lua.tmpl now generate the workspace/window rules from it, so
  single-monitor machines work with no hardcoded monitor names.

Update CLAUDE.md / AGENTS.md / GEMINI.md schema references to match.
2026-06-03 22:53:36 +02:00
..

Quickshell Desktop Shell

A vertical bar + popout panel shell for Hyprland, built with Quickshell v0.2.x and themed with Catppuccin.

Setup

quickshell   # launch (reads from ~/.config/quickshell/)

Quickshell hot-reloads on file save. If it crashes: killall quickshell && quickshell &

Configuration

All user settings live in shared/Config.qml. Edit this file to customize your setup:

Setting Default Description
catppuccinFlavor "mocha" Color theme: "mocha", "macchiato", "frappe", "latte"
transparency true Semi-transparent bar/popouts (requires Hyprland layerrules below)
monitor "DP-1" Which monitor to display the bar on
workspaceCount 5 Number of workspace indicators
weatherLocation "Munich" City name for wttr.in weather data
useCelsius true Temperature unit (false for Fahrenheit)
use24h true Clock format (false for 12-hour)
weekStartsMonday true Calendar week start day
diskMount1 / diskMount2 "/" / ~/data Disk mounts shown in system popout
idleProcess "hypridle" Idle daemon to toggle
lockCommand "hyprlock" Lock screen command

Hyprland Layerrules (required for blur/transparency)

Add to your hyprland.conf:

# Enable blur on all Quickshell windows
layerrule = match:namespace quickshell:.*, blur on
layerrule = match:namespace quickshell:.*, ignore_alpha 0.79

The shell registers these namespaces:

Namespace Window
quickshell:bar The main bar panel
quickshell:popout Popout overlay (notifications, media, weather, etc.)
quickshell:osd Volume/brightness OSD
quickshell:notifications Toast notification popups
quickshell:idle Idle screen overlay

To target specific windows, replace quickshell:.* with the exact namespace:

# Only blur the bar, not popouts
layerrule = match:namespace quickshell:bar, blur on
layerrule = match:namespace quickshell:bar, ignore_alpha 0.79

If you set transparency: false in Config.qml, layerrules are not needed.

Dependencies

  • Hyprland — compositor
  • PipeWire — audio control
  • lm_sensors (sensors) — CPU temperature
  • Nerd Fonts (Inconsolata Go Nerd Font) — all icons
  • hyprlock / hypridle / hyprshutdown — lock, idle, power
  • brightnessctl — brightness OSD (optional, auto-detected)
  • wf-recorder — screen recording (optional)
  • hyprpicker — color picker (optional)