Commit Graph
23 Commits
Author SHA1 Message Date
Frank ee292ffd10 live: heartbeat sync 2026-10-19T13:20:41-07:00 (Refs #11) 2026-10-19 13:20:41 -07:00
Frank b3d3df4bdb feat(niri): amber-orange focus-ring, width 4 (ff8c00)
Frank's outline restyle: focus-ring red #e01b24 -> #ffb000 -> #ff8c00
(orange), thickness 2 -> 4 in base layout.kdl. The visible ring is
painted by noctalia.kdl, included LAST in config.kdl — its focus-ring
active/urgent colors moved to #ff8c00 too; tab-indicator, insert-hint,
and recent-window highlights deliberately stay red.

noctalia.kdl was hand-written live-only (Oct 14, no repo copy — the
override that silently beat every layout.kdl edit); first durable copy
lands in the zz-blankpad mirror.
2026-10-18 17:37:27 -07:00
Frank 7b7dbf55c2 Add 1/3 to niri Mod+R width presets
Cycle is now 1/4 -> 1/3 -> 1/2, ascending; heights unchanged.
2026-10-17 18:31:54 -07:00
Frank a4218361e2 Switch niri width presets from fifths ladder to 1/4 + 1/2
Mod+R now cycles 1/4 <-> 1/2 only, matching the quarter-based
preset-window-heights; verified live (840px quarter / 1696px half on the
3440px panel). Mod+F still maximizes a column.
2026-10-17 18:30:50 -07:00
Frank 541f27f316 Simplify niri size controls: 5% nudges, quarter/half height presets, Ctrl+arrows consume-or-expel
- set-column-width / set-window-height nudges 10% -> 5% (Mod+-/= and
  Mod+Shift+-/=).
- New preset-window-heights { 1/4, 1/2 } in layout.kdl; Mod+Ctrl+Shift+R
  no longer falls back to the width-preset ladder.
- Mod+Ctrl+Left/Right (and H/L) retargeted swap-window-* ->
  consume-or-expel-window-*, matching Mod+brackets; swap-window now unbound.
Validated with niri validate; live via hot-reload.
2026-10-17 18:15:02 -07:00
Frank d767348cfd niri: retire flameshot binds, absolute script paths in spawn-sh
Live census 2026-10-14: every flameshot mode on this box captures via
xdg-desktop-portal-gnome → niri's single-output API (niri#4313) — full
AND screen hang ~15 s and error docked (verified: exit 124, no file).
Replace all six flameshot binds with niri-native equivalents:
all-monitors script (Print/Ctrl+Shift+1/Mod+Shift+S), screenshot-screen
(Alt+Print/Ctrl+Shift+2), interactive screenshot UI (Ctrl+Print/
Ctrl+Shift+3). Absolute script paths everywhere: niri's spawn-sh PATH
is system-only, ~/.local/bin absent — the bare screenshot-desk.sh and
desk.sh binds were silently dead. bats 27/27.
2026-10-14 17:53:09 -07:00
Frank 8da6cdc9cd niri: fix screenshots on 2+ outputs — Mod+Shift+S captures all monitors
flameshot full dies docked: its portal path hits niri's
screenshot_all_outputs ensure!(outputs.len()==1) (upstream niri#4313,
niri 26.04), so every Print press on the home desk produces error
bubbles. niri's built-in screenshot UI selects only one output, so add
scripts/screenshot-desk.sh: per-monitor focus + screenshot-screen with
explicit --path, focus restored, one PNG per monitor in
~/Pictures/Screenshots. Bind Mod+Shift+S (Frank's call); noctalia
settings moves to Mod+Shift+O. Restore screenshot-path (was null, now
root-level as config.screenshot_path requires) for UI saves. Live-
verified docked: valid 1920x1080 PNGs for eDP-1 + DP-2, focus restored;
bats 27/27 incl. niri validate on both desk profiles.
2026-10-14 17:21:10 -07:00
Frank 9217ed83f8 niri: move laptop panel (eDP-1) left of ultrawide in home desk profile
Sceptre left edge x=1581 minus laptop width 1920 -> x=-339;
y=-240 bottom-aligns the 1080 panel to the 1440 panel.
2026-10-13 19:49:38 -07:00
Frank 27083f75f1 niri: simplify preset-column-widths to 1/2, 1/5, 2/5, 3/5 2026-10-09 19:35:12 -07:00
Frank abb8a2a9d0 fix(autoswitch): WorkspacesChanged output-set diff; unit paths; deploy symlinks
- niri 26.04 has no hotplug event: OutputConfigChanged is only an ACK
  (niri-ipc). Watch WorkspacesChanged, diff sorted output set, apply on
  change. Proven live: eDP-1 off/on -> 3 output-set transitions, each
  matched + applied + reloaded.
- unit: %h/.local/bin/desk-autoswitch.sh, quoted Environment, drop
  User/Group (user unit); add desk-autoswitch.sh bin symlink
- desk.sh: silence validate/load-config/notify stdout
- deploy.sh: deploy repo symlinks (find -type l), so .local/bin links land
- docs: event semantics corrected (displays diagram, log)
2026-10-09 14:46:17 -07:00
Frank 37554b0fb0 feat(handy): correct store template to nested {settings} shape; fleet wiring patch + apply recipe
live store wired 2026-10-09: provider custom -> frank-secondary @
192.168.0.143:7771, prompt default_improve_transcriptions,
post_process on, self-autostart off (niri owns it)
2026-10-09 14:42:08 -07:00
Frank f63d11de85 feat(blankpad): desk.sh profile switcher, hotplug autoswitch daemon, keybinds doc generator + bats suite
- desk.sh: list/current/switch/cycle/match/capture over cfg/desk-*.kdl
  profiles; apply = relink display.kdl, niri validate (rollback on fail),
  load-config-file, noctalia notification; match scores // requires: lines
  (EDID long names) against live niri msg outputs
- desk-autoswitch.sh: watch niri msg --json event-stream for
  OutputsChanged, debounced desk.sh match --apply, reconnect loop
- blankpad-desk-autoswitch.service: ConditionHost=blankpad user unit
- gen-keybinds.sh: keybinds.kdl -> markdown cheat sheet (sections from
  // --- headers, hotkey-overlay-title preferred over action)
- tests/: 27 bats cases, all green (desk 16, gen-keybinds 6,
  niri-config 5 incl. real niri validate on the assembled tree with
  each desk profile active)
2026-10-09 14:40:26 -07:00
Frank 4ec47a5b7e niri(blankpad): desk-profile system, keybind rework, lid handler, noctalia config tracked
- config.kdl: display include optional=true (desk profiles link it per-desk),
  new optional switch-events.kdl include (per-host, blankpad-only)
- keybinds: swap-window-left/right on Mod+CTRL+H/L+arrows (join/exit columns
  on pass), move-column demoted to Mod+CTRL+Alt+chords; Print trio -> flameshot
  full/gui/screen (CTRL+Shift trio kept); launcher Mod+CTRL+Return -> Mod+D;
  Alt+Tab noctalia window-switcher; Mod+V clipboard panel; Mod+Shift+Space
  handy post-process; Mod+Shift+D desk cycle
- layout: preset column widths 12.5/25/33/50/67/75/87.5%
- desk-1-home.kdl: EDID-identity-keyed positions (M34 + eDP long names; PM1601
  connector placeholder pending EDID capture), focus-at-startup M34-first
- desk-2-portable.kdl: skeleton, EDID capture TODO
- switch-events: lid-close -> noctalia session lock-and-suspend
- autostart: handy --start-hidden (replaces Handy self-autostart)
- noctalia config.toml + settings.toml now tracked
- zz-blankpad display.kdl retired to .AGENTTRASH (superseded by desk-1-home)
niri validate: pass (assembled blankpad layout)
2026-10-09 14:17:21 -07:00
Frank 94c71a016f fix(zsh): source KAGI_API_KEY and HF_TOKEN from 600-perm secret files
Keys live in ~/.config/secrets/{kagi_api_key,hf_token}; .zshrc only reads
them, so the literals leave the shell rc that this repo publishes to Gitea.
2026-10-09 13:17:45 -07:00
Frank 40c37bb9fa niri(blankpad): DP-2 back to landscape ultrawide, HDMI-A-1 bezel flipped
DP-2: transform 90 -> normal with mode 3440x1440@239.999 pinned, moved
(0,0) -> (1581,-600). HDMI-A-1: transform 270 -> 90 (portrait kept, top bezel
now on the left). eDP-1 re-pinned (2400,840) -> (5021,-240) to sit rightmost.
All three positions stay pinned so niri's auto-layout cannot reflow them.
2026-10-09 13:17:45 -07:00
Frank 135bb2194d agent: repoint roles to frank-medium/dankclaw-3090; sync niri tweaks, memories, managed skills
- config.yml: default/commit -> frank-medium (dankserver); task/tiny/smol/vision -> frank-small (dankclaw-3090); vision xhigh
- models.yml: add llamacpp (dankclaw-3090) provider; frank-large preserve_thinking + context notes
- niri: focus-ring/border/shadow layout, hot-corners off, re-add noctalia.kdl include; blankpad eDP-1 scale 1.0
- memories: flush rollouts; retire frank_large + marreta_authentik skills; add auth-chain/kv-pool/quadlet-log skills
- managed-skills: 40+ new fleet runbook skills
- agent/skills: import built-in skill set
2026-09-17 12:27:08 -07:00
Frank 83c9c92b3f blankpad(niri): move rotated PM1601 panels left of eDP-1 (DP-2@0, HDMI-A-1@1200, eDP-1@2400) 2026-09-15 19:43:01 -07:00
Frank 97a0b21b40 blankpad(niri): 180-degree flip of both external panels
DP-2 270->90, HDMI-A-1 90->270. In portrait, 180 is the 90<->270 swap.
2026-09-15 17:36:29 -07:00
Frank 922165bde2 blankpad(niri): flip DP-2 to transform 270
DP-2 top bezel faces right; HDMI-A-1 stays at 90 (top bezel left).
2026-09-15 17:35:56 -07:00
Frank 2baf0c083d blankpad(niri): pin outputs; run both PM1601 externals portrait (transform 90)
- DP-2 at 1536,0 and HDMI-A-1 at 2736,0, both 1200x1920 portrait, scale 1
- eDP-1 pinned at 0,0 with explicit scale 1.25 (output blocks reset unspecified props)
- niri transform is counter-clockwise: 90 = top bezel left, 270 = top bezel right
2026-09-15 17:30:41 -07:00
Frank 118390a9e2 feat(niri): flameshot takes screenshot binds CTRL+Shift+1/2/3 on both hosts 2026-09-10 19:42:57 -07:00
Frank 2db711964b feat(zz-blankpad): ghostty terminal bind and bun PATH for omp
blankpad runs quickshell 0.3.1 from repos with the noctalia shell; flip
Mod+Return to spawn ghostty (installed) instead of alacritty, and put the
bun global bin dir on PATH so the pi-coding-agent/omp shim resolves in
interactive zsh.
2026-09-10 15:09:39 -07:00
Frank 5efb218061 feat(dotfiles): zz-blankpad host override package
Host-specific divergence for blankpad deployed last with override semantics:
display layout (its own outputs, not Dankware's DP/eDP rig), autostart and
keybinds targeting the bare 'noctalia' CLI instead of qs -c noctalia-shell,
misc without renderD129, rules without the Noctalia floating-window rule, and
blank's own .zshrc. All other packages deploy canonical from base.
2026-09-09 19:32:56 -07:00