Rust Hyprland multibox controller for World of Warcraft - rewrite of enBuddy
Go to file
2026-09-15 07:26:44 +02:00
docs Initial enBoxer: mapped-key routing and Video FX on Hyprland. 2026-09-15 07:19:15 +02:00
examples Initial enBoxer: mapped-key routing and Video FX on Hyprland. 2026-09-15 07:19:15 +02:00
src Initial enBoxer: mapped-key routing and Video FX on Hyprland. 2026-09-15 07:19:15 +02:00
.gitignore Initial enBoxer: mapped-key routing and Video FX on Hyprland. 2026-09-15 07:19:15 +02:00
AGENT.md Initial enBoxer: mapped-key routing and Video FX on Hyprland. 2026-09-15 07:19:15 +02:00
Cargo.lock Initial enBoxer: mapped-key routing and Video FX on Hyprland. 2026-09-15 07:19:15 +02:00
Cargo.toml Point remote at https://gitea.nettsi.de/en/enbuddy 2026-09-15 07:26:44 +02:00
CHANGELOG.md Initial enBoxer: mapped-key routing and Video FX on Hyprland. 2026-09-15 07:19:15 +02:00
DESCRIPTION.md Point remote at https://gitea.nettsi.de/en/enbuddy 2026-09-15 07:26:44 +02:00
LICENSE Initial enBoxer: mapped-key routing and Video FX on Hyprland. 2026-09-15 07:19:15 +02:00
opencode.json Initial enBoxer: mapped-key routing and Video FX on Hyprland. 2026-09-15 07:19:15 +02:00
PLAN.md Point remote at https://gitea.nettsi.de/en/enbuddy 2026-09-15 07:26:44 +02:00
README.md Initial enBoxer: mapped-key routing and Video FX on Hyprland. 2026-09-15 07:19:15 +02:00
TASKS.md Initial enBoxer: mapped-key routing and Video FX on Hyprland. 2026-09-15 07:19:15 +02:00

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 Product plan and how Grok / OpenCode split work
DESCRIPTION.md One-page description
AGENT.md Designer / PM / worker contract
TASKS.md OpenCode tickets
CHANGELOG.md What landed
docs/DESIGN.md Routing model
docs/NOTES.md WoW interact / Hyprland capture
docs/MACROS.md In-game macros

Routing

  • A map is a hotkey plus steps (send a key, send a named game_bind, wait) plus a target.
  • Unmapped keys are not intercepted.
  • passthrough keys are never intercepted, even if a map lists them. Default is empty.
  • Optional repeater mode also clones an explicit extra key list to the other slots.

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.

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.

Build

cd ~/git/enBoxer
cargo build --release
install -Dm755 target/release/enboxer ~/.local/bin/enboxer

Needs Hyprland 0.56 (Lua dispatchers), hyprctl, grim. A viewer (imv or feh) for Video FX overlays.

Use

mkdir -p ~/.config/enboxer
cp examples/profile.yaml ~/.config/enboxer/profile.yaml
# edit window_match, passthrough, maps, character names

enboxer doctor -c ~/.config/enboxer/profile.yaml
enboxer macros -c ~/.config/enboxer/profile.yaml
enboxer run   -c ~/.config/enboxer/profile.yaml

enboxer press Alt+G fires a map without a Hyprland bind (daemon must be running).

License

GPL-3.0-or-later.