8 releases (stable)
1.2.2 | Oct 25, 2024 |
---|---|
1.2.1 | Oct 24, 2024 |
1.2.0 | Aug 6, 2024 |
1.1.0 | Jun 28, 2024 |
0.1.0 | Aug 29, 2023 |
#391 in Command-line interface
292 downloads per month
Used in 3 crates
(via pareg_core)
290KB
2K
SLoC
Termal
Rust library for terminal features with ansi escape codes.
Currently the library contains the ansii codes, and a special macro. Works for text styles, colors and moving the cursor.
Example
With macro
use termal::*;
// you can use a special macro to inline the color codes, this will write
// italic text with yellow foreground and reset at the end.
printcln!("{'yellow italic}hello{'reset}");
// the macro also supports standard formatting
printcln!("{'yellow italic}{}{'reset}", "hello");
// you can also use short versions of the codes
printcln!("{'y i}{}{'_}", "hello");
// you can also use true colors with their hex codes
printcln!("{'#dd0 i}{}{'_}", "hello");
Without macro
// Move cursor to position column 5 on line 7 and write 'hello' in italic
// yellow
use termal::codes::*;
println!("{}{YELLOW_FG}{ITALIC}hello{RESET}", move_to!(5, 7));
The macros such as move_to!
can accept either literals or dynamic values.
Its main feature is that if you supply literals, it expands to a string
literal with the ansi code.
If you however supply dynamic values it expands to a format!
macro:
use termal::codes::*;
let a = move_to!(5, 7);
// expands to:
let a = "\x1b[5;7H";
let b = move_to!(2 + 3, 7);
// expands to:
let b = format!("\x1b[{};{}H", 2 + 3, 7);
If you know the values for the arguments you can also use the *c
macros:
use termal::formatc;
// the spaces, or the lack of them is important
let a = formatc!("{'move_to5,7}");
Gradients
Youn can create gradients with the function termal::gradient
:
use termal::*;
// This will create foreground gradient from the rgb color `(250, 50, 170)`
// to the rgb color `(180, 50, 240)`
printcln!("{}{'_}", gradient("BonnyAD9", (250, 50, 170), (180, 50, 240)));
How to use it
To see all the possible commands and uses see docs.
How to get it
It is available on crates.io:
With cargo
cargo add termal
In Cargo.toml
[dependencies]
termal = "1.0.0"
Links
- Author: BonnyAD9
- GitHub repository: BonnyAD/raplay
- Package: crates.io
- Documentation: docs.rs
- My Website: bonnyad9.github.io
Dependencies
~1–1.5MB
~30K SLoC