# tui-rs-revival/ratatui

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/tui-rs-revival-ratatui).**

21,091 stars · 689 forks · Rust · MIT

## Links

- GitHub: https://github.com/tui-rs-revival/ratatui
- Homepage: https://ratatui.rs
- awesome-repositories: https://awesome-repositories.com/repository/tui-rs-revival-ratatui.md

## Description

Ratatui is a Rust framework and cross-platform terminal renderer used to build rich terminal user interfaces. It functions as a toolkit for creating interactive command-line displays, dashboards, and data visualizations.

The library employs an immediate mode rendering approach, where the interface is redrawn every frame based on the current application state. It uses a widget-based layout system to compose complex text-based interfaces.

The framework includes a rectangle-based layout engine and a backend-agnostic drawing system to decouple UI logic from specific terminal emulators. It further utilizes double-buffered output and state diffing to manage how characters are written to the screen.

## Tags

### User Interface & Experience

- [Terminal User Interfaces](https://awesome-repositories.com/f/user-interface-experience/terminal-user-interfaces.md) — Provides a comprehensive framework for building rich, interactive, text-based user interfaces within a terminal environment. ([source](https://github.com/tui-rs-revival/ratatui#readme))
- [Component Composition Primitives](https://awesome-repositories.com/f/user-interface-experience/component-architectures/component-composition/component-composition-primitives.md) — Builds interfaces by nesting reusable widget components that implement a common rendering trait.
- [Rectangle-Based Layouts](https://awesome-repositories.com/f/user-interface-experience/constraint-layout-engines/rectangle-based-layouts.md) — Provides a coordinate-based layout engine that manages screen areas using rectangles and constraints for widget positioning.
- [Immediate-Mode Rendering](https://awesome-repositories.com/f/user-interface-experience/immediate-mode-rendering.md) — Employs a rendering paradigm that rebuilds the entire user interface from scratch on every frame.
- [Immediate Mode UI Frameworks](https://awesome-repositories.com/f/user-interface-experience/immediate-mode-ui-frameworks.md) — Provides a rendering architecture where the entire interface is redrawn every frame based on application state.
- [Terminal-Agnostic Renderers](https://awesome-repositories.com/f/user-interface-experience/terminal-user-interfaces/rendering-output-engines/terminal-agnostic-renderers.md) — Implements a backend-agnostic rendering engine that ensures consistent visual output across different terminal emulators.
- [Terminal-Based Dashboards](https://awesome-repositories.com/f/user-interface-experience/graphical-user-interfaces/terminal-based-dashboards.md) — Provides the necessary primitives and tools to build interactive, data-driven dashboards rendered in the terminal.
- [Terminal Data Visualizations](https://awesome-repositories.com/f/user-interface-experience/terminal-data-visualizations.md) — Facilitates the creation of data-rich terminal displays and system state visualizations.
- [Terminal Interface Design](https://awesome-repositories.com/f/user-interface-experience/terminal-interface-design.md) — Provides a structured system for implementing intuitive and accessible user interfaces for Rust-based terminal tools.

### Programming Languages & Runtimes

- [Terminal User Interface Frameworks](https://awesome-repositories.com/f/programming-languages-runtimes/programming-language-varieties/programming-languages/systems-languages/rust/terminal-user-interface-frameworks.md) — Offers a high-performance Rust toolkit for developing stateful, widget-based terminal user interfaces.

### Graphics & Multimedia

- [Backend-Agnostic Rendering Pipelines](https://awesome-repositories.com/f/graphics-multimedia/graphics-engines-rendering/rendering/engines/graphics-pipeline-architectures/backend-agnostic-rendering-pipelines.md) — Implements a rendering pipeline that abstracts terminal-specific output to ensure consistent layouts across different emulators.

### System Administration & Monitoring

- [Double Buffering](https://awesome-repositories.com/f/system-administration-monitoring/terminal-buffering-systems/double-buffering.md) — Utilizes an off-screen memory buffer to prepare entire frames before committing them to the terminal display.
- [State Diffing](https://awesome-repositories.com/f/system-administration-monitoring/terminal-buffering-systems/double-buffering/state-diffing.md) — Optimizes terminal updates by calculating the difference between the current and previous frames to reduce flicker and bandwidth.

### Part of an Awesome List

- [TUI Libraries](https://awesome-repositories.com/f/awesome-lists/devtools/tui-libraries.md) — Rust crate for terminal UIs.
