Skip to content

add color themes (terminal/dark/light)#15

Draft
roykollensvendsen wants to merge 11 commits into
mcjkula:mainfrom
roykollensvendsen:feat/color-themes
Draft

add color themes (terminal/dark/light)#15
roykollensvendsen wants to merge 11 commits into
mcjkula:mainfrom
roykollensvendsen:feat/color-themes

Conversation

@roykollensvendsen

Copy link
Copy Markdown

Problem

taolk colors its borders and dim text with ANSI named colors (e.g. DarkGray). On low-contrast terminal palettes like Solarized those sit almost on top of the background, so borders and dim text are nearly invisible.

What this does

Adds a selectable color theme via ui.colors or the TAOLK_COLORS env var:

  • dark (new default) — fixed RGB tuned for dark terminals; readable on any palette
  • light — fixed RGB for light terminals
  • terminal — follow the terminal's own ANSI palette (the previous behavior)

Resolved once at startup. With no setting, it uses light when it can tell the terminal background is light (via COLORFGBG), otherwise dark.

How it works

Mirrors the icon-theme design: a ColorTheme struct with three const instances and a process-global accessor (OnceLock), resolved by a pure resolve_with so it's unit-tested without env or IO. A test asserts the built-in themes use only fixed RGB, so they can't quietly fall back to the terminal palette.

Testing

cargo fmt --check, cargo clippy --all-targets -- -D warnings, cargo test (513 passing), and cargo check --no-default-features --lib all pass.

Stacked on #14 (icon themes) — the icon commits show here until #14 merges; this PR's own changes are the five color commits (add color themes, use the active color theme across the ui, add ui.colors config key, select color theme at startup, document color themes).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant