add color themes (terminal/dark/light)#15
Draft
roykollensvendsen wants to merge 11 commits into
Draft
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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.colorsor theTAOLK_COLORSenv var:dark(new default) — fixed RGB tuned for dark terminals; readable on any palettelight— fixed RGB for light terminalsterminal— follow the terminal's own ANSI palette (the previous behavior)Resolved once at startup. With no setting, it uses
lightwhen it can tell the terminal background is light (viaCOLORFGBG), otherwisedark.How it works
Mirrors the icon-theme design: a
ColorThemestruct with three const instances and a process-global accessor (OnceLock), resolved by a pureresolve_withso 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), andcargo check --no-default-features --liball 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).