Files
omarchycn/manual/41-branding.md
4baae6bf2a Draw text as ASCII art in the Omarchy logo font (#8037)
* Add omarchy-ascii for drawing text in the logo font

Renders text as ASCII art in Delta Corps Priest 1, the FIGlet font the Omarchy wordmark itself is drawn in, so branding art can be words rather than a picture. The font is embedded in the script and the layout is done in awk, so the command adds nothing to the default package set.

The layout runs on one-byte stand-ins for the five block characters the font draws with. Column arithmetic over the characters themselves counts bytes in one locale and characters in another, and the stand-ins keep length() and substr() counting columns either way.

Delta Corps Priest 1 carries letters and spaces only, and every mirror of it ships the same file with the digit and punctuation glyphs empty. Anything else is dropped and named on stderr, and text with nothing drawable at all exits 1 rather than printing silence.

🤖 Generated by Opus 5 in Claude Code.

* Correct what the renderer did with input it could not draw

The route never ran on piped text. The metadata declared `<text...>` as required, so `omarchy ascii` with nothing on the command line resolved to the router's help while `omarchy-ascii` run directly worked, which is why the tests missed it: they all called the binary. The argument is optional now, and a test goes through the route.

Text reached awk as a command-line variable, where awk reads backslash escapes of its own, so `omarchy ascii 'A\nB'` drew two blocks instead of naming the backslash as a character the font lacks. A text longer than the argument list could not be passed at all. It arrives as awk's input now, with the font on a descriptor of its own.

A line with nothing drawable printed nothing at all, so a blank line between two words closed the gap up rather than keeping it. Every line draws its block now, blank ones included, which is what figlet does with a newline.

Placing a glyph scanned and copied the whole width of the art so far, costing the square of the line's length: four thousand characters took forty-six seconds. A row is now held without its trailing blanks, counted separately instead, so a glyph costs its own width and those four thousand characters take a tenth of a second.

A skipped control character was named on stderr by writing it out, which sends it to the terminal as a control character; those are named by code now. An unknown option was drawn as art rather than refused, so a mistyped `--width 40` quietly rendered the word "width".

figlet.c trims the column of blanks that every row of an `M` shares when it is the first glyph on a line, and figlet.js keeps it. asciiart.eu runs figlet.js, so the rendering follows figlet.js and a test pins that `M`, because the wordmark alone does not catch the difference and the next reader would have no way to tell the choice from an oversight.

🤖 Generated by Opus 5 in Claude Code. Reviewed by Codex XHigh.

Co-Authored-By: Codex XHigh <codex@openai.com>

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
Co-authored-by: Codex XHigh <codex@openai.com>
2026-08-24 17:58:52 +02:00

3.6 KiB

Branding

Omarchy allows you to set your company logo or personal image for both the boot unlock, the screensaver, and the about screen.

Boot unlock

You can use omarchy plymouth preview to see what your custom logo and colors would look like. It takes a background color, a text color, a logo png, and a path for the preview image:

omarchy plymouth preview '#1d2021' '#ebdbb2' logo.png preview.png

Then apply the setup with omarchy plymouth set '#1d2021' '#ebdbb2' logo.png, which will also give the SDDM login screen the same colors and logo. If you want to revert, you can use omarchy plymouth reset.

branding-plymouth-shopify

Screensaver

You can change the logo used for the screensaver under Style > Screensaver. It's an ASCII logo, so you can edit the text directly, but you can also hand it a png or svg image, and we'll convert that to ASCII. It looks pretty cool.

branding-screensaver

There are three entries in that menu:

  • Edit Text opens ~/.config/omarchy/branding/screensaver.txt in your editor. Type or paste whatever you like — ASCII art, your name, a rude word. Save and quit, and the screensaver fires up immediately so you can see it.
  • Set From Image opens a file picker for a png or svg, converts it to ASCII, and shows you the result. Logos with a clear silhouette work far better than photos.
  • Restore Default puts the Omarchy logo back.

About screen

The same three options are under Style > About for the About screen you get from the Omarchy menu, and they work identically — the file is ~/.config/omarchy/branding/about.txt, and the About window pops up after each change. The About art is converted to a smaller size than the screensaver's, since it has to fit in a window rather than fill your display.

While the window is open a glint of green leans across the art every few seconds and then leaves it still again. Your own art gets it too, as long as every character in it is one column wide — anything Set From Image produces is. Art built from emoji or double-width characters stays still instead, and so does the screen if you keep a fastfetch config of your own: a still logo in those cases is the animation keeping out of the way rather than failing, since sliding a glint across them would land the rest of the line in the wrong place.

branding-about

Converting images yourself

Both of the Set From Image options are just calling omarchy transcode ascii, which you can run directly if you want control over the conversion:

omarchy transcode ascii ~/logo.svg ~/.config/omarchy/branding/screensaver.txt --width 100

It takes --width and --height in terminal columns and rows, a --mode of either braille (the default, and much finer) or block, a --threshold percentage for deciding which pixels count as part of the logo, and --invert for when your logo is light on a dark background. If a conversion comes out as a blob, the threshold is usually the knob to turn.

omarchy ascii draws text in Delta Corps Priest 1, the FIGlet font the Omarchy wordmark itself is drawn in, so a screensaver can say something rather than show a picture:

omarchy ascii "Back in five" > ~/.config/omarchy/branding/screensaver.txt

It takes the text as arguments, or reads it from a pipe when given none. The font carries letters and spaces only — it was drawn without digits or punctuation — so anything else is dropped and named on stderr rather than quietly swallowed.