What is Hue Inheritance?
Every color in your terminal can inherit some of the themeβs anchor hue. This creates visual unity - everything feels like it belongs together.βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β HUE INHERITANCE CONCEPT β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β Theme Anchor Hue: 250 deg (Blue) β
β β
β Original Colors After Inheritance β
β =============== ================= β
β β
β Background β
β [ Gray ] #1a1a1a --80%--> [ Blue-gray ] #1a1a2e β
β β
β Text β
β [ Gray ] #f0f0f0 --100%--> [Blue-white ] #e8e8f8 β
β β
β Border β
β [ Gray ] #404040 --18%--> [ Hint-blue ] #3e3e44 β
β β
β ANSI Red β
β [ Red ] #ff0000 --8%--> [ Red ] #fd0008 β
β (Almost unchanged - semantic meaning preserved) β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
The Inheritance Pipeline
Each UI element goes through a two-step process to receive its final color.βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β HUE INHERITANCE PIPELINE β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β INPUT: Base colors (background, text) β
β Anchor hue (theme identity) β
β Inherit ratio (how much to inherit) β
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β β
β β STEP 1: BASE MIXING β β
β β ===================== β β
β β β β
β β Mix background and text in OKLAB space β β
β β (This determines lightness and base saturation) β β
β β β β
β β bg-secondary = 96% bg + 4% text β β
β β bg-tertiary = 92% bg + 8% text β β
β β β β
β β Why OKLAB? Perceptually uniform = no muddy colors β β
β β β β
β βββββββββββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββ β
β β β
β v β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β β
β β STEP 2: HUE INJECTION β β
β β ===================== β β
β β β β
β β Blend the mixed color's hue toward anchor hue β β
β β (This adds theme identity) β β
β β β β
β β new_hue = original_hue * (1 - inherit) β β
β β + anchor_hue * inherit β β
β β β β
β β Example (80% inherit): β β
β β new_hue = original * 0.20 + anchor * 0.80 β β
β β = Gray hue * 0.20 + Blue(250) * 0.80 β β
β β = Mostly blue with hint of original β β
β β β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β OUTPUT: Color with theme identity β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
The Pure Black Problem
Pure black (#000000) has no hue to blend. It needs special handling.βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β THE PURE BLACK PROBLEM β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β Pure black: #000000 β
β β β
β v β
β OKLAB: L=0, a=0, b=0 β
β β β
β v β
β OKLCH: L=0, C=0, H=??? β
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β PROBLEM: When Chroma is 0, Hue is undefined! β β
β β β β
β β Hue = atan2(b, a) = atan2(0, 0) = ??? β β
β β β β
β β You can't blend toward anchor hue if there's no hue β β
β β to start with. β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β After OKLAB mixing with text: β
β mix(#000000, #f0f0f0, 4%) = #0d0d0d β
β β β
β v β
β OKLCH: L=0.05, C~0, H=still undefined β
β β
β Still no usable hue to blend! β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
The Solution: Chroma Boost
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β SOLUTION: CHROMA BOOST β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β When chroma is near zero, we inject the anchor hue directly β
β and add a small amount of chroma. β
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β if chroma is near zero: β β
β β new_hue = anchor_hue (direct injection) β β
β β new_chroma = base_chroma + chroma_boost β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β Example (monolex-darknight theme): β
β β
β Background: #000000 (pure black) β
β Anchor hue: 250 deg (Blue) β
β Chroma boost: 0.012 β
β β
β Result for bg-secondary: β
β - L = 0.05 (from base mixing) β
β - C = 0.012 (injected) β
β - H = 250 deg (anchor, directly assigned) β
β β
β Final: Very dark background with subtle blue tint β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Text Inheritance
Text typically uses 100% inheritance for strong visual unity.βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β TEXT HUE INHERITANCE β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β text_hue_inherit = 100% (default) β
β β
β What this means: β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β new_hue = original_hue * 0.00 + anchor_hue * 1.00 β β
β β = anchor_hue β β
β β β β
β β The text's hue completely matches the theme! β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β Lightness and Chroma are preserved for readability. β
β Only Hue is unified. β
β β
β Example (Blue theme, anchor = 250 deg): β
β β
β βββββββββββββββββββββ βββββββββββββββββββββ β
β β coreLight β β text-primary β β
β β #f0f0f0 β β Same brightness β β
β β (neutral gray) β β Blue-tinted β β
β βββββββββββββββββββββ βββββββββββββββββββββ β
β β ^ β
β ββββ 100% hue inherit ββββ β
β β
β All text levels share the same hue: β
β - text-primary: Bright, blue-tinted β
β - text-secondary: Medium, blue-tinted β
β - text-tertiary: Dim, blue-tinted β
β β
β Result: Cohesive, unified text appearance β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Border Inheritance
Borders use lower inheritance to stay subtle.βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β BORDER HUE INHERITANCE β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β border_hue_inherit = 18% (default) β
β β
β Why lower? β
β - Borders are UI separators, not content β
β - Too strong color is distracting β
β - Gradual chroma increase expresses visual depth β
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β Border Level β Chroma β Visual Effect β β
β ββββββββββββββββββββΌββββββββββΌββββββββββββββββββββββββββββββββββ€ β
β β border-primary β 0.061 β Subtle theme hint β β
β β border-secondary β 0.073 β Slightly more visible β β
β β border-light β 0.085 β Most visible theme color β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β Each level adds ~0.012 chroma, creating depth hierarchy. β
β β
β Visual representation: β
β β
β βββββββββββββββββββββββββββββ β
β β Window β <-- border-light (most visible) β
β β βββββββββββββββββββββββ β β
β β β Panel β β <-- border-secondary β
β β β βββββββββββββββββ β β β
β β β β Content β β β <-- border-primary (subtle) β
β β β βββββββββββββββββ β β β
β β βββββββββββββββββββββββ β β
β βββββββββββββββββββββββββββββ β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
ANSI Color Inheritance
ANSI colors carry semantic meaning. Low inheritance preserves this.βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β ANSI HUE INHERITANCE β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β ANSI Type β Inherit β Why β β
β βββββββββββββΌββββββββββΌββββββββββββββββββββββββββββββββββββββββββ€ β
β β Normal β 8% β Slight theme hint, preserve meaning β β
β β Bright β 5% β Already saturated, more sensitive β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β Terminal output with semantic colors: β
β β
β $ git status β
β [GREEN] modified: src/app.rs <-- GREEN = staged β
β [RED] deleted: old-file.txt <-- RED = deleted β
β β
β $ npm test β
β [GREEN] 42 tests passed <-- GREEN = success β
β [RED] 3 tests failed <-- RED = failure β
β β
β High inheritance would break this: β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β If ansiHueInherit = 80% (too high): β β
β β β β
β β Red (#ff0000) shifts toward blue --> becomes purple β β
β β Green (#00ff00) shifts toward blue --> becomes cyan β β
β β β β
β β User can no longer distinguish success from failure! β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β With 8% inheritance: β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β Red stays red (92% original, 8% blue tint) β β
β β Green stays green (92% original, 8% blue tint) β β
β β β β
β β Semantic meaning preserved, subtle theme harmony added β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Theme Strategy Comparison
Different themes use different inheritance strategies.βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β INHERITANCE STRATEGY COMPARISON β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β Theme β bg β text β border β ansi β Strategy β β
β ββββββββββββββββββββΌβββββββΌβββββββΌβββββββββΌβββββββΌβββββββββββ€ β
β β monolex-night β 80% β 100% β 18% β 8% β Balanced β β
β β monolex-darknightβ 100% β 100% β 20% β 10% β Strong β β
β β monolex-forest β 0% β 100% β 25% β 15% β Natural β β
β β dracula β 0% β 100% β 15% β 8% β Preserve β β
β β solarized-dark β 0% β 100% β 25% β 12% β Classic β β
β β standard β 0% β 0% β 0% β 0% β Pure β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β STRATEGY PATTERN DETAILS β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β PATTERN A: Full Integration β
β =========================== β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β Theme: monolex-night β β
β β β β
β β bgHueInherit: 80% Strong theme in background β β
β β textHueInherit: 100% Fully unified text β β
β β β β
β β Result: Everything feels deeply connected β β
β β Best for: Users who want strong theme immersion β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β PATTERN B: Selective β
β =================== β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β Theme: monolex-forest β β
β β β β
β β bgHueInherit: 0% BG already green, don't double-apply β β
β β textHueInherit: 100% Text unified with green theme β β
β β β β
β β Result: Natural green without overwhelming β β
β β Best for: Themes with colored backgrounds β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β PATTERN C: Pure β
β ============== β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β Theme: standard β β
β β β β
β β bgHueInherit: 0% No modification β β
β β textHueInherit: 0% No modification β β
β β ansiHueInherit: 0% No modification β β
β β β β
β β Result: Pure xterm-compatible colors β β
β β Best for: Users who need exact color matching β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
The Color Generation Cascade
Each color level builds on the previous through mixing and inheritance.βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β COLOR GENERATION CASCADE β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β bg-primary: ############################################ β
β coreDark (100% background, no processing) β
β β
β bg-secondary: ############################################ββ β
β β β β
β βββ Mix: 96% bg + 4% text βββββββββ β β
β β β
β βββ Hue: blend toward anchor (80%) β
β β
β bg-tertiary: ########################################ββββ β
β β β β
β βββ Mix: 92% bg + 8% text ββββββββ β
β β β
β βββ Hue: blend toward anchor (80%) β
β β β
β βββ Tint: add tint overlay β
β β
β Each step: β
β 1. OKLAB mixing determines lightness/saturation first β
β 2. Hue inheritance adds theme identity after β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Key Takeaways
- Hue inheritance creates unity - All UI elements share the themeβs color identity
- Two-step process - OKLAB mixing for lightness, then hue blending for identity
- Pure black needs special handling - Chroma boost injects color directly
- ANSI colors need low inheritance - Semantic meaning (red=error) must be preserved
- Different strategies for different themes - Full integration vs. selective vs. pure
Einstein Arc
Learn how colors bend around the theme anchor