2.5 KiB
Overlay
Status: Phase 2 — design draft.
The VNOX overlay renders a HUD on top of running games and applications, showing voice channel state without alt-tabbing.
What it shows
- who is currently speaking (avatar / nickname + audio indicator)
- your own mic state (active / muted / push-to-talk held)
- current channel name
- latency (RTT to node)
- hotkey state hints
Architecture
The overlay is a separate process that communicates with the main VNOX client via a local IPC socket (Unix socket / named pipe).
The client pushes state updates to the overlay:
- user speaking events (
VOICE_STATE) - channel changes
- mute state changes
The overlay renders on top of other applications.
Rendering approach
| Platform | Method |
|---|---|
| Windows | DirectX overlay injection or transparent top-level window |
| Linux (X11) | Shaped transparent window, always-on-top |
| Linux (Wayland) | Layer shell protocol (wlr-layer-shell) |
| macOS | CGWindow overlay |
Implementation complexity varies significantly by platform. Windows DX injection is the most reliable for full-screen games.
Game integrations
For games that support it, the overlay can receive additional data:
Positional voice (Phase 4)
Games that expose player position data can send it to VNOX, enabling positional audio — players hear each other based on in-game distance and direction.
Integration methods:
| Game / Engine | Method |
|---|---|
| Minecraft | Fabric/Forge mod that sends position via local socket |
| Source Engine | Client plugin / VScript |
| Unreal Engine | Plugin exposing position to named pipe |
| Unity | SDK that writes position to shared memory |
Protocol for positional data is TBD (Phase 4 design).
Speaking indicators in-game
Some games support custom HUD elements. Where possible, the overlay will render directly within the game's UI rather than as an external window.
Configuration
[overlay]
enabled = true
# Overlay position on screen
position = "top-right" # top-left | top-right | bottom-left | bottom-right
# Opacity (0.0–1.0)
opacity = 0.85
# Show latency
show_latency = false
# Hotkey to toggle overlay visibility
toggle_hotkey = "ctrl+shift+o"
Hotkeys
All hotkeys are global (work even when VNOX window is not focused).
| Action | Default |
|---|---|
| Push-to-talk | mouse4 |
| Mute toggle | ctrl+m |
| Deafen toggle | ctrl+d |
| Toggle overlay | ctrl+shift+o |
Configurable in Settings → Keybinds.