Files
owlen/themes/README.md
vikingowl 96e2482782
Some checks failed
ci/someci/tag/woodpecker/5 Pipeline is pending
ci/someci/tag/woodpecker/6 Pipeline is pending
ci/someci/tag/woodpecker/7 Pipeline is pending
ci/someci/tag/woodpecker/1 Pipeline failed
ci/someci/tag/woodpecker/2 Pipeline failed
ci/someci/tag/woodpecker/3 Pipeline failed
ci/someci/tag/woodpecker/4 Pipeline failed
Add built-in theme support with various pre-defined themes
- Introduce multiple built-in themes (`default_dark`, `default_light`, `gruvbox`, `dracula`, `solarized`, `midnight-ocean`, `rose-pine`, `monokai`, `material-dark`, `material-light`).
- Implement theming system with customizable color schemes for all UI components in the TUI.
- Include documentation for themes in `themes/README.md`.
- Add fallback mechanisms for default themes in case of parsing errors.
- Support custom themes with overrides via configuration.
2025-10-03 07:44:11 +02:00

3.0 KiB

OWLEN Built-in Themes

This directory contains the built-in themes that are embedded into the OWLEN binary.

Available Themes

  • default_dark - High-contrast dark theme (default)
  • default_light - Clean light theme
  • gruvbox - Popular retro color scheme with warm tones
  • dracula - Dark theme with vibrant purple and cyan colors
  • solarized - Precision colors for optimal readability
  • midnight-ocean - Deep blue oceanic theme
  • rose-pine - Soho vibes with muted pastels
  • monokai - Classic code editor theme
  • material-dark - Google's Material Design dark variant
  • material-light - Google's Material Design light variant

Theme File Format

Each theme is defined in TOML format with the following structure:

name = "theme-name"

# Text colors
text = "#ffffff"              # Main text color
placeholder = "#808080"       # Placeholder/muted text

# Background colors
background = "#000000"        # Main background
command_bar_background = "#111111"
status_background = "#111111"

# Border colors
focused_panel_border = "#ff00ff"    # Active panel border
unfocused_panel_border = "#800080"  # Inactive panel border

# Message role colors
user_message_role = "#00ffff"       # User messages
assistant_message_role = "#ffff00"  # Assistant messages
thinking_panel_title = "#ff00ff"    # Thinking panel title

# Mode indicator colors (status bar)
mode_normal = "#00ffff"
mode_editing = "#00ff00"
mode_model_selection = "#ffff00"
mode_provider_selection = "#00ffff"
mode_help = "#ff00ff"
mode_visual = "#ff0080"
mode_command = "#ffff00"

# Selection and cursor
selection_bg = "#0000ff"      # Selection background
selection_fg = "#ffffff"      # Selection foreground
cursor = "#ff0080"            # Cursor color

# Status colors
error = "#ff0000"             # Error messages
info = "#00ff00"              # Info/success messages

Color Format

Colors can be specified in two formats:

  1. Hex RGB: #rrggbb (e.g., #ff0000 for red, #ff8800 for orange)
  2. Named colors (case-insensitive):
    • Basic: black, red, green, yellow, blue, magenta, cyan, white
    • Gray variants: gray, grey, darkgray, darkgrey
    • Light variants: lightred, lightgreen, lightyellow, lightblue, lightmagenta, lightcyan

Note: For colors not in the named list (like orange, purple, brown), use hex RGB format.

OWLEN will display an error message on startup if a custom theme has invalid colors.

Creating Custom Themes

To create your own theme:

  1. Copy one of these files to ~/.config/owlen/themes/
  2. Rename and modify the colors
  3. Set theme = "your-theme-name" in ~/.config/owlen/config.toml
  4. Or use :theme your-theme-name in OWLEN to switch

Embedding in Binary

These theme files are embedded into the OWLEN binary at compile time using Rust's include_str!() macro. This ensures they're always available, even if the files are deleted from disk.

Custom themes placed in ~/.config/owlen/themes/ will override built-in themes with the same name.