Features
- Spinning rat cursor (customizable)
- Traditional 2D and new 3D mode!
- Inline 3D objects
- GPU-backed text rendering
- Image support (via Kitty Graphics Protocol >:()
▶️ Watch the demo video here!
📚 Read the behind the scenes blog post here!
3D mode
Ever wondered what's behind the terminal? Press Ctrl+Alt+Enter!
Installation
Requirements:
- Rust toolchain with Cargo
- A GPU / graphics stack supported by Bevy and wgpu
- Melted cheese (optional but recommended)
crates.io
Arch Linux
Binary releases
Prebuilt binaries are available on the GitHub releases page for direct download.
From Git
Configuration
The default configuration file is available in config/ratty.toml.
You can copy this file to $HOME/.config/ratty/ratty.toml and customize it.
Changing the cursor
[]
= "CairoSpinyMouse.obj"
= 6.0
= 0.5
= 0.5
= 18.0
= true
[]
= 1.4
= 2.2
= 0.08
For cursor.model.path, Ratty supports both .obj and .glb assets.
Other useful cursor fields are:
scale_factor: scales the model relative to the terminal cell sizebrightness: adjusts the cursor material brightnessx_offset: shifts the cursor model horizontally inside the cellplane_offset: pushes the cursor away from the warped terminal surface in 3D modevisible: show the custom 3D cursor model instead of only the terminal cursor
Key Bindings
| Key | Action |
|---|---|
| Ctrl+Alt+C | Copy selection |
| Ctrl+Alt+V | Paste clipboard |
| Ctrl+= | Increase font size |
| Ctrl+- | Decrease font size |
| Ctrl+Alt+0 | Reset font size |
| Ctrl+Alt+Enter | Toggle 2D / 3D mode |
| Ctrl+Alt+M | Toggle Mobius mode |
| Ctrl+Alt+Up | Increase warp |
| Ctrl+Alt+Down | Decrease warp |
Inline 3D objects
Ratty uses its own protocol, the Ratty Graphics Protocol, to place inline 3D objects in terminal space.
RGP supports:
- registering
.objand.glbassets by path - placing them at terminal cell anchors
- animation, scale, color, depth and other attributes
There is a Ratatui widget called ratatui-rgp available in
widget/ if you want to build your own terminal applications that involve inline 3D objects.
Examples
Big rat
Places a single oversized rat directly in your terminal:
Document
TempleOS-inspired document demo with editable text and embedded inline 3D objects:
Draw
Split-pane drawing demo with a 2D canvas on the left and a live 3D preview on the right:
Architecture
Rendering pipeline
The terminal surface currently uses ratatui for the UI buffer,
parley_ratatui for text shaping/rendering
and Bevy for scene presentation.
Current workflow:
- Ratatui buffer on CPU
- Parley/Vello renders on GPU
- Read back RGBA to CPU
- Copy into Bevy image
- Bevy presents that image in 2D and 3D
Terminal drawing is GPU-rendered through Parley/Vello, but the main terminal image still crosses back through CPU memory before Bevy presents it. This is a GPU-powered bridge, not a fully GPU-resident shared-texture path.
If the project later moves to a fully GPU-resident path, that will require a dedicated Bevy render integration that renders into a Bevy-owned texture on Bevy's render-world device instead of using the current readback bridge.
Endorsements
- "This is like a legitimately cool project but also I just spent like 20 minutes adjusting the config for the rat spinning to see him spin faster and more erratically and it cracked me up" - @vimlena.com
-
"These kinds of experiments are where creativity is born." - @Coko7
-
"No comments. Just support." - @Raphamorim (creator of Rio terminal)
License
All code is licensed under The MIT License.
Credits
Ratty logo designed by @Strophox & @Harunocaksiz
Copyright
Copyright © 2026, Orhun Parmaksız