Gajae-Code
Gajae-Codev0.9.1

Theme

The default GJC red-claw dark theme, where theme settings are persisted, how custom themes are loaded, and the terminal image-protocol controls (GJC_FORCE_IMAGE_PROTOCOL, GJC_ALLOW_SIXEL_PASSTHROUGH).

Gajae-Code (gjc) ships a themed TUI driven by JSON color tokens. Explicit user settings always win, and the default look is the GJC red-claw dark theme.

Default theme

The default dark theme is red-claw — the GJC red-claw look, with warm red accents and strong status contrast. Light-appearance terminals default to blue-crab.

Defaults from the settings schema:

SettingDefault
theme.darkred-claw
theme.lightblue-crab
symbolPresetunicode
colorBlindModefalse

These are persisted to the global config YAML at <agentDir>/config.yml (default ~/.gjc/agent/config.yml). Legacy flat theme: "name" is migrated to nested theme.dark / theme.light based on luminance detection.

Auto slot selection

When the theme is on auto, GJC picks the dark/light slot from terminal appearance in this order:

Terminal-reported OSC 11 background luminance (unless the macOS/Zellij fallback path is active).
COLORFGBG background index (< 8 => dark, >= 8 => light).
macOS appearance fallback, only for the known-broken macOS/Zellij OSC 11 path.
Dark slot fallback.

Auto mode re-evaluates the slot on terminal appearance changes, SIGWINCH, and the macOS fallback observer.

What the theme controls

The theme system drives the TUI color tokens: foreground/background, markdown styling, selector/editor/settings list adapters, the symbol preset (unicode | nerd | ascii) plus overrides, native syntax-highlighting colors, and status-line segment colors. Every colors token is required for a custom theme; export and symbols are optional.

Built-in vs custom themes

Theme lookup order:

  1. Built-in embedded themes (red-claw, blue-crab, claude-code, codex, opencode, and legacy dark/light themes).
  2. Custom theme file: <customThemesDir>/<name>.json.

The custom themes directory defaults to ~/.gjc/agent/themes, overridden by GJC_CODING_AGENT_DIR ($GJC_CODING_AGENT_DIR/themes). Built-ins take precedence on name collision.

Bundled themes

ThemeBest fit
red-clawNative GJC identity for dark terminals.
blue-crabLight terminal or OS appearance.
claude-codeClaude Code muscle memory without leaving GJC.
codexA Codex-like dark workspace.
opencodeOpenCode muscle memory in the bundled picker.

Create a custom theme

Create a file in the custom themes dir, e.g. ~/.gjc/agent/themes/my-theme.json.
Include name, optional vars, and all required colors tokens; optionally symbols and export.
Select it in Settings -> Display -> Dark theme (or Light theme) depending on which auto slot you want. For the bundled crustacean look, choose red-claw.

The settings theme picker is confirm-only: arrow-key browsing does not change the rendered theme, so the displayed and persisted names stay aligned until you press Enter. While running interactively, edits to a custom theme file auto-reload on save; built-ins are not watched, and reload errors keep the last successfully loaded theme. A failed explicit switch falls back to the built-in dark.

Terminal image protocol

Gajae-Code renders inline images using a terminal image protocol. Detection is automatic, but you can force it with environment variables:

VariableBehavior
GJC_FORCE_IMAGE_PROTOCOLForces the image protocol — kitty, iterm2/iterm, sixel, or none.
GJC_ALLOW_SIXEL_PASSTHROUGHAllows SIXEL passthrough when GJC_FORCE_IMAGE_PROTOCOL=sixel.

Set GJC_FORCE_IMAGE_PROTOCOL=none to disable inline images entirely (useful over multiplexers or terminals that mishandle image escapes). GJC_ALLOW_SIXEL_PASSTHROUGH only applies when the forced protocol is sixel.

These are read as runtime signals — usually set by the terminal/OS, not configured by hand:

  • COLORTERM, TERM, WT_SESSION — color capability (theme color mode).
  • COLORFGBG — terminal background light/dark auto-detection.

Color mode resolves to truecolor for COLORTERM=truecolor|24bit or WT_SESSION, to 256-color for TERM in dumb/linux/empty, and otherwise to truecolor.

On this page