141 Commits

Author SHA1 Message Date
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 54e12efcae quickshell: fix workspace highlight drift and unstable sort
The sliding active indicator positioned itself via Repeater.itemAt(), which
returns null mid-rebuild; the fallback then stranded it at the top (looked
like workspace 1 was active while the font correctly showed another). Cells
are uniform, so compute the indicator's y arithmetically from the index
instead. Also make monitorWsData's sort deterministic: numbered workspaces
ascending, then named ones (e.g. joplin) alphabetically — parseInt alone
yields NaN and an unstable order for named workspaces.
2026-06-01 14:26:20 +02:00
mpuchstein dd5d8a348d quickshell: move the notification pill between k8s and system
Reorder the bottom bar group so notifications sit between the Kubernetes
and System pills.
2026-06-01 14:26:20 +02:00
mpuchstein be6c66d801 hypr: keep software cursors for the vertical monitor
no_hardware_cursors auto (2) still corrupts the cursor on the rotated
vertical monitor, and Hyprland has no per-monitor override, so force
software cursors (1) globally.
2026-06-01 14:15:34 +02:00
mpuchstein 4be6478802 hypr: fix windowsIn animation missing speed field
hl.animation rejects a spring leaf without a speed (Hyprland logged
"missing required field speed"), so windowsIn fell back to default. Add
speed so the snappy spring actually applies.
2026-06-01 14:15:20 +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 27dd3bae91 hypr: add a lively spring to the window-open animation
Give windowsIn a snappy spring so windows pop in with a touch of life,
while window movement stays on the crisp easeOutQuint curve.
2026-06-01 14:06:21 +02:00
mpuchstein cf2d67b7fd hypr: enable automatic hardware cursors
no_hardware_cursors 2 (auto) uses hardware cursors where supported and
falls back to software only when needed, instead of forcing software
cursors globally.
2026-06-01 14:06:00 +02:00
mpuchstein 91c92c46eb quickshell: drop committed superpowers brainstorm scratch
These scratch HTML mockups and .server runtime files were tracked in the
source tree and would be applied into ~/.config. Remove them and ignore
the directory.
2026-06-01 14:05:35 +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
mpuchstein 119789cc53 hypr: use a single brightnessctl call for the brightness OSD
brightnessctl -m s sets and prints the new percentage in one invocation,
so drop the second brightnessctl call per (repeating) brightness keypress.
2026-06-01 14:05:35 +02:00
mpuchstein 1d85012b53 quickshell: collapse k8s-metrics into a single jq pass
Feed the three kubectl outputs into one jq program that does app
aggregation, CPU/memory unit normalization, and quota math, replacing the
per-pod jq fork loops and eight quota jq reads (~40 forks down to ~4).
2026-06-01 14:05:35 +02:00
mpuchstein 35b8e4372e quickshell: read system metrics natively and harden update polling
Replace the per-tick sh -c subprocess reads in the system popout with
Quickshell FileView reads (/proc/stat, /proc/meminfo, and once-resolved
hwmon/battery sysfs paths), dropping the 5s tick from ~7 process spawns to
~2. Wrap checkupdates in timeout 120 and guard against restarting an
in-flight run so a slow sync can no longer thrash or stall.
2026-06-01 14:05:35 +02:00
mpuchstein 11e4e94ee8 hypr: fix per-workspace layout detection, refactor lua, event-driven quickshell
Lua config (hyprland.d.lua):
- keybinds: layout-aware binds now read the per-workspace layout via
  cur_ws_layout() instead of the global hl.get_config("general.layout"),
  fixing mouse-wheel/bracket scrolling and ratio keys on the lua:*-scroll
  layouts.
- add state.lua shared module (ws_layouts) replacing the _G globals.
- layout: factor the 9 duplicated layout_msg bodies into scroll_msg/swap_msg
  builders; drop a dead #state expression.
- rules: NO_BLUELIGHT window.open handler no longer leaks a rule per open
  (one per class) and regex-escapes/nil-guards the class.
- monitors: quote non-numeric scale so scale="auto" renders.
- drop debug print() focus handler, local-next shadowing, stray {mouse=true}
  on wheel binds (kept on drag/resize, which require it).

Quickshell:
- brightness OSD is now event-driven: Osd.qml gains an IpcHandler(target:osd)
  and the keybind pushes the new level via `qs ipc call osd brightness`,
  removing the always-on 500ms brightnessctl poll.
- GamemodePill watches GameMode's D-Bus signals via gdbus monitor instead of
  polling gamemoded --status every 5s.

Cleanup:
- remove stock hyprland.lua.refactor/ boilerplate and the redundant,
  partly-wrong hyprland_lua_api.md (both were deployed into ~/.config/hypr;
  .luarc.json already points the LSP at /usr/share/hypr/stubs).
- refresh hypr/AGENTS.md (lua layout) and quickshell/CLAUDE.md (v0.3.0).
2026-06-01 13:06:59 +02:00
mpuchstein 6962fa393d config: stop managing xdg user-dirs.dirs 2026-05-31 14:55:11 +02:00
mpuchstein 1f51d199a0 hypr: refine hyprlogin greeter (greet label, fingerprint stub, shared username field) 2026-05-31 14:55:06 +02:00
mpuchstein 8b9c38ab48 hypr: unify lockscreen and login screen via hyprlogin
Replace nwg-hello with hyprlogin as the greetd greeter. Both hyprlock
and hyprlogin now share a single apex-neon theme fragment
(.chezmoitemplates/apex-neon-lock.conf), giving an identical look on
lock and login.

- Add system/ staging tree for /etc files (not auto-applied by chezmoi)
- Add system/install-greeter.sh to render templates and sudo-install to /etc
- Add apex-neon shared fragment: palette, font, animations, input-field,
  clock/date bubbles, weather/location bubbles
- Add dot_config/hypr/themes/apex-neon-lock.conf.tmpl ($HOME copy for hyprlock)
- Rewrite hyprlock.conf.tmpl to source the shared fragment; move
  notification bubble here (hyprlock-only, requires quickshell)
- Add Quickshell IpcHandler so `qs ipc call notifications count` works
- Session fixed to hyprland-uwsm.desktop; greetd config targets greetd.conf
2026-05-29 17:19:32 +02:00
mpuchstein 6966af3229 nvim: configure latex formatting options and completion model 2026-05-29 03:32:58 +02:00
mpuchstein 81aef85feb mime: associate thunderbird for mail, feed, and calendar 2026-05-29 03:31:14 +02:00
mpuchstein 0d61fb3c5d hypr: integrate hyprsunset blue light filter and game bypass 2026-05-29 03:30:14 +02:00
Matthias Puchstein f2c5236dc6 some surface adjustments for hyprland (brightnesskeys etc) 2026-05-28 15:33:24 +02:00
mpuchstein 89d003440a added starship to nu 2026-05-19 02:30:09 +02:00
mpuchstein d9d492c214 nu: add cycling alt+. and history picker alt+,
Alt+. now cycles through all whitespace-split tokens from history
(most recent first, last arg first within each command) using env
var state. Alt+, opens a skim fuzzy picker over full history commands
and inserts the selected entry at the cursor.
2026-05-18 12:00:03 +02:00
mpuchstein da3ce09a9e added some nushell stuff and deleted deprecated hyprland config 2026-05-18 00:01:44 +02:00
mpuchstein fdacf5363b iamb: improve config with nvim parity and quality-of-life settings 2026-05-17 23:56:42 +02:00
mpuchstein c73c235dfb iamb: add config 2026-05-17 22:09:15 +02:00
mpuchstein 404fc49df0 nu: rewatch - revert uncatchable try/catch 2026-05-17 17:48:52 +02:00
mpuchstein 0e99cbb757 nu: rewatch - fully swallow interrupt in catch 2026-05-17 17:48:04 +02:00
mpuchstein c9266f252d nu: rewatch - suppress Ctrl+C error 2026-05-17 17:46:20 +02:00
mpuchstein 17ec0a9a34 nu: fix rewatch - pipe closure output through print 2026-05-17 17:44:10 +02:00
mpuchstein 2fd5a1196d nu: add rewatch command to sys.nu 2026-05-17 17:36:23 +02:00
mpuchstein 119c396efc nu: add Alt+. last-arg keybinding and nushell-book doc submodule
- keybindings block in config.nu with Alt+. → insert last token from history
- nushell.github.io added as external_nushell-book submodule under dot_local/share/docs
- CLAUDE.md local docs table updated
2026-05-17 17:31:14 +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 75e3b1bea1 chore: misc dotfile updates across owlry, hypr, zsh, gemini, nu
owlry: migrate config from TOML template to Lua (owlry 2.1); drop
  scripts/.keep placeholder
hypr: add apex-neon and apex-aeon theme variable files
zsh: fix apex git prompt — use herestring instead of process sub
gemini: add apex-neon and apex-aeon theme JSON files
nu: add .chezmoiignore for history.txt; add run_once zoxide-nu script;
  extend refresh-apex-themes to sync nushell themes
2026-05-17 08:49:12 +02:00
mpuchstein ff1cdc02b9 nu: add nushell config and apex-styled prompt
Initial nushell dotfiles: config, modules (git, k8s, sys, hypr, pkg,
dev), apex theme files, and a chezmoi-templated prompt that shows dir
and git branch/dirty using apex-neon/aeon colors with vi mode indicators.
2026-05-17 08:48:19 +02:00
mpuchstein daa4fe8bc9 nvim: remove duplicate <leader>lf LSP format binding
Conform's keybind in editing.lua already handles manual format for all
filetypes; the buffer-local LSP binding on LspAttach was shadowing it.
2026-05-13 04:00:51 +02:00
mpuchstein eaaf857026 feat hypr keybind helper via quickshell; fix nvim plugins (not completly done yet) 2026-05-13 02:09:43 +02:00
mpuchstein 8a6cb3b37f let gemini write an api overview of hyprland_lua 2026-05-12 04:36:13 +02:00
mpuchstein 5cf2ad9f4a hypr: migrate layout management to native Lua
Replace hypr-workspace-layout shell script with native Lua functions in
keybinds.lua. Add custom Lua layouts (master-scroll variants, swap
variants) to the SUPER+period cycle. Implement swap-on-focus via
_G._hl_ws_layouts shared global so window.active handler can check
per-workspace layout without IPC or hl.get_workspaces().
2026-05-12 04:19:10 +02:00
mpuchstein 9c7bf54cf1 hypr: replace hypr-workspace-layout shell script with native Lua
Port all layout management to Hyprland v0.55 Lua API:
- Per-workspace layout toggle/cycle via hl.workspace_rule + hl.get_active_window()
- Layout-aware move/nav/resize as pure Lua functions
- Group smart-join via hl.get_active_window().grouped
- mfact exact handlers in all custom scroll/swap layouts
- No io.popen, no exec_cmd, no IPC deadlock risk
2026-05-12 03:48:46 +02:00
mpuchstein 7b1c53cd64 refactor utilise some new hyprland features 2026-05-12 02:40:21 +02:00
mpuchstein 26303f56d8 chore updating hyprland to lua 2026-05-12 01:50:20 +02:00
mpuchstein 52344c6287 hypr: add vertical scroll layouts and swap-on-focus layouts
New scroll layouts for vertical monitors:
- top-master-scroll: master top, horizontal slave row below
- center-master-scroll-v: master center, slave rows above and below

New swap-on-focus layouts (focusing a slave promotes it to master):
- master-swap: master left, slaves right
- slave-master-swap: master right, slaves left
- top-master-swap: master top, slaves bottom

Shared place_scroll_row helper (horizontal mirror of place_scroll_col).
Guard recalc dispatch by layout name to avoid errors from built-in layouts.
2026-05-12 01:29:25 +02:00
mpuchstein f1d3128d99 cs2: tweak crosshair and clean up trailing whitespace
Reduce crosshair size/thickness, switch to color 4, disable friendly
warning. No functional changes to bind/training sections.
2026-05-12 01:05:02 +02:00
mpuchstein dc81dc9327 gemini: remove apex theme files 2026-05-12 01:04:44 +02:00
mpuchstein 83abff3344 config: add java mime handler for zed and XDG_PROJECTS_DIR 2026-05-12 01:04:32 +02:00
mpuchstein 314262c56b zed: reset to local-only panel layout config
Remove SSH connection and legacy options; keep panel dock positions.
2026-05-12 01:04:24 +02:00