enBoxer/README.md
en af45b054cc Window swap/focus/reset hotkeys; clamp layout tiles to the monitor.
Do not run live compositor tests that move the user's windows.
2026-09-15 08:56:01 +02:00

68 lines
3.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# enBoxer
Mapped-key routing and live window crops for World of Warcraft on **Arch Linux + Hyprland**. Rust.
You list which hotkeys go where. Everything you do not list stays on the focused primary. A `passthrough` list can leave movement keys alone (the example uses ESDF). Alt-tab off the team and the desktop is normal.
Nothing is loaded into the game. Hyprland delivers keys with `hl.dsp.send_shortcut`. You bind macros in WoW yourself.
| Doc | What |
| --- | --- |
| [PLAN.md](PLAN.md) | Product plan and how Grok / OpenCode split work |
| [DESCRIPTION.md](DESCRIPTION.md) | One-page description |
| [AGENT.md](AGENT.md) | Designer / PM / worker contract |
| [TASKS.md](TASKS.md) | OpenCode tickets |
| [CHANGELOG.md](CHANGELOG.md) | What landed |
| [docs/DESIGN.md](docs/DESIGN.md) | Routing model |
| [docs/NOTES.md](docs/NOTES.md) | WoW interact / Hyprland capture |
| [docs/VIDEO.md](docs/VIDEO.md) | Live crop of another client |
| [docs/MACROS.md](docs/MACROS.md) | In-game macros |
## Routing (three modes)
Toggle with `Shift+Alt+M` (configurable) or `enboxer mode maps|mirror|off` while the daemon runs. A Hyprland notification shows the new mode.
1. **maps** — only keys you listed under `maps` are intercepted and sent where the map says. Everything else goes to the front window.
2. **mirror** — the front window still gets the real key; the same key is cloned to the other game windows. `passthrough` (e.g. ESDF) is not cloned.
3. **off** — nothing is intercepted. All keys go to the front window. The mode-toggle hotkey still works.
A **map** is a hotkey plus steps (send a key, send a named `game_bind`, wait) plus a **target**.
## Interact / loot
WoWs **Interact with Target** bind (plus Click to Move) walks an alt to the target and loots or talks. One press. Spamming it makes characters circle. The stock `loot` map: assist others → CTM on → interact once → wait `walk_delay_ms` → CTM off. See [docs/MACROS.md](docs/MACROS.md).
## Video FX
A region of another client is captured (`grim`) and shown on the primary. While the cursor is over that viewer, keys and clicks go to the **source** slot only. Covered sources need compositor toplevel export (not in this phase); keep the source visible for a live picture.
Optional Hyprland snippet: [examples/hyprland.lua](examples/hyprland.lua).
## Build
```bash
cd ~/git/enBoxer
cargo build --release
install -Dm755 target/release/enboxer ~/.local/bin/enboxer
```
Needs Hyprland 0.56 (Lua dispatchers), `hyprctl`, `grim`, and `mpv` (Video FX overlay).
## Use
```bash
enboxer # control panel (File / Session / Video / Maps)
enboxer run -c ~/.config/enboxer/profile.yaml # daemon only
enboxer doctor
```
The GUI saves `~/.config/enboxer/profile.yaml`. Start routing from **Session → Start routing**.
**Layout** places every captured client (stacked / grid / main+strip), then **Make main** swaps a minion into the large tile. Hotkeys: Ctrl+` swap next, Ctrl+F1… focus slot, Ctrl+Shift+F2… swap that slot to main, Ctrl+Shift+R reset layout.
`enboxer press Alt+G` fires a map without a Hyprland bind (daemon must be running).
## License
GPL-3.0-or-later.