Skip to content

The built-in library

Every built-in micro asset: the status, dev and fun packs, one row each

rs-rich-micro ships thirteen assets in three packs, drawn for this project and licensed MIT. Each image below is the asset's own file, magnified ten times so each of its 16×16 pixels shows as a square. Animated assets play their real frames at their real timings.

In a terminal, an asset takes two cells, the space of one emoji. What fills those cells depends on the terminal: see Drawing modes, side by side below.

rich micro list --layer built-in        # the same list, in your terminal
rich micro preview fun/heart            # one asset, inline and magnified
rich -p --emoji "Deploy :micro:status/success: done"
Image Name Alt text Fallback Kind Licence
green circle with a white check mark :micro:status/success: green circle with a white check mark ✅ OK static MIT
amber triangle with an exclamation mark :micro:status/warning: amber triangle with an exclamation mark ⚠ !! static MIT
red circle with a white cross :micro:status/error: red circle with a white cross ❌ XX static MIT
blue circle with a white letter i :micro:status/info: blue circle with a white letter i ℹ i static MIT
ring of dots turning, for work in progress :micro:status/loading: ring of dots turning, for work in progress ⏳ .. animated, 8 frames, 800 ms a loop MIT
green bug with six legs :micro:dev/bug: green bug with six legs 🐛 #! static MIT
branching line with three commit dots :micro:dev/branch: branching line with three commit dots 🔀 Y static MIT
terminal window with a prompt :micro:dev/terminal: terminal window with a prompt 💻 >_ static MIT
closed cardboard box :micro:dev/package: closed cardboard box 📦 [] static MIT
red heart, beating :micro:fun/heart: red heart, beating 💖 <3 animated, 4 frames, 1000 ms a loop MIT
yellow five-pointed star :micro:fun/star: yellow five-pointed star ⭐ * static MIT
orange cat face :micro:fun/cat: orange cat face 🐱 =^ static MIT
steaming cup of coffee :micro:fun/coffee: steaming cup of coffee ☕ c[ animated, 3 frames, 750 ms a loop MIT

The fallback column is what shows when no image is drawn: the emoji where the output is UTF-8, the text where it is not, and the alt text only for an asset with neither.

Drawing modes, side by side

What fills an asset's two cells depends on the terminal, chosen once per terminal (see Terminal compatibility):

Mode Chosen when What fills the cells
kitty, iterm, sixel the terminal speaks that image protocol the image above, in pixels, fitted to exactly its cells
blocks a colour terminal with no image protocol the asset's emoji; with RICH_MICRO=blocks, its image scaled to 2×2 colour samples, one per half cell
text TERM=dumb or no colour, RICH_MICRO=text, and always for pipes, log files and exports no image: the emoji where the output is UTF-8, the text fallback where it is not, else the alt text

The recording below is real: the same line with the emoji, then with RICH_MICRO=blocks, then rich micro preview fun/heart with both fallbacks and its four frames magnified. A pseudo-terminal speaks no image protocol, so the pixel modes are the one thing it cannot record: a Kitty, iTerm2 or Sixel terminal draws the images in the table above, in the same cells.

The same line drawn with the emoji and as half-blocks, then fun/heart previewed

RICH_MICRO=kitty|iterm|sixel|blocks|text forces a mode, and rich doctor says which one your terminal got and why. Half-blocks at this size keep an asset's colours, not its shape, which is why the emoji comes first: they are there for an asset with no emoji, or when you ask for them.

The drawing modes tape playing

Tape · Cast · GIF · Page · more in Terminal recordings

Making your own

Authoring micro assets takes an image of any size through the same pipeline that made these: fitted to the cells, with contrast, sharpening and transparency, into a package the registry loads. crates/rich-micro/examples/gen_builtin.rs draws the built-in assets; the page you are reading is regenerated from them with:

python3 scripts/micro_gallery.py

CI runs it with --check, so this page cannot fall behind the library.