ratty

Project Url: orhun/ratty
Introduction: A GPU-rendered terminal emulator with inline 3D graphics 🐀🧀
More: Author   ReportBugs   OfficialWebsite   
Tags:



Ratty: A GPU-rendered terminal emulator with inline 3D graphics 🧀
Inspired by TempleOS | Built with Rust & Ratatui
Built with Ratatui badge

"Rodent-obsessed developer creates Ratty to bring 3D graphics to the command line" - The Register
"This New Terminal is Absurd (But Totally Fun)" - It's FOSS

▶️ 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

Packaging status

Requirements:

  • A GPU / graphics stack supported by Bevy and wgpu
  • Melted cheese (optional but recommended)

crates.io

cargo install ratty

Arch Linux

sudo pacman -S ratty

Binary releases

Prebuilt binaries are available on the GitHub releases page for direct download.

From Git

Requirements:

  • Rust toolchain with Cargo
  • on Bazzite / Bluefin: sudo rpm-ostree install gcc fontconfig-devel wayland-devel (then reboot)
  • on Debian / Ubuntu: sudo apt-get update ; sudo apt-get install gcc pkgconf libfontconfig-dev libwayland-dev
  • on Fedora: sudo dnf install gcc fontconfig-devel wayland-devel
cargo install --git https://github.com/orhun/ratty

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

[cursor.model]
path = "CairoSpinyMouse.obj"
scale_factor = 6.0
brightness = 0.5
x_offset = 0.5
plane_offset = 18.0
visible = true

[cursor.animation]
spin_speed = 1.4
bob_speed = 2.2
bob_amplitude = 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 size
  • brightness: adjusts the cursor material brightness
  • x_offset: shifts the cursor model horizontally inside the cell
  • plane_offset: pushes the cursor away from the warped terminal surface in 3D mode
  • visible: 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+Alt+Enter Toggle 2D / 3D mode
Ctrl+Alt+M Toggle Mobius mode
Ctrl+Alt+Up Increase warp
Ctrl+Alt+Down Decrease warp
Alt+PageUp Scroll one page up
Alt+PageDown Scroll one page down
Alt+Up Scroll one line up
Alt+Down Scroll one line down
Ctrl+= Increase font size
Ctrl+- Decrease font size
Ctrl+Alt+0 Reset font size

Inline 3D objects

Ratty uses its own protocol, the Ratty Graphics Protocol, to place inline 3D objects in terminal space.

RGP supports:

  • registering .obj and .glb assets 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:

  1. Ratatui buffer on CPU
  2. Parley/Vello renders on GPU
  3. Read back RGBA to CPU
  4. Copy into Bevy image
  5. 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)

  • "tetro-tui running in Ratty" - @Strophox

License

All code is licensed under The MIT License.

🦀 ノ( º \_ º ノ) - respect crables!

Credits

Ratty logo designed by @Strophox & @Harunocaksiz

Copyright

Copyright © 2026, Orhun Parmaksız

The author does not have a rat under the hat!
Apps
About Me
GitHub: Trinea
Facebook: Dev Tools