—

Theme

CRT dials shared crt.glsl · all tubes

The first nine dials are the constants in crt.glsl — one shader shared by every tube profile; screen padding is a per-profile Ghostty setting. The preview above runs the identical shader math, so what you see is what Ghostty renders.

Screen text

Wordmark lab figlet.js · the TAAG fonts


    

Type a wordmark, pick a face, and Send to screen to see it on the tube through the CRT shader in the selected machine's palette. Copy as banner file emits a ready-to-paste banners/<machine>.txt block — the #: color header is filled from the selected machine. Banners read best at ≤ 66 columns; try kerned or smushed spacing when a word runs wide.

Publish back to Ghostty

Paste the publish command into your terminal — it writes retro/<slug> (and the shared crt.glsl if CRT is on) and opens a new window wearing this profile. A running window keeps the look it was launched with — pasting into one won't repaint it; ⌘⇧, only reloads the shared shader. Nothing here touches your files until you paste.

Publish command (paste in terminal)
Ghostty config — retro/<slug>
crt.glsl — shared by all tubes

Retro Terminals · Ghostty Studio — browse, tune, publish. Colors from build_profiles.py; shader from shaders/crt.glsl. Re-run build_ghostty.py --studio after editing the SPEC.