Files
owlen/themes
vikingowl 56de1170ee feat(cli): add ansi_basic theme fallback and offline provider shim for limited‑color terminals
- Detect terminal color support and automatically switch to the new `ansi_basic` theme when only 16‑color support is available.
- Introduce `OfflineProvider` that supplies a placeholder model and friendly messages when no providers are reachable, keeping the TUI usable.
- Add `CONFIG_SCHEMA_VERSION` (`1.1.0`) with schema migration logic and default handling in `Config`.
- Update configuration saving to persist the schema version and ensure defaults.
- Register the `ansi_basic` theme in `theme.rs`.
- Extend `ChatApp` with `set_status_message` to display custom status lines.
- Update documentation (architecture, Vim mode state machine) to reflect new behavior.
- Add async‑trait and futures dependencies required for the offline provider implementation.
2025-10-12 02:19:43 +02:00
..

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.