From 482cb87c705625dd3ef228a4c8ee8fd84216ea53 Mon Sep 17 00:00:00 2001 From: Bernardo Magri Date: Sat, 11 Jul 2026 16:58:04 +0100 Subject: [PATCH] fix(menu): release Left from kb-move-char-back before binding it to Back MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit rofi hard-fails on a duplicate keybinding and reports it in a GUI error dialog, not stderr — so 05bab55's Left=Back killed every menu entry point on a real session while passing all stubbed tests. Rebind kb-move-char-back to Control+b in both rofi_menu copies (menu + vpn). V3 on the migrated T14s: error dialog reproduced with old flags, menu renders with fixed flags. Journal + two PROPOSED pitches (EasyEffects 8 tray icon, parallel fingerprint/password PAM). Co-Authored-By: Claude Fable 5 --- agent/BACKLOG.md | 21 +++++++++++++++++++++ agent/JOURNAL.md | 16 ++++++++++++++++ modules/home/rofi.nix | 12 ++++++++++-- 3 files changed, 47 insertions(+), 2 deletions(-) diff --git a/agent/BACKLOG.md b/agent/BACKLOG.md index 3a64d44..ad87910 100644 --- a/agent/BACKLOG.md +++ b/agent/BACKLOG.md @@ -118,6 +118,27 @@ high-ROI, etc.) live in the journal + ROADMAP — not here.* fixture. Control-center / MOTD already mention these; the gap is the silent first *graphical* session for people who never open those. +- **EasyEffects 8 tray icon breaks bar aesthetics** (2026-07-11, T14s + V3) — EasyEffects 8 (Qt SNI rewrite) publishes IconName + `com.github.wwmm.easyeffects`, which resolves to Papirus's full-color + blue icon in Waybar's tray; EE 7 showed a symbolic glyph that matched + the monochrome bar. Options: ship a monochrome override SVG shadowing + the id in `$XDG_DATA_HOME/icons//…` (must follow the + theme's icon set per THEME-DESIGN), or upstream a `-symbolic` + IconName. Cost: small for a single-icon override, but it's per-icon + whack-a-mole — worth deciding a general "tray icon parity" policy + (nm-applet/udiskie currently pass only by luck of their icon sets). + +- **Fingerprint *or* password, in parallel** (2026-07-11, Bernardo) — + `fingerprint.pam` gives pam_fprintd's sequential UX: sudo waits on + the reader, password only after failure/timeout. Bernardo wants + either factor accepted at the same prompt (type the password *or* + touch the sensor, whichever comes first). Stock PAM can't express + this; needs a parallel-conversation module (e.g. `pam-any`, not in + nixpkgs — would be a new package + `fingerprint.pam = "any"` mode). + Cost: medium (package + PAM wiring + careful lockout testing on real + hardware). Security note: keep sudo fallback sane if fprintd hangs. + _(#80–#83 + #85–#88 shipped 2026-07-11. Theme A day-2 + neon-glass finish shipped — VISION ✓. Dock/hibernate V3 → HARDWARE-QUEUE.)_ diff --git a/agent/JOURNAL.md b/agent/JOURNAL.md index 2899472..fc34ff1 100644 --- a/agent/JOURNAL.md +++ b/agent/JOURNAL.md @@ -19,6 +19,22 @@ Template: --- +## 2026-07-11 — hotfix: Left=Back bound over rofi default → every menu dead +- **Task:** Escalation — V3 on the migrated T14s: all `nomarchy-menu` + entry points (main, battery, power-profile, VPN) showed rofi's + "Binding 'Left' is already bound" error dialog instead of a menu. +- **Did:** `rofi.nix` — release `kb-move-char-back` to `Control+b` before + binding `-kb-custom-1 Left`, in both `rofi_menu` copies (menu + vpn). + rofi hard-fails on duplicate bindings, and reports it in a GUI dialog, + not stderr — stub tests and `bash -n` can never catch this class. + Filed PROPOSED: EasyEffects 8 blue tray icon; parallel finger/password. +- **Verified:** **V3** — real rofi on the T14s: old flags reproduce the + error dialog (screenshot), fixed flags render the menu; after HM + switch, `nomarchy-menu` renders end-to-end. V0 flake check green. +- **Pending:** flatpak apps missing from drun = stale session env + (relogin), not a code bug. EasyEffects icon + pam items in PROPOSED. +- **Next suggestion:** V3 sweep of the remaining 05bab55 session items. + ## 2026-07-11 — post-migration fix batch (05bab55; entry backfilled) - **Task:** Escalation — first real-hardware migration (TuringMachine → Nomarchy) surfaced a batch of annoyances; session crashed before diff --git a/modules/home/rofi.nix b/modules/home/rofi.nix index 147c3e8..ea67f67 100644 --- a/modules/home/rofi.nix +++ b/modules/home/rofi.nix @@ -240,6 +240,10 @@ let # the whole menu. Free-text prompts should treat "$BACK" as cancel. # Pass --grid as the first arg to skip Left=Back (multi-column theme # picker needs Left for column motion). + # Left is bound to kb-move-char-back by default and rofi hard-fails + # on a duplicate binding (error dialog, no menu) — every binding we + # steal must be released from its default first (Ctrl+b remains for + # cursor motion in text prompts). rofi_menu() { local out rc left_back=1 if [ "''${1:-}" = --grid ]; then @@ -247,7 +251,8 @@ let shift fi if [ "$left_back" -eq 1 ]; then - out=$(command rofi -dmenu -i -kb-custom-1 Left "$@"