<div align="center">
<img src="docs/demo.gif" width="600" alt="thuli demo">
# Thuli
The official interactive REPL for [Farben](https://crates.io/crates/farben) markup, and for exploring terminal colors in general.
[](https://crates.io/crates/thuli)
[](https://docs.rs/thuli)
[](LICENSE-MIT)
[](LICENSE-APACHE)
[](https://crates.io/crates/thuli)
[](https://doc.rust-lang.org/edition-guide/rust-2024/)
[](https://deps.rs/repo/codeberg-razkar/thuli)
> Thuli is Zulu for "quiet" or "peace". A calm, focused space for typing markup and seeing what comes out.
</div>
## Install
```bash
cargo install thuli
```
Or from source:
```bash
cargo install --git https://codeberg.org/razkar/thuli
```
## What it is
A small interactive shell, in the spirit of `python` or `irb`, but for terminal colors. Type Farben markup, see the rendered output. Inspect tokens and raw ANSI sequences. Register named styles and prefixes on the fly. Browse the full ANSI 256 palette.
It's not limited to Farben either. Thuli is a good general scratchpad for anything terminal-color related: try out RGB values, check how named colors render on your specific terminal, or compare `ansi(n)` slots side by side.
It also works as a one-shot tool from the shell:
<details>
<summary>Click to see the oneshot demo</summary>
<br>
<img src="docs/oneshot.gif" width="600" alt="oneshot demo">
</details>
## Features
- Interactive REPL loop (read line, render, quit on Ctrl+D)
- Pretty error printing with caret diagnostics, no panics
- Commands: `/help`, `/quit`, `/tags`, `/style`, `/prefix`, `/show`, `/colors`, `/palette`, `/theme`, `/load`, `/save`
- One-shot mode via CLI argument
- Fully themeable: all colors and prefixes are overridable via `theme.frb.toml`
- Per-session style registry: define, load, and save named styles without touching any file
- Tab completion for tag names, commands, and registered styles
## Customization
Thuli's appearance is fully driven by named styles. Every color, label, and prefix it uses internally is a `thuli::*` style entry that can be overridden in `theme.frb.toml`. The defaults are just defaults.
```toml
[styles]
thuli::brand = "[rgb(255,160,0)]"
thuli::error = "[bold red]"
thuli::text.success = "[dim green]"
[prefixes]
thuli::error = "!! "
thuli::tip = "?? "
```
You can get the handful of Thuli themes on the [thuli-themes repository](https://codeberg.org/razkar/thuli-themes).
Run `/theme` inside Thuli to find the config file path on your system. Thuli's theme file follows the [FarbenTOML-2026/04](https://razkar-studio.github.io/farben/styles/rulez/#farbentoml-2026-04) spec.
> [!NOTE]
> you cannot modify or add `thuli::*` styles in a thuli session, has to be in the theme file.
## Quick Start
Run the REPL:
```bash
thuli
```
One-shot mode:
```bash
thuli '[bold cyan]hello'
```
Requires Rust 1.85+.
## License
Licensed under either of [MIT License](LICENSE-MIT) or
[Apache License, Version 2.0](LICENSE-APACHE) at your option.
Cheers, RazkarStudio.
© 2026 RazkarStudio. All rights reserved.