Themes And Styling
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.
betamax themesbetamax themes --jsonbetamax themes --markdownUse the exact listed name in a tape:
Set Theme "Aardvark Blue"Theme Lookup
Section titled “Theme Lookup”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 Blue. It was chosen as a readable, VHS-like default for examples,
not because it has special behavior in the renderer.
Layout Settings
Section titled “Layout Settings”These settings affect the raw terminal canvas and PTY grid:
| Setting | Default | Purpose |
|---|---|---|
Width | 1200 | Raw terminal canvas width in pixels |
Height | 600 | Raw terminal canvas height in pixels |
Padding | 60 | Space between cells and the raw canvas edge |
FontFamily | JetBrains Mono | Preferred font family |
FontSize | 22 | Font size in pixels |
LetterSpacing | 1 | Extra pixels between terminal cells |
LineHeight | 1 | Multiplier applied to font size |
Betamax derives PTY columns and rows from these values. Increasing padding or font size usually reduces the terminal grid size; increasing width or height usually increases it.
Frame Decoration
Section titled “Frame Decoration”These settings are applied after the raw terminal frame is rendered:
| Setting | Default | Purpose |
|---|---|---|
Margin | 0 | Outer frame margin in pixels |
MarginFill | theme background | Outer margin color |
WindowBar | empty / disabled | Synthetic window bar mode |
WindowBarSize | 30 | Window bar height in pixels |
BorderRadius | 0 | Rounded-corner mask radius |
WindowBar currently treats any non-empty value as enabled. Modes ending in Right, such as
RingsRight and ColorfulRight, place the window buttons on the right. Other non-empty values
place them on the left.
Set Margin 12Set MarginFill "#111111"Set WindowBar ColorfulSet WindowBarSize 34Set BorderRadius 8Timing And Cursor Styling
Section titled “Timing And Cursor Styling”Framerate controls capture cadence. 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 yet, which mostly matters for future work where parser state
may expose palette-aware data directly. The renderer path used for GIFs, PNGs, videos, and state
style serialization uses Betamax’s loaded theme.