| Crates.io | egui_ratatui |
| lib.rs | egui_ratatui |
| version | 2.1.0 |
| created_at | 2024-06-02 10:39:46.013424+00 |
| updated_at | 2026-01-04 00:05:23.145647+00 |
| description | WASM ratatui with egui works with bevy and macroquad and eframe |
| homepage | |
| repository | https://github.com/gold-silver-copper/egui_ratatui |
| max_upload_size | |
| id | 1259135 |
| size | 46,198 |
RataguiBackend is a combined ratatui Backend and egui Widget that lets you render a full Ratatui terminal inside an egui UI. Because egui is WASM-friendly, this makes it easy to run terminal-style TUI apps in desktop GUIs or in the browser.
egui_ratatui builds on top of the [soft_ratatui] library and inherits its features:
embedded-graphics, embedded-ttf, bdf-parser, cosmic-text.Add the crate to your project:
cargo add egui_ratatui
You will typically also add soft_ratatui (the rendering backends) and ratatui:
cargo add soft_ratatui
cargo add ratatui
Or clone and run the included examples:
git clone https://github.com/gold-silver-copper/egui_ratatui.git
cd egui_ratatui
cd bevy_example
cargo run --release
use eframe::egui;
use egui_ratatui::RataguiBackend;
use ratatui::Terminal;
use ratatui::prelude::Stylize;
use ratatui::widgets::{Block, Borders, Paragraph, Wrap};
use soft_ratatui::embedded_graphics_unicodefonts::{
mono_8x13_atlas, mono_8x13_bold_atlas, mono_8x13_italic_atlas,
};
use soft_ratatui::{EmbeddedGraphics, SoftBackend};
fn main() -> eframe::Result {
let options = eframe::NativeOptions {
viewport: egui::ViewportBuilder::default().with_inner_size([320.0, 240.0]),
..Default::default()
};
let font_regular = mono_8x13_atlas();
let font_italic = mono_8x13_italic_atlas();
let font_bold = mono_8x13_bold_atlas();
let soft_backend = SoftBackend::<EmbeddedGraphics>::new(
100,
50,
font_regular,
Some(font_bold),
Some(font_italic),
);
let mut backend = RataguiBackend::new("soft_rat", soft_backend);
let mut terminal = Terminal::new(backend).unwrap();
eframe::run_simple_native("My egui App", options, move |ctx, _frame| {
terminal
.draw(|frame| {
let area = frame.area();
let textik = format!("Hello eframe! The window area is {}", area);
frame.render_widget(
Paragraph::new(textik)
.block(Block::new().title("Ratatui").borders(Borders::ALL))
.white()
.on_blue()
.wrap(Wrap { trim: false }),
area,
);
})
.expect("epic fail");
egui::CentralPanel::default().show(ctx, |ui| {
ui.add(terminal.backend_mut());
});
})
}

soft_ratatui dependency)soft_ratatui (and therefore egui_ratatui) is modular. Enable only the backends you need to reduce binary size and dependencies. (Note: these features flags must be set on the soft_ratatui dependency, I am only mentioning them here for visibility)
| Feature | Enables | Description |
|---|---|---|
unicodefonts |
[embedded_graphics_unicodefonts] |
Embedded-graphics fonts with Unicode support. Automatically enables embedded-graphics. Enabled by default. |
embedded-graphics |
[EmbeddedGraphics] |
Uses embedded-graphics font atlases for TUI rendering. |
bdf-parser |
[Bdf] |
Bitmap Distribution Format font support. |
embedded-ttf |
[EmbeddedTTF] |
TrueType font rendering via RustType. Automatically enables embedded-graphics. |
cosmic-text |
[CosmicText] |
Advanced text shaping, layout, and Unicode support using CosmicText engine. |
Tip: Only enable the font backends you actually use in
Cargo.tomlto keep compile times and binary size down.
The crate is designed so RataguiBackend<R> is generic over any R: RasterBackend. That means you can use the same RataguiBackend code with SoftBackend<EmbeddedGraphics>, SoftBackend<EmbeddedTTF>, SoftBackend<Bdf>, or whichever backend you enable.
RataguiBackend implements Ratatui's Backend trait, so it can be used anywhere a ratatui::Terminal is expected.
For web/WASM deployment, remember to enable the appropriate features and follow the host GUI / wasm backend guide (see links below).
bevy_example/ — embedding Ratagui inside Bevy (with bevy_egui).
eframe_example/ — minimal eframe example.
See the soft_ratatui repo for font/backend-specific examples (BDF, TTF, CosmicText, embedded-graphics).
soft_ratatui — software rendering backends used by egui_ratatui.ratatui — terminal UI crate.egui — immediate mode GUI used to embed the widget.bevy_ratatui — Bevy integration for Ratatui.mousefood - a no-std embedded-graphics backend for Ratatui!ratzilla - Build terminal-themed web applications with Rust and WebAssembly.ratatui-wgpu - A wgpu based rendering backend for ratatui.bevy_ratatui_camera - A bevy plugin for rendering your bevy app to the terminal using ratatui.WASM & platform guides:
Font and text engine links:
Dual-licensed under MIT or Apache 2.0.