You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
vhs themes lists 348 theme names with no visual context:
3024 Day
3024 Night
Aardvark Blue
Abernathy
Adventure
...
Picking a theme currently means: guess a name, write it into your tape, run VHS, wait for the render, check the output, repeat. For 348 themes, that's not realistic. Most users just pick "Catppuccin Mocha" or "Dracula" because they already know what those look like from other tools.
Proposal
Add a --preview flag to vhs themes that renders color swatches inline using the theme's actual hex values:
Each ██ block is colored with one of the theme's 8 base colors (black, red, green, yellow, blue, magenta, cyan, white) using truecolor ANSI escapes. The fg/bg hex values show at a glance whether a theme is light or dark.
An optional positional arg filters by substring match. vhs themes --preview mocha returns just the Catppuccin Mocha result instead of all 348.
On 348 themes being a lot of output
The current vhs themes already dumps all 348 names and users pipe to grep/fzf/less -R. Adding --preview makes each line richer but follows the same pattern. The filter arg is the most immediately useful part: vhs themes --preview dark narrows 348 themes to the handful with "dark" in the name.
Longer term, a bubbletea interactive picker (type to filter, arrow keys scroll, live color swatches) would be the polished version. But that's a bigger scope and a design decision worth making separately. Happy to start with the simpler --preview [filter] and iterate from there.
Why this is useful
Discoverability. 348 themes exist but nobody browses them. A visual list makes the full catalog accessible.
No render required. Reads from the embedded themes.json and outputs ANSI. No browser, no ffmpeg, no ttyd. Instant.
Filtering.vhs themes --preview cat narrows the 348-item list to just Catppuccin variants.
CI/docs.vhs themes --preview --markdown could produce a theme gallery for docs (already has a hidden --markdown flag).
Implementation sketch
The Theme struct already has all 16 hex colors. lipgloss is already a dependency. The preview renderer would:
Parse each theme's hex colors
Render 8 colored ██ blocks using lipgloss.NewStyle().Background(lipgloss.Color(hexColor))
Append fg/bg hex for light/dark identification
Optional positional arg to substring-match theme names
Rough scope: probably 100-ish lines in themes.go + a flag in main.go. No new deps.
Happy to submit a PR for this if the approach looks right.
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
Problem
vhs themeslists 348 theme names with no visual context:Picking a theme currently means: guess a name, write it into your tape, run VHS, wait for the render, check the output, repeat. For 348 themes, that's not realistic. Most users just pick "Catppuccin Mocha" or "Dracula" because they already know what those look like from other tools.
Proposal
Add a
--previewflag tovhs themesthat renders color swatches inline using the theme's actual hex values:Each
██block is colored with one of the theme's 8 base colors (black, red, green, yellow, blue, magenta, cyan, white) using truecolor ANSI escapes. The fg/bg hex values show at a glance whether a theme is light or dark.An optional positional arg filters by substring match.
vhs themes --preview mochareturns just the Catppuccin Mocha result instead of all 348.On 348 themes being a lot of output
The current
vhs themesalready dumps all 348 names and users pipe togrep/fzf/less -R. Adding--previewmakes each line richer but follows the same pattern. The filter arg is the most immediately useful part:vhs themes --preview darknarrows 348 themes to the handful with "dark" in the name.Longer term, a bubbletea interactive picker (type to filter, arrow keys scroll, live color swatches) would be the polished version. But that's a bigger scope and a design decision worth making separately. Happy to start with the simpler
--preview [filter]and iterate from there.Why this is useful
themes.jsonand outputs ANSI. No browser, no ffmpeg, no ttyd. Instant.vhs themes --preview catnarrows the 348-item list to just Catppuccin variants.vhs themes --preview --markdowncould produce a theme gallery for docs (already has a hidden--markdownflag).Implementation sketch
The Theme struct already has all 16 hex colors. lipgloss is already a dependency. The preview renderer would:
██blocks usinglipgloss.NewStyle().Background(lipgloss.Color(hexColor))Rough scope: probably 100-ish lines in
themes.go+ a flag inmain.go. No new deps.Happy to submit a PR for this if the approach looks right.
Beta Was this translation helpful? Give feedback.
All reactions