Files
dotfiles/dot_config/quickshell
mpuchstein 490e03d35c quickshell: retheme to apex-neon v2
Migrate the shell palette to the v2 semantic spine and clean up
spec violations:

- Theme.qml: v2 neutrals (#070709 ground), split real blue (#5b8cff)
  from info cyan, retire the peach token, add a focus attention violet.
- Weather: severity-driven coloring (cyan/amber/red) from weatherCode;
  replaces decorative peach. Forecast highs=text, lows=subtext0.
- SystemPopout: performance profile + Reboot hold -> amber (peach retired).
- Workspaces: active indicator red -> focus violet (selection is
  attention, not danger).
- SystemPill: Arch logo lavender -> real blue.
- Bar.qml: gate BluetoothPill instantiation behind hasBluetooth so
  BlueZ DBus never spins up when the bluetooth tag is off.
- IdleScreen: route hardcoded hex through Theme tokens.
2026-06-04 03:06:38 +02:00
..
2026-06-04 03:06:38 +02:00
2026-06-04 03:06:38 +02:00
2026-06-04 03:06:38 +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)