Crate ratatui_splash_screen

source ·
Expand description

A Ratatui widget to turn any image to a splash screen in your terminal ✨

demo

crates.io badge docs.rs badge license badge codecov.io badge discord badge

See the demo of gpg-tui for a real world example.

§Features

  • Turn any image (jpg, png) into a splash screen!
  • Verifies the file integrity via checking SHA checksum (optional)
  • Supports grayscaling

§Installation

deps.rs badge

cargo add ratatui ratatui-splash-screen

§Usage

Create a SplashConfig and construct a SplashScreen widget with it. Then render the widget in a loop using the render function. You can check if the splash screen is done rendering by calling is_rendered.

§Examples

use std::error::Error;
use std::io::stdout;
use std::time::Duration;

use ratatui::prelude::*;
use ratatui_splash_screen::{SplashConfig, SplashScreen, SplashError};

static SPLASH_CONFIG: SplashConfig = SplashConfig {
    image_data: include_bytes!("../assets/splash.png"),
    sha256sum: Some("c692ae1f9bd4a03cb6fc74a71cb585a8d70c2eacda8ec95e26aa0d6a0670cffd"),
    render_steps: 12,
    use_colors: true,
};

fn main() -> Result<(), Box<dyn Error>> {
    // create a terminal
    let backend = CrosstermBackend::new(stdout());
    let mut terminal = Terminal::new(backend)?;

    // render splash screen
    let mut splash_screen = SplashScreen::new(SPLASH_CONFIG)?;
    while !splash_screen.is_rendered() {
        terminal.draw(|frame| {
            frame.render_widget(&mut splash_screen, frame.size());
        })?;
        std::thread::sleep(Duration::from_millis(100));
    }

    Ok(())
}

See the full example here.

§Tips

  • Use small images (such as 200x200) for a better experience.
  • You can tweak the render_steps value for smoother rendering.
  • Run sha256sum(1) command on your system to find out the SHA value. You can set it to None if you don’t want to check integrity.

Structs§