Summary
Changing themes currently requires editing config.yaml and restarting the application. Add an in-app mechanism to preview and switch themes without restarting.
Background
The theme system supports 14 named themes, but trying them out is a manual cycle of: edit config → restart → evaluate → repeat. This friction discourages exploration, especially for new users choosing a theme for the first time.
Proposed solution
Add a keybinding (e.g., from a settings or appearance menu) that opens a theme picker. The picker would:
- List all registered themes via
config.ThemeNames()
- Apply the selected theme's palette live by calling
config.SetColors(ColorsFromPalette(...))
- Refresh all visible components to reflect the new colors
- Persist the choice to
config.yaml on confirmation, or revert on cancel
Considerations
tview global styles (Styles.PrimaryTextColor, Styles.PrimitiveBackgroundColor) need updating for light/dark switches
- Navidown markdown style and chroma code block theme would also need a live refresh
- Components that cache colors at construction time (e.g.,
NewTaskList()) may need a refresh mechanism
Parent issue
Sub-issue of #9
Summary
Changing themes currently requires editing
config.yamland restarting the application. Add an in-app mechanism to preview and switch themes without restarting.Background
The theme system supports 14 named themes, but trying them out is a manual cycle of: edit config → restart → evaluate → repeat. This friction discourages exploration, especially for new users choosing a theme for the first time.
Proposed solution
Add a keybinding (e.g., from a settings or appearance menu) that opens a theme picker. The picker would:
config.ThemeNames()config.SetColors(ColorsFromPalette(...))config.yamlon confirmation, or revert on cancelConsiderations
tviewglobal styles (Styles.PrimaryTextColor,Styles.PrimitiveBackgroundColor) need updating for light/dark switchesNewTaskList()) may need a refresh mechanismParent issue
Sub-issue of #9