Commit Graph

14 Commits

Author SHA1 Message Date
mpuchstein 873801262e quickshell: apex-neon v2 colour discipline pass
Kill pure-black crust (->Void #070709) and add the figure/ground tokens
focusActive/focusField/emberField. Move active/selection states to violet
(calendar Today, keybinds active tab, battery + power profiles); stop spending
danger-red on non-danger states (mic + audio-default -> cyan); make the notif
bell state-driven (neutral/focus/danger); give critical notifications an ember
ground; bluetooth scanning -> cyan; k8s MEM -> blue (free the special violet).
2026-06-04 04:31:03 +02:00
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
mpuchstein 5a18734128 quickshell: add bluetooth manager pill + popout
Gated on a new Config.hasBluetooth (bluetooth tag). Adds a bar pill
showing adapter state + connected count, and a full manager popout:
adapter power toggle, scan/discovery, and per-device pair / connect /
disconnect / trust / forget with battery. Built on Quickshell.Bluetooth
(BlueZ); mirrors the existing Kubernetes/System pill+popout pattern.
2026-06-03 22:53:52 +02:00
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
mpuchstein 4f13f5c7c0 quickshell: speed up k8s refresh while the popout is open
While the popout is open, poll both status and metrics at a fast cadence
(kubeRefreshOpenMs, 3s) instead of 2min/15s, and refresh immediately when
it opens — so opening the pill shows fresh data and updates live. Status
reverts to the slow 2min pill cadence once closed.
2026-06-01 14:49:22 +02:00
mpuchstein 7c798c005c quickshell: run a single shared gamemode monitor
GamemodePill is instantiated per screen Variant, so it spawned one
long-lived gdbus monitor per monitor (3 on desktop). Move the watcher into
a shared Gamemode singleton so only one runs regardless of screen count.
2026-06-01 14:15:07 +02:00
mpuchstein 5c585697ae quickshell: use hyprlock for lock and power actions
swaylock broke and the stack already locks with hyprlock everywhere else;
point the desktop lockCommand and power menu at hyprlock and drop the
now-identical laptop/desktop branches.
2026-06-01 14:06:53 +02:00
mpuchstein 9525ff12db quickshell: poll k8s metrics only while the popout is open
The metrics poller spawned the heavy k8s-metrics script every 15s all day
even though its data only renders in the popout. Gate it on the popout
being open (triggeredOnStart fetches immediately on open) and slow the
pill's status poll from 30s to 120s.
2026-06-01 14:06:40 +02:00
mpuchstein a74fef4bc5 quickshell: unify media player selection in a Media singleton
The pill and popout each picked an active MPRIS player independently, so
with multiple players open they disagreed and flipped. Add a Media
singleton that selects one active player with stickiness and bind both
components to it.
2026-06-01 14:05:35 +02:00
Matthias Puchstein a7e045c6b7 quickshell: enable kubernetes widget on all machines 2026-05-17 09:34:27 +02:00
Matthias Puchstein 7ade51b920 quickshell: add laptop support (battery, power-profile, conditional GPU/k8s)
Template Config.qml with chezmoi data for multi-machine support. Surface
gets eDP-1 monitor, battery/power-profile widgets, no discrete GPU or
Kubernetes polling. Desktop behavior unchanged.
2026-05-17 09:21:10 +02:00
mpuchstein 8b5e5e392d k8s-widget: add Kubernetes.qml singleton 2026-04-22 01:23:51 +02:00
mpuchstein 1cfc32ff3b k8s-widget: add kube config properties 2026-04-22 01:01:27 +02:00
mpuchstein c5f7162ebb quickshell: add initial bar config with per-monitor workspaces
- Vertical bar on DP-2 with rounded-square pills throughout
- Per-monitor workspace groups sorted by screen x position, with
  Nerd Font icons for named workspaces and apex-neon red active indicator
- Bar layout: datetime+weather top, workspaces centered, gamemode+media+notif+system bottom
- Popouts anchor to triggering icon (top-right for datetime/weather, bottom-right for media/notif/system)
- Lock command switched from hyprlock to swaylock
- Hyprland blur/ignore_alpha layerrules for quickshell namespace

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-05 20:00:54 +02:00