Expand description
ratatui-core is the core library of the ratatui project, providing the essential building blocks for creating rich terminal user interfaces in Rust.
§Why ratatui-core?
The ratatui-core crate is split from the main ratatui crate
to offer better stability for widget library authors. Widget libraries should generally depend
on ratatui-core, benefiting from a stable API and reducing the need for frequent updates.
Applications, on the other hand, should depend on the main ratatui crate, which includes
built-in widgets and additional features.
§Installation
Add ratatui-core to your Cargo.toml:
cargo add ratatui-core§Crate Organization
ratatui-core is part of the Ratatui workspace that was modularized in version 0.30.0 to
improve compilation times, API stability, and dependency management. This crate provides the
foundational types and traits that other crates in the workspace depend on.
When to use ratatui-core:
- Building widget libraries that implement
WidgetorStatefulWidget - Creating lightweight applications that don’t need built-in widgets
- You want minimal dependencies and faster compilation times
- You need maximum API stability (core types change less frequently)
When to use the main ratatui crate:
- Building applications that use built-in widgets
- You want convenience and don’t mind slightly longer compilation times
- You need backend implementations and terminal management utilities
For detailed information about the workspace organization, see ARCHITECTURE.md.
§Features
std— enables stdlayout-cache— enables layout cacheanstyle— enables conversions to / from colors, modifiers, and styles in the [‘anstyle’] cratepalette— enables conversions from colors in thepalettecrate toColor.portable-atomic— enables portable-atomic integration for targets that don’t support atomic types.underline-color— enables the backend code that sets the underline color. Underline color is only supported by the Crossterm backend, and is not supported on Windows 7.scrolling-regions— Use terminal scrolling regions to make some operations less prone to flickering. (i.e. Terminal::insert_before).serde— enables serialization and deserialization of style and color types using theserdecrate. This is useful if you want to save themes to a file.
§Contributing
We welcome contributions from the community! Please see our CONTRIBUTING guide for more details on how to get involved.
§License
This project is licensed under the MIT License. See the LICENSE file for details.
Modules§
- backend
- This module provides the backend implementations for different terminal libraries.
- buffer
- A module for the
BufferandCelltypes. - layout
- Layout and positioning in terminal user interfaces.
- style
stylecontains the primitives used to control how your user interface will look.- symbols
- Symbols and markers for drawing various widgets.
- terminal
- Provides the
Terminal,Frameand related types. - text
- Primitives for styled text.
- widgets
- The
widgetsmodule contains theWidgetandStatefulWidgettraits, which are used to render UI elements on the screen.
Macros§
- assert_
buffer_ eq Deprecated - Assert that two buffers are equal by comparing their areas and content.