Skip to content

Feature: use the built-in color themes in non-powerline mode (+ font-safe separator fallback) #604

Description

@axisrow

Feature: apply the built-in color themes in regular (non-powerline) mode

POWERLINE_THEMES (src/utils/colors.ts) ships 10 curated themes — Nord, Nord Aurora, Monokai, Solarized, Minimal, Dracula, Catppuccin, Gruvbox, One Dark, Tokyo Night — each calibrated for ansi16 / ansi256 / truecolor. They are only honored by the powerline renderer, though: in regular mode the coloring is strictly per-widget and manual, so there is no way to get a coherent palette without hand-picking every widget color in the ColorMenu.

Proposal

Make the theme catalog usable in regular mode, foreground-only:

  • honor powerline.theme (or introduce a top-level theme setting) in the regular renderer: cycle the theme's fg colors across widgets — or map them by widget category — without backgrounds or arrows;
  • existing per-widget colors keep working as explicit overrides on top of the theme.

This gives users a curated, consistent look in the default mode with a single setting, and reuses the theme definitions that are already shipped and calibrated for all three color levels.

Related bug: separator glyph renders as mojibake without a Nerd Font

The default powerline separator is the private-use-area glyph U+E0B0 (人力资源 arrow). checkPowerlineFonts() (src/utils/powerline.ts) can detect font availability and getPowerlineStatusMessage() has a ready "✗ Powerline fonts not detected - some symbols may not display correctly" message, but:

  • that warning only surfaces in the TUI setup flow; enabling powerline via config/CLI without a Nerd Font produces garbage glyphs in the rendered status line with no hint of the cause;
  • there is no render-time fallback.

Suggestion: if font detection fails and the configured separator is a private-use-area glyph, fall back to a plain separator (" | " or " ") at render time, and/or surface the existing status message once.

Environment: ccstatusline 2.2.30, macOS, terminal without Nerd Font.

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions