packages/desktop/apps/electron/resources/docs/themes.md
This guide explains how to customize the visual theme of Qwen Code.
Qwen Code uses a 6-color theme system with support for both app-level defaults and per-workspace overrides.
~/.craft-agent/themes/{name}.json - Complete theme packages~/.craft-agent/theme.json - Override specific colors (app-level)Workspaces without a custom theme inherit the app default. All settings are optional - the app has sensible built-in defaults.
Each workspace can have its own color theme that overrides the app default. Configure in Settings → Appearance:
Workspace theme preferences are stored in the workspace config:
~/.craft-agent/workspaces/{id}/config.json
{
"id": "ws_abc123",
"name": "My Project",
"defaults": {
"colorTheme": "nord"
}
}
When colorTheme is omitted or undefined, the workspace inherits the app default.
| Color | Purpose | Usage |
|---|---|---|
background | Surface/page background | Light/dark surface color |
foreground | Text and icons | Primary text color |
accent | Brand color, Execute mode | Highlights, active states, purple UI elements |
info | Warnings, Ask mode | Amber indicators, attention states |
success | Connected status | Green checkmarks, success states |
destructive | Errors, delete actions | Red alerts, failed states |
Any valid CSS color format is supported:
#8b5cf6, #8b5cf6cc (with alpha)rgb(139, 92, 246), rgba(139, 92, 246, 0.8)hsl(262, 83%, 58%)oklch(0.58 0.22 293) (recommended)purple, rebeccapurpleRecommendation: Use OKLCH for perceptually uniform colors that look consistent across light/dark modes.
Create ~/.craft-agent/theme.json to override specific colors:
{
"accent": "oklch(0.58 0.22 293)",
"dark": {
"accent": "oklch(0.65 0.22 293)"
}
}
All fields are optional. Only specify colors you want to override.
The dark object provides optional overrides for dark mode. When the user's system is in dark mode:
dark override the base colorsThis allows partial dark mode customization - only override what needs to differ.
Preset themes are complete theme packages stored at ~/.craft-agent/themes/. Each preset is a JSON file with theme colors and metadata.
{
"name": "Dracula",
"description": "A dark theme with vibrant colors",
"author": "Zeno Rocha",
"license": "MIT",
"source": "https://draculatheme.com",
"supportedModes": ["dark"],
"background": "oklch(0.22 0.02 280)",
"foreground": "oklch(0.95 0.01 270)",
"accent": "oklch(0.70 0.20 320)",
"info": "oklch(0.78 0.14 70)",
"success": "oklch(0.72 0.18 145)",
"destructive": "oklch(0.65 0.22 28)",
"shikiTheme": {
"light": "github-light",
"dark": "dracula"
}
}
| Field | Description |
|---|---|
name | Display name for the theme |
description | Short description |
author | Theme creator |
license | License type (MIT, etc.) |
source | URL to original theme |
supportedModes | Array of "light", "dark", or both |
shikiTheme | Syntax highlighting theme (light/dark variants) |
~/.craft-agent/themes/{name}.jsonScenic mode displays a full-window background image with glass-style panels. This creates a visually immersive experience.
{
"mode": "scenic",
"backgroundImage": "mountains.jpg",
"background": "oklch(0.15 0.02 270 / 0.8)",
"paper": "oklch(0.18 0.02 270 / 0.6)",
"navigator": "oklch(0.12 0.02 270 / 0.7)",
"popoverSolid": "oklch(0.18 0.02 270)"
}
| Property | Description |
|---|---|
mode | Set to "scenic" (default is "solid") |
backgroundImage | Image filename (relative to theme file) or URL |
Scenic mode benefits from semi-transparent surface colors:
| Color | Purpose |
|---|---|
paper | AI messages, cards, elevated content |
navigator | Left sidebar background |
input | Input field background |
popover | Dropdowns, modals, context menus |
popoverSolid | Guaranteed 100% opaque popover background |
Note: Scenic themes automatically force dark mode for better contrast with background images.
The built-in default theme uses OKLCH colors optimized for accessibility:
Light Mode:
oklch(0.98 0.003 265) - Very light gray with slight purple tintoklch(0.185 0.01 270) - Near-black for high contrastoklch(0.58 0.22 293) - Vibrant purpleoklch(0.75 0.16 70) - Warm amberoklch(0.55 0.17 145) - Clear greenoklch(0.58 0.24 28) - Alert redDark Mode:
oklch(0.145 0.015 270) - Deep dark with purple tintoklch(0.95 0.01 270) - Near-white{
"accent": "#3b82f6"
}
{
"accent": "oklch(0.55 0.25 250)",
"info": "oklch(0.70 0.15 200)",
"dark": {
"accent": "oklch(0.65 0.25 250)",
"info": "oklch(0.75 0.12 200)"
}
}
{
"background": "#ffffff",
"foreground": "#000000",
"dark": {
"background": "#000000",
"foreground": "#ffffff"
}
}
Theme changes are applied immediately - no restart needed. Edit theme.json and the UI updates automatically.
~/.craft-agent/theme.json for overrides or ~/.craft-agent/themes/{name}.json for a presetdark overrides for dark modeTips:
accent to quickly personalizeTheme not applying:
~/.craft-agent/theme.json for overrides, ~/.craft-agent/themes/ for presets)Colors look wrong in dark mode:
dark overridessupportedModes that excludes your current modeBackground image not showing:
mode is set to "scenic"OKLCH format: oklch(lightness chroma hue)
Common hues: