
A minimal terminal coloring library using markup-like syntax.
[!WARNING] Farben, in this current state, is extremely unstable. It only has one or two public interface, unfinished features, and is experimetal. I do not recommend using it in production, at least not yet.
What Is Farben
Look at the tagline up there ^
Documentation
[!NOTE] The user guide right now is literally unreadable.
- User Guide: https://razkar-studio.github.io/farben
- API Reference: https://docs.rs/farben
Usage
// Using no features
use color;
println!; // Runtime
let color = "red";
println!; // Arguments supported
println!;
// Using the "compile" feature
use color;
println!; // Compile-time
let color = "red";
println!; // Compile time validation, not processing
println!;
Features
- Markup-like Syntax: Easy to parse, understand, and powerful when used.
- Only 1 required runtime dependencies: Having only 1 dependency, and that being the logic itself, farben doesn't introduce a complicated dependency tree.
- Opt-in Compile-time Processing: Colorize at compile time with no runtime overhead, completely opt-in with one additional dependency:
farben-macros. - Complete Toolkit: Supports basic named ANSI, ANSI256, and even RGB.
Installation
To add farben as a dependency, run the following command on your Cargo project:
Or alternatively, put directly on your Cargo.toml:
[]
= "0.2"
To enable compile-time processing, use the compile feature, like so:
Or in the Cargo.toml:
[]
= { "0.2", features: ["compile"] }
[!NOTE] If you're using the
compilefeature,coloris a macro, not a function. Use ascolor!going forward.
Syntax
Tags are written as [tag] and apply from that point forward. Multiple tags can be combined in a single bracket: [bold red].
[!WARNING] Spaces inside
ansi()andrgb()are not supported at the moment, and it will error.
| Tag | Description |
|---|---|
[red], [blue], ... |
Named colors (black, red, green, yellow, blue, magenta, cyan, white) |
[rgb(r,g,b)] |
24-bit RGB color |
[ansi(n)] |
256-color palette index |
[bold], [italic], [dim], [underline], [blink], [strikethrough] |
Emphasis styles |
[/] |
Reset all styles |
\\[ |
Escaped bracket, treated as literal [ (notice the double escape \\) |
Error Handling
color() panics on invalid markup. For graceful error handling, use try_color():
use try_color;
match try_color
Contributing
Contributions are welcome! Feel free to submit a Pull Request.
License
This project is protected under the RazkarStudio Permissive License (RSPL). See LICENSE.md for more details.
Cheers, RazkarStudio.
© 2026 RazkarStudio. All rights reserved.