#ansi-term #no-std #terminal-colors

no-std tintify

A lightweight library for terminal colors and styling

1 stable release

Uses new Rust 2024

new 1.0.0 Apr 15, 2025

#457 in Command-line interface


Used in inkline

GPL-3.0-or-later

145KB
2.5K SLoC

TintColor

Current Crates.io Version MSRV 1.70+ Downloads

A zero-allocation no_std-compatible zero-cost way to add color to your Rust terminal.

Supports:

  • All std/core formatters
  • Optional checking for if a terminal supports colors
    • Enabled for CI
    • Disabled by default for non-terminal outputs
    • Overridable by NO_COLOR/FORCE_COLOR environment variables
    • Overridable programmatically via set_override
  • Dependency-less by default
  • 100% safe code
  • Most functions are const
  • Hand-picked names for all ANSI (4-bit) and Xterm (8-bit) colors
  • Support for RGB colors
  • Set colors at compile time by generics or at runtime by value
  • All ANSI colors
    • Basic support (normal and bright variants)
    • Xterm support (high compatibility and 256 colors)
    • Truecolor support (modern, 48-bit color)
  • Styling (underline, strikethrough, etc)

tintify is also more-or-less a drop-in replacement for colored, allowing colored to work in a no_std environment. No allocations or dependencies required because embedded systems deserve to be pretty too uwu.

To add to your Cargo.toml:

tintify = "1.0.0"

Example

use tintify::TintColorize;

fn main() -> () {
    // Foreground colors
    println!("My number is {:#x}!", 10.green());
    // Background colors
    println!("My number is not {}!", 4.on_red());
}

Generic colors

use tintify::TintColorize;
use tintify::colors::*;

fn main() -> () {
    // Generically color
    println!("My number might be {}!", 4.fg::<Black>().bg::<Yellow>());
}

Stylize

use tintify::TintColorize;

println!("{}", "strikethrough".strikethrough());

Only Style on Supported Terminals

use tintify::TintColorize;
use tintify::Stream::Stdout;

println!("{}", "colored blue if a supported terminal".if_supports_color(Stdout, |text: &str| text.bright_blue()));

Supports NO_COLOR/FORCE_COLOR environment variables, checks if it's a tty, checks if it's running in CI (and thus likely supports color), and checks which terminal is being used. (Note: requires supports-colors feature)

Dependencies