Themes and layout
Betamax uses Ghostty-style theme files to map terminal color indexes and named colors into rendered
RGB values. It searches user Ghostty theme directories first, then the copied themes bundled with
betamax-core. See Differences from VHS for compatibility
details and unsupported features.
betamax themesbetamax themes --jsonbetamax themes --markdownUse the exact listed name in a tape:
Set Theme "Aardvark Blue"Theme lookup
Section titled “Theme lookup”Betamax searches user Ghostty theme directories, then the bundled Ghostty themes, then the bundled
VHS-only themes. A name with no exact match falls back to the VHS alias table, so tokyonight
loads TokyoNight, and then to a match that ignores case, spaces, and punctuation. Unknown names
fail with close suggestions.
Bundled themes make tapes portable across machines. User Ghostty themes make local experimentation convenient. Because user themes are searched first, a local theme with the same name as a bundled theme can change a recording on that machine. For reproducible project assets, prefer a bundled theme name and run examples in CI or a consistent environment.
The default theme is Aardvark Ink. Set Preset Default-0.1 restores the 0.1 default,
Aardvark Blue. Framed and Inset derive their backdrop and window bar colors from the final theme;
see Window styling.
SP Night themes
Section titled “SP Night themes”The three official SP Night Ghostty themes are bundled:
Set Theme "sp_night_noite"Use sp_night_garoa for the quieter gray flavor, or sp_night_jaragua for the green-black flavor.
sp_night_noite is Noite Paulista, the regular SP Night palette. These themes are MIT-licensed,
copyright 2026 sp night. The full notice and pinned source revision are recorded in
betamax-core/THIRD_PARTY.md
and included with binary distributions.
Layout settings
Section titled “Layout settings”These settings affect the final output frame and PTY grid:
| Setting | Default | Purpose |
|---|---|---|
Width |
1200 |
Final output width in pixels |
Height |
720 |
Final output height in pixels |
Padding |
0 |
Space between cells and terminal edge |
FontFamily |
JetBrains Mono |
Preferred font family |
FontSize |
22 |
Font size in pixels |
LetterSpacing |
0 |
Extra pixels between terminal cells |
LineHeight |
1 |
Multiplier applied to font size |
Betamax derives PTY columns and rows from these values after subtracting the margin, window bar, and any caption row. Increasing padding or font size usually reduces the terminal grid size; increasing width or height usually increases it.
When testing application layout, start with the default FontSize and Margin. Increase the canvas
size if needed. See Presentation and layout proof.
Window decoration
Section titled “Window decoration”The window around the terminal is covered in Window styling: presets, margins, gradient and transparent fills, window bars and titles, borders, corners, and shadows.
Timing and cursor styling
Section titled “Timing and cursor styling”Framerate controls capture cadence. GIF plays at most 50 FPS, so rates above 50 only add frames
to WebP, video, and frame directories; see GIF encoding.
PlaybackSpeed changes output playback speed without
speeding up shell execution. LoopOffset rotates animated frames so a GIF loop can begin at a less
jarring point.
CursorBlink defaults to true. Set it to false for deterministic demos where a blinking cursor
would create unnecessary frame differences.
Set Framerate 50Set PlaybackSpeed 1.0Set LoopOffset 10%Set CursorBlink falseCurrent theme boundary
Section titled “Current theme boundary”Betamax applies the selected theme in its Rust renderer. The
libghostty-vt terminal parser is not initialized with the
selected palette. Betamax uses the loaded theme when rendering media and serializing state styles.