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.
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.
- 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.
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.
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.
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)
- 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)
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.
- 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
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.
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.