MCPcopy Index your code
hub / github.com/coolbeevip/tui-banner

github.com/coolbeevip/tui-banner @v0.2.3

Chat with this repo
repository ↗ · DeepWiki ↗ · release v0.2.3 ↗ · + Follow
213 symbols 541 edges 42 files 82 documented · 38%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

tui-banner

Cinematic ANSI banners for Rust CLI/TUI.

Features

  • Grid-first rendering pipeline
  • Bundled DOS Rebel (Figlet) font + load any .flf
  • Truecolor / 256-color / no-color output with auto-detect
  • Gradients, pixel fill, dithering, shadows, edge shading, light sweeps, frames/borders
  • Named style and palette presets
  • Fluent builder API

CLI note: download the tui-banner binary from GitHub Releases and place it on your PATH. CLI default: trims blank rows at the top/bottom; use --no-trim-vertical to keep them.

https://github.com/coolbeevip/tui-banner/releases

Quick Start

[dependencies]
tui-banner = "0.1.4"
use tui_banner::{Align, Banner, Style};

fn main() -> Result<(), tui_banner::BannerError> {
    let banner = Banner::new("RUST CLI")?
        .style(Style::NeonCyber)
        .render();

    println!("{banner}");
    Ok(())
}

Custom Example

use tui_banner::{Align, Banner, ColorMode, Fill, Gradient, Palette};

fn main() -> Result<(), tui_banner::BannerError> {
    let banner = Banner::new("RUST CLI")?
        .color_mode(ColorMode::TrueColor)
        .gradient(Gradient::vertical(Palette::from_hex(&[
            "#00E5FF", // cyan
            "#3A7BFF", // blue
            "#E6F6FF", // ice
        ])))
        .fill(Fill::Keep)
        .dither()
        .targets("░▒▓")
        .checker(3)
        .align(Align::Center)
        .padding(1)
        .render();

    println!("{banner}");
    Ok(())
}

Frames & Borders

use tui_banner::{Align, Banner, Frame, FrameStyle, Gradient, Palette, Style};

fn main() -> Result<(), tui_banner::BannerError> {
    let frame = Frame::new(FrameStyle::Rounded).gradient(Gradient::horizontal(
        Palette::from_hex(&["#00E5FF", "#7B5CFF", "#FF5AD9"]),
    ));

    let banner = Banner::new("RUST CLI")?
        .style(Style::NeonCyber)
        .align(Align::Center)
        .padding(1)
        .frame(frame)
        .render();

    println!("{banner}");
    Ok(())
}

Light Sweep Animation

use tui_banner::{Align, Banner, Fill, Gradient, Palette};

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let banner = Banner::new("RUST CLI")?
        .gradient(Gradient::diagonal(Palette::from_hex(&[
            "#00E5FF", "#7B5CFF", "#FF5AD9",
        ])))
        .fill(Fill::Keep)
        .align(Align::Center)
        .padding(1);

    banner.animate_sweep(5, None)?;
    Ok(())
}

Tip: pass Some(Color::Rgb(...)) as the second argument to tint the sweep.

Wave Animation

use tui_banner::{Align, Banner, Fill, Gradient, Palette};

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let banner = Banner::new("RUST CLI")?
        .gradient(Gradient::diagonal(Palette::from_hex(&[
            "#00E5FF", "#7B5CFF", "#FF5AD9",
        ])))
        .fill(Fill::Keep)
        .align(Align::Center)
        .padding(1);

    banner.animate_wave(5, None, None)?;
    Ok(())
}

Tip: pass Some(0.45) and Some(0.3) as the last two arguments to tune wave dim/bright strength.

Roll Animation

use tui_banner::{Align, Banner, Fill, Gradient, Palette};

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let banner = Banner::new("RUST CLI")?
        .gradient(Gradient::diagonal(Palette::from_hex(&[
            "#00E5FF", "#7B5CFF", "#FF5AD9",
        ])))
        .fill(Fill::Keep)
        .align(Align::Center)
        .padding(1);

    banner.animate_roll(4)?;
    Ok(())
}

Tip: the roll pushes a bright crest forward with a trailing shadow for a unified, forceful sweep.

Core symbols most depended-on inside this repo

take_value
called by 41
tui-banner-cli/src/main.rs
render
called by 23
src/banner.rs
style
called by 16
src/banner.rs
height
called by 15
src/grid.rs
chars
called by 15
src/frame.rs
gradient
called by 12
src/frame.rs
align
called by 11
src/banner.rs
padding
called by 11
src/banner.rs

Shape

Function 101
Method 79
Class 18
Enum 15

Languages

Rust100%

Modules by API surface

src/banner.rs44 symbols
tui-banner-cli/src/main.rs42 symbols
src/grid.rs17 symbols
src/frame.rs14 symbols
src/fill.rs12 symbols
src/effects/light_sweep.rs11 symbols
src/color.rs11 symbols
src/font/mod.rs9 symbols
src/gradient.rs8 symbols
src/font/figlet.rs6 symbols
src/emit.rs3 symbols
src/effects/shadow.rs3 symbols

For agents

$ claude mcp add tui-banner \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page