Update DESIGN/NOTES/MACROS/PLAN: remove stale 'later' notes, move shipped PLAN.md items, note per-character assist/follow keys
This commit is contained in:
parent
a7acce2a6a
commit
c0d319c841
21
PLAN.md
21
PLAN.md
@ -27,16 +27,21 @@ Push: HTTPS `https://gitea.nettsi.de/en/enBoxer` only.
|
||||
- [x] HTTPS remote `en/enBoxer` (camelCase, matches the project name)
|
||||
- [x] Example Video FX **disabled**; layout tiles empty
|
||||
|
||||
## Shipped (since the last "Next" snapshot)
|
||||
|
||||
- [x] GUI: confirm before Apply; Session checkbox "Allow moving game windows" (`allow_layout` + `confirm_apply` popup)
|
||||
- [x] Named profiles (File save as / open) plus the new Teams + Lutris flow
|
||||
- [x] Type/clipboard broadcast to others (`type_to_others` + new `clipboard` IPC verb)
|
||||
- [x] Slot-number overlay (click to make main) — wlr-layer-shell client, gated `ENBOXER_ENABLE_OVERLAY=1`
|
||||
- [x] `hyprland-toplevel-export` for covered Video FX sources — `zwlr_export_dmabuf_unstable_v1`, gated `ENBOXER_ENABLE_TOPLEVEL=1`
|
||||
- [x] Follow/assist follow **current main** after swap — `Engine::resolve_party_bind` + `Character.assist_key`/`follow_key`
|
||||
- [x] Borderless via Hyprland window rules — `hypr::apply_borderless_rules` on `run`
|
||||
- [x] Mirror-mode mouse click broadcast (left + right, no press-and-hold guard yet)
|
||||
- [x] `round_robin` / `rr` bind target (rotates through ALL slots including the leader, per-map cursor)
|
||||
|
||||
## Next (still GOALS.md)
|
||||
|
||||
- [ ] GUI: confirm before Apply; Session checkbox “Allow moving game windows”
|
||||
- [ ] Named profiles (File save as / open)
|
||||
- [ ] Type/clipboard broadcast to others
|
||||
- [ ] Slot-number overlay (click to make main)
|
||||
- [ ] `hyprland-toplevel-export` for covered Video FX sources
|
||||
- [ ] Follow/assist follow **current main** after swap
|
||||
- [ ] Borderless via Hyprland window rules
|
||||
- [ ] Forever macros when that client exists
|
||||
- [ ] Forever macros when that client exists (Forever client does not exist yet — future)
|
||||
|
||||
## Invoke worker (only after tickets are listed in TASKS.md)
|
||||
|
||||
|
||||
@ -24,9 +24,8 @@ Delivery is compositor input to a window address.
|
||||
1. **Session off** (focus is not a captured slot and not an enBoxer overlay): no binds. Normal desktop.
|
||||
2. **Mode `maps` (default):** only `maps[].hotkey` are intercepted. Everything else, including movement, goes to the focused primary.
|
||||
3. **`passthrough`:** never intercepted, even if a map lists them. Default `[]`. Put `e s d f` here to keep those letters on the primary.
|
||||
4. **Mode `repeater`:** also clone `repeater.keys` to other slots (explicit list).
|
||||
5. **Mode `disabled`:** same as session off, with a hotkey to turn maps back on.
|
||||
6. **Video FX hover + `pass_through`:** keys and clicks inside the viewer go to the **source slot only**.
|
||||
4. **`passthrough`:** never intercepted, even if a map lists them. Default `[]`. Put `e s d f` here to keep those letters on the primary.
|
||||
5. **Video FX hover + `pass_through`:** keys and clicks inside the viewer go to the **source slot only**.
|
||||
|
||||
A map with `target: others` never delivers to the primary. A map with `target: all` consumes the OS key and re-sends to every slot including primary (no double-tap).
|
||||
|
||||
@ -36,7 +35,7 @@ See `docs/MACROS.md`. Stock `loot` map: assist + CTM on + Interact with Target +
|
||||
|
||||
## Video FX
|
||||
|
||||
Each feed is a source rect (slot + normalized box) plus a viewer rect on the current primary. Overlay class `enboxer-vfx`. Capture is `grim` of visible pixels. Covered windows need `hyprland-toplevel-export` (later).
|
||||
Each feed is a source rect (slot + normalized box) plus a viewer rect on the current primary. Overlay class `enboxer-vfx`. Capture is `grim` for visible sources, `zwlr_export_dmabuf_unstable_v1` for covered sources (gated behind `ENBOXER_ENABLE_TOPLEVEL=1`). See [docs/VIDEO.md](VIDEO.md).
|
||||
|
||||
## Config
|
||||
|
||||
|
||||
@ -28,7 +28,9 @@ and `"0"` for off.
|
||||
|
||||
## Assist / Follow
|
||||
|
||||
Replace `MainName` with the character you play from. When you swap who is primary, update the names (no-addon tradeoff). Later we can emit one follow/assist bind per slot.
|
||||
Replace `MainName` with the character you play from. When you swap who is primary, update the names (no-addon tradeoff).
|
||||
|
||||
**Per-character bind keys (already wired):** set `assist_key` and `follow_key` on each `Character` in the profile — those are the in-game macros every account should bind to `/assist ThisName` / `/follow ThisName`. A map using `bind: assist` (or `bind: follow`) resolves to the current main's key, so swap-to-slot-N automatically retargets the bind without re-editing YAML.
|
||||
|
||||
**Assist** — `game_binds.assist` (example Shift+F2):
|
||||
|
||||
|
||||
@ -34,4 +34,4 @@ If a window is **native Wayland** (including `winewayland`), unfocused inject of
|
||||
|
||||
The Session page lists each window as `XWayland/Wine` or `Wayland`.
|
||||
|
||||
Visible-pixel capture: `grim`. Overlay: `mpv --wayland-app-id=enboxer-vfx` plus JSON IPC to reload frames. Covered windows: `hyprland-toplevel-export` (not wired yet).
|
||||
Visible-pixel capture: `grim` (default). Overlay: `mpv --wayland-app-id=enboxer-vfx` plus JSON IPC to reload frames. Covered sources use `zwlr_export_dmabuf_unstable_v1` (Hyprland implements the wlroots protocol); gated behind `ENBOXER_ENABLE_TOPLEVEL=1`. See [docs/VIDEO.md](VIDEO.md).
|
||||
|
||||
Loading…
Reference in New Issue
Block a user