#animation #terminal #terminal-text #rpg #text #cli #cli-applications

bin+lib snailshell

Library for making terminal text display with pleasant RPG-style animations

7 releases

0.3.1 Aug 1, 2022
0.3.0 Aug 1, 2022
0.2.2 Jul 31, 2022
0.1.1 Jul 30, 2022

#38 in #rpg


Used in nage

MIT license

10KB
100 lines

🐌 snailshell

MIT LICENSE VERSION DOCS DOWNLOADS

A tiny library and application for animating text in the terminal.

🪄 It's so easy to add some flair to your text RPGs or console programs. 🪄

demo

☝️ From Fun Stuff example. (obviously looks smoother in an actual terminal)

Compatibility

Compatible with EVERYTHING! 🥳

Snailshell works with any type which implements Display, so literally everything that you would normally use with print!(), println!(), or format!() just works! This includes colored text from other libraries such as Crossterm.

👩‍🏫 Examples


Basic

use snailshell::*;

// It's dead simple.
snailprint("hello, friend :)");

Custom Fixed Duration

snailprint_d("This whole message will print in half a second regardless of the size.", 0.5);

Refresh Rate

// This is optional. Default fps is 60.
// All subsequent snailprint functions will use this fps.
set_snail_fps(30);

🐌🖥️ Snailshell Standalone:

You can also use snailshell from the command line.

cli demo

Useful for making shell scripts and videos!

Installation:

cargo install snailshell

Usage:


snailshell [OPTIONS] <TEXT>

ARGS:
<TEXT>    Text you want to animate

OPTIONS:
-d, --duration <DURATION>    How long the text should animate for
-f, --fps <FPS>              Refresh rate of animation
-h, --help                   Print help information
-s, --speed <SPEED>          Constant speed of chars per second to render. Conflicts with duration

Example

Simple:

snailshell "text you want to animate"

Animates the contents of textfile over 2 seconds:

cat textfile | snailshell -d 2.0

If you just run 'snailshell' without any any arguments, it will expect text to be piped into it and won't respond to newlines. Just press Ctrl-C.

📖 License


This crate is licensed under the MIT license.

Dependencies

~3.5MB
~67K SLoC