Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/orhun/ratatui-splash-screen

A Ratatui widget to turn any image to a splash screen in your terminal ✨
https://github.com/orhun/ratatui-splash-screen

ratatui splash-screen splashscreen terminal-user-interface tui tui-rs tui-widget widget

Last synced: about 11 hours ago
JSON representation

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

Awesome Lists containing this project

README

        

## `ratatui-splash-screen`

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

![demo](https://github.com/orhun/ratatui-splash-screen/assets/24392180/3a094217-2825-4962-b22e-476dc4fbce55)

[![crates.io badge]][ratatui-splash-screen-crate]
[![docs.rs badge]][ratatui-splash-screen-docs]
[![license badge]](./LICENSE-MIT)
[![codecov.io badge]][Code Coverage]
[![discord badge]][Ratatui Discord]

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]][Dependency Status]

```shell
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

```rust
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> {
// 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](https://github.com/orhun/ratatui-splash-screen/blob/main/examples/demo.rs).

#### 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.

[ratatui-splash-screen]: https://github.com/orhun/ratatui-splash-screen
[ratatui-splash-screen-crate]: https://crates.io/crates/ratatui-splash-screen
[ratatui-splash-screen-docs]: https://docs.rs/ratatui-splash-screen
[ratatui]: https://ratatui.rs
[`sha256sum(1)`]: https://linux.die.net/man/1/sha256sum
[gpg-tui]: https://github.com/orhun/gpg-tui

[`SplashConfig`]: https://docs.rs/ratatui-splash-screen/latest/ratatui_splash_screen/config/struct.SplashConfig.html
[`SplashScreen`]: https://docs.rs/ratatui-splash-screen/latest/ratatui_splash_screen/splash_screen/struct.SplashScreen.html
[`is_rendered`]: https://docs.rs/ratatui-splash-screen/latest/ratatui_splash_screen/splash_screen/struct.SplashScreen.html#method.is_rendered
[`render_steps`]: https://docs.rs/ratatui-splash-screen/latest/ratatui_splash_screen/config/struct.SplashConfig.html#structfield.render_steps
[`render`]: https://docs.rs/ratatui/latest/ratatui/widgets/trait.Widget.html#tymethod.render

[crates.io badge]: https://img.shields.io/crates/v/ratatui-splash-screen?style=flat&logo=Rust&color=666&labelColor=1c1c24
[docs.rs badge]: https://img.shields.io/docsrs/ratatui-splash-screen?logo=rust&style=flat&color=666&labelColor=1c1c24
[deps.rs badge]: https://deps.rs/repo/github/orhun/ratatui-splash-screen/status.svg?style=flat&color=666&labelColor=1c1c24
[license badge]: https://img.shields.io/crates/l/ratatui-splash-screen?style=flat&color=666&labelColor=1c1c24&logo=github
[codecov.io badge]: https://img.shields.io/codecov/c/github/orhun/ratatui-splash-screen?logo=codecov&style=flat&color=666&labelColor=1c1c24&logoColor=white
[discord badge]: https://img.shields.io/discord/1070692720437383208?label=Ratatui+Discord&logo=discord&style=flat&color=666&labelColor=1c1c24&logoColor=white

[Dependency Status]: https://deps.rs/repo/github/orhun/ratatui-splash-screen
[Code Coverage]: https://app.codecov.io/gh/orhun/ratatui-splash-screen
[Ratatui Discord]: https://discord.gg/pMCEU9hNEj

## Contributing

See the [contribution guidelines](CONTRIBUTING.md).

## License

[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg?style=flat&logo=GitHub)](./LICENSE-MIT)
[![License: Apache 2.0](https://img.shields.io/badge/License-Apache%202.0-blue.svg?style=flat&logo=GitHub)](./LICENSE-APACHE)

Licensed under either of [Apache License Version 2.0](./LICENSE-APACHE) or [The MIT License](./LICENSE-MIT) at your option.

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

## Copyright

Copyright © 2024, [Orhun Parmaksız](mailto:[email protected])