Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/jam1garner/owo-colors
A zero-allocation no_std-compatible zero-cost way to add color to your Rust terminal
https://github.com/jam1garner/owo-colors
Last synced: 4 days ago
JSON representation
A zero-allocation no_std-compatible zero-cost way to add color to your Rust terminal
- Host: GitHub
- URL: https://github.com/jam1garner/owo-colors
- Owner: jam1garner
- License: mit
- Created: 2020-08-25T06:18:42.000Z (about 4 years ago)
- Default Branch: master
- Last Pushed: 2024-11-07T09:23:27.000Z (6 days ago)
- Last Synced: 2024-11-08T20:05:09.388Z (4 days ago)
- Language: Rust
- Size: 148 KB
- Stars: 641
- Watchers: 10
- Forks: 34
- Open Issues: 19
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Colors
[![Current Crates.io Version](https://img.shields.io/crates/v/owo-colors.svg)](https://crates.io/crates/owo-colors)
[![docs-rs](https://docs.rs/owo-colors/badge.svg)](https://docs.rs/owo-colors)
![MSRV 1.56+](https://img.shields.io/badge/rustc-1.56+-blue.svg)
![Downloads](https://img.shields.io/crates/d/owo-colors)A zero-allocation no_std-compatible zero-cost way to add color to your Rust
terminal to make people go owo.**Supports:**
- [x] All std/core formatters
- [x] [Display](https://doc.rust-lang.org/std/fmt/trait.Display.html)
- [x] [Debug](https://doc.rust-lang.org/std/fmt/trait.Debug.html)
- [x] [Octal](https://doc.rust-lang.org/std/fmt/trait.Octal.html)
- [x] [LowerHex](https://doc.rust-lang.org/std/fmt/trait.LowerHex.html)
- [x] [UpperHex](https://doc.rust-lang.org/std/fmt/trait.UpperHex.html)
- [x] [Pointer](https://doc.rust-lang.org/std/fmt/trait.Pointer.html)
- [x] [Binary](https://doc.rust-lang.org/std/fmt/trait.Binary.html)
- [x] [LowerExp](https://doc.rust-lang.org/std/fmt/trait.LowerExp.html)
- [x] [UpperExp](https://doc.rust-lang.org/std/fmt/trait.UpperExp.html)
- [x] Optional checking for if a terminal supports colors
- [x] Enabled for CI
- [x] Disabled by default for non-terminal outputs
- [x] Overridable by `NO_COLOR`/`FORCE_COLOR` environment variables
- [x] Overridable programmatically via [`set_override`](https://docs.rs/owo-colors/latest/owo_colors/fn.set_override.html)
- [x] Dependency-less by default
- [x] Hand picked names for all ANSI (4-bit) and Xterm (8-bit) colors
- [x] Support for RGB colors
- [x] Set colors at compile time by generics or at runtime by value
- [x] All ANSI colors
- [x] Basic support (normal and bright variants)
- [x] Xterm support (high compatibility and 256 colors)
- [x] Truecolor support (modern, 48-bit color)
- [x] Styling (underline, strikethrough, etc)owo-colors is also more-or-less a drop-in replacement for
[colored](https://crates.io/crates/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:
```toml
owo-colors = "3"
```## Example
```rust
use owo_colors::OwoColorize;fn main() {
// Foreground colors
println!("My number is {:#x}!", 10.green());
// Background colors
println!("My number is not {}!", 4.on_red());
}
```## Generic colors
```rust
use owo_colors::OwoColorize;
use owo_colors::colors::*;fn main() {
// Generically color
println!("My number might be {}!", 4.fg::().bg::());
}
```## Stylize
```rust
use owo_colors::OwoColorize;println!("{}", "strikethrough".strikethrough());
```## Only Style on Supported Terminals
```rust
use owo_colors::{OwoColorize, Stream::Stdout};println!(
"{}",
"colored blue if a supported terminal"
.if_supports_color(Stdout, |text| 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)