orhun/ratty

Rustratty-term.org
macOSWindowsLinux

alternativa a GhosttyTabbyTermux

A GPU-rendered terminal emulator with inline 3D graphics 🐀🧀

3d3d-graphicscommandgpugpu-renderinggraphicsratatuirusttempleosterminalterminal-emulatorterminal-emulators
Crecimiento de estrellas
Estrellas
3.2k
Forks
89
Crecimiento semanal
+6
Issues
40
1k2k3k
abr 26may 26jul 26sept 26
Artefactoscrates.io
README



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
"10 weird OSS projects you need right now... " - Fireship
"Your terminal can render in 3D now, and Rust made it surprisingly usable" - MakeUseOf

Features

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

Nix

See the Nix packaging docs for flake, NixOS, and Home Manager usage.

nix run github:orhun/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, .glb, and .stl 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 / ortho 3D
Ctrl+Alt+P Toggle perspective
Ctrl+Alt+M Toggle Mobius mode
Ctrl+Alt+Shift+0-9 Activate camera slot
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

In custom configs, ToggleOrtho3DMode is the current action name for the orthographic 3D toggle. The old Toggle3DMode action remains supported as a backward-compatible alias.

Camera slot actions are named ActivateCameraSlot0 through ActivateCameraSlot9. The extra Shift modifier keeps slot 0 distinct from the existing Ctrl+Alt+0 font reset.

Inline 3D objects

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

RGP supports:

  • registering .obj, .glb, and .stl assets by path
  • placing them at terminal cell anchors
  • animation, scale, color, depth and other attributes
  • camera control for flat, orthographic, perspective and Mobius views

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. Press v in the demo to cycle the Ratty camera protocol through flat, orthographic, perspective and Mobius views.

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:

Rubik's cube

Interactive 3D Rubik's cube demo:

Mobius Chess

A Mobius-strip chess demo:

Apps

Here are some applications explicitly built around Ratty's Graphics Protocol:

Ratscad

Terminal CAD:

Ratty-runner

Endless runner built for Ratty:

ComChan

A blazingly fast serial monitor with plotter TUI and 3D telemetry

Architecture

Rendering pipeline

The terminal surface currently uses ratatui for the UI buffer, bevy_terminal_ratatui for text shaping/rendering and Bevy for scene presentation.

Current workflow:

  1. PTY output is parsed by the ratty-vt workspace crate (Ratty's fork of vt100) and drawn into a Ratatui buffer on CPU
  2. bevy_terminal_ratatui translates Ratatui's changed cells into a retained terminal surface
  3. bevy_terminal shapes text with Bevy's font system and incrementally builds compact background, decoration, cursor, and glyph quads
  4. Bevy's render world draws those quads into a renderer-owned Rgba8UnormSrgb texture
  5. Ratty presents that stable texture handle in its flat, plane, perspective, and Mobius scenes

The terminal image is fully GPU-resident: the only data crossing from the main world to the render world each frame is compact scene data, not pixels.

Workspace development

The Cargo workspace contains the Ratty application and the independent ratty-vt terminal engine. The widget remains a separate package under widget/ with its own lockfile.

cargo test -p ratty-vt --locked      # Engine tests without building Bevy
cargo test --workspace --locked     # Application, engine, and doctests
cargo package --workspace --locked  # Verify both packages together

Ratty uses a local path dependency during development and a versioned ratty-vt dependency when published. See the engine's publishing instructions for release order.

Touchscreen

In 3D mode, drag with one finger to rotate the terminal. Move two fingers together to pan, and pinch them to zoom. Swipe diagonally from the bottom-left toward the top-right to enter Mobius mode.

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 © 2026, Orhun Parmaksız

The author does not have a rat under the hat!
Repositorios relacionados
mrdoob/three.js

JavaScript 3D Library.

JavaScriptnpmlibraryMIT Licensejavascript3d
threejs.org
115.3k36.5k
DavidHDev/react-bits

An open source collection of animated, interactive & fully customizable React components for building memorable websites.

JavaScriptnpmOtheranimationscomponents
reactbits.dev
46.9k2.3k
FreeCAD/FreeCAD

Official source code of FreeCAD, a free and opensource multiplatform 3D parametric modeler.

C++appGNU Lesser General Public License v2.1freecadengineering
freecad.org
33.4k6k
pmndrs/react-three-fiber

🇨🇭 A React renderer for Three.js

TypeScriptnpmMIT Licensereactthreejs
docs.pmnd.rs/react-three-fiber
32.2k2k
4ian/GDevelop

🎮 Open-source, cross-platform 2D/3D/multiplayer game engine designed for everyone.

JavaScriptnpmOthergamejavascript
gdevelop.io
26.4k1.5k
BabylonJS/Babylon.js

Babylon.js is a powerful, beautiful, simple, and open game and rendering engine packed into a friendly JavaScript framework.

TypeScriptnpmApache License 2.0webglwebgl2
babylonjs.com
26k3.7k
libgdx/libgdx

Desktop/Android/HTML5/iOS Java game development framework

JavaMavenlibraryApache License 2.0libgdxjava
libgdx.com
25.4k6.5k
ssloy/tinyrenderer

A brief computer graphics / rendering course

C++tutorialOtheropenglc-plus-plus
haqr.eu/tinyrenderer/
24.2k2.3k
pascalorg/editor

Create and share 3D architectural projects.

TypeScriptnpmappMIT License3darchitecture
editor.pascal.app
22.6k2.9k
blender/blender

Official mirror of Blender

C++Otherb3danimation
developer.blender.org/docs/handbook/contributing/using_git/
20.2k3.2k
lettier/3d-game-shaders-for-beginners

🎮 A step-by-step guide to implementing SSAO, depth of field, lighting, normal mapping, and more for your 3D game.

C++tutorialshaders3d
lettier.github.io/3d-game-shaders-for-beginners/index.html
19.9k1.5k
aframevr/aframe

:a: Web framework for building virtual reality experiences.

JavaScriptnpmMIT Licensevrwebvr
aframe.io
17.6k4.4k