/ratatui-splash-screen

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

Primary LanguageRustApache License 2.0Apache-2.0

ratatui-splash-screen

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.

Contributing

See the contribution guidelines.

License

License: MIT License: Apache 2.0

Licensed under either of Apache License Version 2.0 or The MIT License at your option.

🦀 ノ( º _ º ノ) - respect crables!

Copyright

Copyright © 2024, Orhun Parmaksız