Terminal & TUI Stack
loom-games Doom in any Terminal
loom-doom renders live Chocolate Doom frames as ANSI colors and Unicode glyphs, with half-block, quad, or sextant modes.
Why loom-games
Why loom-games
A Snake prototype became a test bed for a harder question: how far can terminal rendering go? Doom brings a real game’s pixels and responsive controls into the terminal, exposing the boundaries between game rendering, terminal geometry, and desktop input.
What it does
What it does
Three glyph modes
Go maps captured pixels into half-block, quad, or sextant Unicode cells, fitting Doom’s 320×200 frame to terminal geometry.
Desktop input capture
A transparent SDL capture surface forwards mouse and key events while the game remains visible in the terminal. Terminal and hybrid input paths are also documented.
Measured rendering
Telemetry, repaint benchmarks, and real-frame probes make rendering performance and frame recognition inspectable.
- Chocolate Doom
- C / SDL shim
- POSIX shared memory
- Go + Cati
- ANSI colors + Unicode glyphs
The SDL rendering path is captured and turned into terminal cells.
Recent milestones
Recent milestones
- 2026-10-01 — SDL3 transparency verified live on GNOME Wayland, with an SDL2 fallback. dcb3f38
- 2026-10-02 — Multi-level Doom rendering telemetry HUD delivered. 07fb41c
- 2026-10-03 — Adopted Loom v0.3.0 and Cati v0.2.9 alongside repaint benchmark work. 34f2da3
Historical milestones from the review through October 4, 2026.
Testing the desktop boundary
Testing the desktop boundary
The capture surface was opaque on Wayland; later attempts left a magenta glow. Direct compositor canaries exposed the need for a borderless, windowed-fullscreen SDL3 surface and premultiplied pixels. Frame matching also moved beyond synthetic fixtures: the recorded real-frame probe recognized the status bar in 119/120 samples and health and ammo in 114/115, with a screen transition accounting for the miss.
The October 4 review records 313 commits in six weeks, 63 numbered tickets, and 170 test functions: evidence of pace and breadth across Go, C, SDL, and terminal protocols.
Current scope and limits
Current scope and limits
Doom has been tested and is playable in the seven terminals listed below. That evidence does not establish support in every terminal. Issues 061 and 062 still track live checks for grab bindings and renderer cycling. Chocolate Doom is GPL-licensed, and running Doom requires separately supplied, legally obtained WAD game data.
Tested terminals
Tested terminals
Owner-reported testing found Doom playable in each of these terminals.
| Terminal | Status |
|---|---|
| Tilix | Tested and playable |
| Foot | Tested and playable |
| Kitty | Tested and playable |
| Ptyxis | Tested and playable |
| CRT | Tested and playable |
| xfce4-terminal | Tested and playable |
| Alacritty | Tested and playable |
Renderer performance work in Cati and Loom Games included patches from Google Jules, a cloud coding agent; the changes were reviewed and integrated. See the Loom Games study and the Cati study.
Explore the source
Explore the source
See the source repository for build requirements and project documentation, or browse releases.