richterm
richterm turns arbitrary terminal commands into Rich-rendered SVG images. Run it from the command line or embed live captures in Sphinx documentation with a dedicated directive.
This project was created and is still maintained with python-package-copier-template.
Quick start
Run the CLI without installing anything permanently:
uvx richterm
To install the tool permanently:
uv tool install richterm
Each invocation writes an SVG named rich_term_<TIMESTAMP>.svg (or the file passed with -o/--output) and echoes the command output back to the terminal.
To keep colours vibrant even in non-interactive captures, richterm sets friendly defaults: TERM=xterm-256color (when missing) plus FORCE_COLOR=1, CLICOLOR_FORCE=1, PY_COLORS=1, and TTY_COMPATIBLE=1 unless you override them. Opt out with RICHTERM_DISABLE_COLOR_HINT=1 or by exporting NO_COLOR; if your CI sets NO_COLOR but you still want colour, explicitly set FORCE_COLOR=1.
Command-line usage
usage: richterm [-h|--hide-command] [-o PATH] [--prompt STR] [--shown-command STR] <command...>
--hide-commandhides the prompt and command line in the transcript.--promptaccepts Rich markup and defaults to$.-o/--outputselects the SVG path; otherwise a timestamped filename is generated.--shown-commandlets you display a different command than the one executed (handy when a fixture command would distract readers). Cannot be combined with--hide-command.
Examples:
richterm ls -la
richterm --prompt "[bold blue]λ" -o docs/_static/listing.svg git status --short
richterm --hide-command python -c "print('\033[31merror\033[0m')"
richterm --shown-command "pytest -q" python -c "print('actually running something else')"
Sphinx integration
richterm optionally works as a Sphinx extension. Install the extras and enable it in your conf.py:
uv add richterm[sphinx]
# docs/conf.py
extensions = [
"myst_parser",
"sphinxcontrib.mermaid",
"richterm.sphinxext",
]
richterm_prompt = "[bold]$"
richterm_hide_command = False
Then use the directive in MyST:
```{richterm} python -m rich --force-terminal --no-color-system example
```
Or in reStructuredText:
.. richterm:: python -m rich --force-terminal --no-color-system example
The directive executes the command during the build, embeds the SVG directly in HTML output, and falls back to a literal block for non-HTML builders. The :prompt: and :hide-command: options mirror the CLI flags.
Development
Tests depend on the Sphinx extras:
uv run --extra sphinx pytest
Or directly make test
Build the documentation, which exercises the directive itself:
make docs
Metadata
Release files for richterm 0.3.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| richterm-0.3.0.tar.gz | 9.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| richterm-0.3.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 19.7 kB
Release files / richterm-0.3.0.tar.gz
| Download URL | richterm-0.3.0.tar.gz |
|---|---|
| Size | 9.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
1b400a5773952135522140418bcdfdb8dc2bd4779c09987fcdde9baf74bec066
|
|
BLAKE2b-256 checksum How to use checksums |
4549ae8766d5fdedaf1c8f0beed251490c4d3449bc5be0a2955fa5744b845ff7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.11.32 {"installer":{"name":"uv","version":"0.11.32","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 26, 2026.
Transparency logRelease files / richterm-0.3.0-py3-none-any.whl
| Download URL | richterm-0.3.0-py3-none-any.whl |
|---|---|
| Size | 10.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
7819145cc67a7a03a61eb23db89cb7e0d029a379a731f8b58e087ffebb1ef001
|
|
BLAKE2b-256 checksum How to use checksums |
833d3acec66248fee8292f26d1cba18fb3be171acfe23bf19d368c902184a30f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.11.32 {"installer":{"name":"uv","version":"0.11.32","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 26, 2026.
Transparency log