// the find
orhun/ratty
A GPU-rendered terminal emulator with inline 3D graphics 🐀🧀
Ratty is a GPU-rendered terminal emulator written in Rust that embeds inline 3D objects alongside regular terminal output, inspired by TempleOS's HolyC graphics integration. It ships its own Ratty Graphics Protocol (RGP) so other Ratatui-based apps can place and animate .obj/.glb models inside the terminal cell grid. This is firmly in the 'experiment / novelty' category right now, not a drop-in replacement for your daily driver.
The RGP widget (`ratatui-rgp`) is the actually interesting artifact here — it's a clean, reusable Ratatui widget that any TUI app can pull in to place 3D objects, and the protocol spec is documented separately in `protocols/graphics.md`. The rendering stack (Parley/Vello for GPU text shaping feeding into Bevy for scene presentation) is technically coherent and shows real design thought rather than a quick hack. Packaging is first-class: crates.io, Arch extra repo, Nix flake with Home Manager support, and prebuilt binaries — orhun knows how to ship Rust tools. The ecosystem is already forming: ratscad (terminal CAD), ComChan (serial monitor with 3D telemetry), and a Tetris clone running inside it all appeared organically within weeks.
The rendering pipeline has a fundamental inefficiency the README openly admits: the terminal image still crosses back to CPU memory between Parley/Vello and Bevy instead of staying GPU-resident. Until that shared-texture path is implemented, you're paying a readback penalty on every frame. There's no mention of VTE/escape code compatibility coverage, which is the hard part of a real terminal emulator — if it can't handle tmux or vim properly it's a demo, not a terminal. GPU requirement is a real barrier: wgpu/Bevy's device requirements will silently fail or perform badly on older hardware, remote SSH sessions, or headless environments, and there's no fallback path. The key binding scheme (Ctrl+Alt+everything) will conflict with common terminal shortcuts and window manager bindings on Linux, and there's no indication this is configurable yet.