fix(menu): release Left from kb-move-char-back before binding it to Back
Some checks failed
Check / eval (push) Failing after 8m34s
Some checks failed
Check / eval (push) Failing after 8m34s
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 <noreply@anthropic.com>
This commit is contained in:
@@ -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
|
fixture. Control-center / MOTD already mention these; the gap is the
|
||||||
silent first *graphical* session for people who never open those.
|
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/<icon-theme>/…` (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
|
_(#80–#83 + #85–#88 shipped 2026-07-11. Theme A day-2 + neon-glass finish
|
||||||
shipped — VISION ✓. Dock/hibernate V3 → HARDWARE-QUEUE.)_
|
shipped — VISION ✓. Dock/hibernate V3 → HARDWARE-QUEUE.)_
|
||||||
|
|
||||||
|
|||||||
@@ -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)
|
## 2026-07-11 — post-migration fix batch (05bab55; entry backfilled)
|
||||||
- **Task:** Escalation — first real-hardware migration (TuringMachine →
|
- **Task:** Escalation — first real-hardware migration (TuringMachine →
|
||||||
Nomarchy) surfaced a batch of annoyances; session crashed before
|
Nomarchy) surfaced a batch of annoyances; session crashed before
|
||||||
|
|||||||
@@ -240,6 +240,10 @@ let
|
|||||||
# the whole menu. Free-text prompts should treat "$BACK" as cancel.
|
# the whole menu. Free-text prompts should treat "$BACK" as cancel.
|
||||||
# Pass --grid as the first arg to skip Left=Back (multi-column theme
|
# Pass --grid as the first arg to skip Left=Back (multi-column theme
|
||||||
# picker needs Left for column motion).
|
# 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() {
|
rofi_menu() {
|
||||||
local out rc left_back=1
|
local out rc left_back=1
|
||||||
if [ "''${1:-}" = --grid ]; then
|
if [ "''${1:-}" = --grid ]; then
|
||||||
@@ -247,7 +251,8 @@ let
|
|||||||
shift
|
shift
|
||||||
fi
|
fi
|
||||||
if [ "$left_back" -eq 1 ]; then
|
if [ "$left_back" -eq 1 ]; then
|
||||||
out=$(command rofi -dmenu -i -kb-custom-1 Left "$@" </dev/stdin)
|
out=$(command rofi -dmenu -i -kb-move-char-back Control+b \
|
||||||
|
-kb-custom-1 Left "$@" </dev/stdin)
|
||||||
else
|
else
|
||||||
out=$(command rofi -dmenu -i "$@" </dev/stdin)
|
out=$(command rofi -dmenu -i "$@" </dev/stdin)
|
||||||
fi
|
fi
|
||||||
@@ -1207,7 +1212,10 @@ ${themeRows}
|
|||||||
# VPN submenu died with "rofi_menu: command not found").
|
# VPN submenu died with "rofi_menu: command not found").
|
||||||
rofi_menu() {
|
rofi_menu() {
|
||||||
local out rc
|
local out rc
|
||||||
out=$(command rofi -dmenu -i -kb-custom-1 Left "$@" </dev/stdin)
|
# Release Left from kb-move-char-back first — rofi hard-fails on a
|
||||||
|
# duplicate binding (same fix as the menu's rofi_menu above).
|
||||||
|
out=$(command rofi -dmenu -i -kb-move-char-back Control+b \
|
||||||
|
-kb-custom-1 Left "$@" </dev/stdin)
|
||||||
rc=$?
|
rc=$?
|
||||||
if [ "$rc" -eq 10 ]; then
|
if [ "$rc" -eq 10 ]; then
|
||||||
printf '%s\n' "$BACK"
|
printf '%s\n' "$BACK"
|
||||||
|
|||||||
Reference in New Issue
Block a user