feat(hyprland): launch-or-focus binds (item 17)
All checks were successful
Check / eval (push) Successful in 3m4s

nomarchy.launchOrFocus (opt-in, commented template example): each
entry gives a key that FOCUSES the app's existing window
(case-insensitive class match via jq + a "(?i)" focuswindow regex) or
launches it when none is open. One shared nomarchy-focus-or-launch
script; a bind whose command was removed from the suite fires a
"not installed" toast instead of failing silently. The same entries
render into the SUPER+? cheatsheet through prettyKeys — bind and
documentation stay one source. README row added.

Verified: V0; V1 — a scratch downstream with two entries renders both
binds (default command = lowercased class; custom mods/command/desc
honored), the script passes bash -n with a usage guard, and the
cheatsheet carries both rows. Focus behaviour needs a session -> V3
(HARDWARE-QUEUE).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Bernardo Magri
2026-07-05 20:56:01 +01:00
parent 4e3acbe89c
commit 8d54eecd67
8 changed files with 116 additions and 6 deletions

View File

@@ -214,11 +214,6 @@ the *same* outputs. **Plan (designed 2026-07-05, iteration #27):**
- **Non-goals:** no kanshi (fights Hyprland's output management —
decided in ROADMAP), nwg-displays stays a find-the-values helper.
### 17. Launch-or-focus UX scripts
ROADMAP § launch-or-focus. Hyprland dispatch scripts: a bind launches an
app or focuses its existing window. Curate which apps get binds;
cheatsheet entries via keybinds.nix.
### 18. "nomarchy" control center + first-boot welcome `[big]`
ROADMAP § control center. A single front-end over the common toggles on
the same `nomarchy-theme-sync` surface, + a first-boot guided

View File

@@ -167,6 +167,12 @@ QA machine), the **T14s** (webcam case).
(tooltips, fastfetch labels) is visible on summer-day +
flexoki-light, kanagawa floats are lighter than the bg (upstream
sumiInk4). Anything that reads worse than before → reopen 28b.
- [ ] **Launch-or-focus (item 17)** — uncomment the template's
`nomarchy.launchOrFocus` firefox example (with firefox
installed), `home-update` + reload: SUPER+B launches firefox
when closed, FOCUSES the existing window when open (also from
another workspace); with firefox removed the bind fires a
"not installed" toast; the row shows under SUPER+?.
- [ ] **Themed greeter + console (item 16)** — after `sys-rebuild` +
logout: tuigreet renders in theme colors (dark container, accent
border, themed prompt/time) and a raw tty (CTRL+ALT+F2) shows the

View File

@@ -17,6 +17,28 @@ Template:
---
## 2026-07-05 — launch-or-focus binds (iteration #39, item 17)
- **Task:** BACKLOG NEXT#17 (the UI review is Bernardo-gated; back to
the queue head). Item deleted.
- **Did:** nomarchy.launchOrFocus (listOf submodule: key/mods/class/
command/desc; opt-in, template example) → hyprland.nix generates
binds through a shared nomarchy-focus-or-launch script (jq
case-insensitive class match → focuswindow "(?i)" regex, else
launch; uninstalled command → toast, so binds survive suite edits);
rofi.nix renders the same entries into the SUPER+? cheatsheet via
prettyKeys (single source). README row.
- **Verified:** V0; V1 — scratch downstream with 2 entries: both
binds rendered (default command = lowercased class; custom
mods/command/desc honored), tool bash -n + usage exit 64,
cheatsheet rows present. Focus behaviour needs a session → V3
queued.
- **Pending:** V3. Queue after this: #18 control center [big, needs
the form-factor Decision], #19 Look&Feel menu (gated on ≥3
entries), #20 [human], LATER tier.
- **Next suggestion:** a QA sweep (#18/#19/#20 are blocked-ish) — or
item 19's precondition check (does Look & Feel earn 3 entries
yet?).
## 2026-07-05 — placeholder dim + latte review + backdrop probe (iteration #38, item 28c)
- **Task:** item 28 slice (c) — the summer-rasi quickie + the light-
theme capture.