Skip to content

Crossterm Adapter

The crossterm feature enables direct terminal styling via crossterm, ideal for apps that use crossterm without ratatui for raw terminal manipulation.

toml
[dependencies]
opaline = { version = "0.4", features = ["crossterm"] }

From Impls

Opaline types convert directly to crossterm types:

rust
use opaline::OpalineColor;
use crossterm::style::Color;

let color = OpalineColor::new(225, 53, 255);
let ct_color: Color = color.into();
// → Color::Rgb { r: 225, g: 53, b: 255 }

OpalineStyle converts to ContentStyle with all 9 modifiers mapped to crossterm Attribute flags:

rust
use opaline::{Theme, OpalineStyle};
use crossterm::style::ContentStyle;

let theme = Theme::default();
let style: ContentStyle = theme.style("keyword").into();

Theme Helper

Apply a named style to content directly:

rust
use opaline::Theme;

let theme = Theme::default();
let styled = theme.crossterm_styled("keyword", "fn main");
print!("{styled}");

Gradient Rendering

With crossterm + gradients:

rust
use opaline::adapters::crossterm::{gradient_styled, gradient_bar};

let theme = opaline::Theme::default();
if let Some(gradient) = theme.get_gradient("primary") {
    // Per-character gradient text
    for styled in gradient_styled("Hello, world!", gradient) {
        print!("{styled}");
    }

    // Gradient progress bar
    for styled in gradient_bar(40, '█', gradient) {
        print!("{styled}");
    }
}

When to Use Crossterm vs Ratatui

Use CaseAdapter
Full TUI app with widgetsratatui
Raw terminal manipulationcrossterm
Custom rendering loopcrossterm
Alternate screen apps without ratatuicrossterm

Released under the MIT License.