Themes and Appearance
Elftia offers a rich set of appearance customization options so you can craft a personalized AI workspace. This page covers every appearance setting in detail.
All appearance settings live on the Settings → Appearance page.
Theme Mode
Elftia supports three theme modes:
| Mode | Description |
|---|---|
| Light Mode | A warm white background, ideal for well-lit environments |
| Dark Mode | A warm charcoal background that reduces eye strain, ideal for nighttime use |
| Follow System | Automatically switches based on your operating system's light/dark setting |
How to set it:
- Open Settings → Appearance.
- In the Theme Mode section, click the card for the mode you want.
- The switch takes effect immediately—no restart required.
Elftia's dark mode uses warm tones rather than pure black, making it visually softer and more comfortable. Light mode likewise uses a warm cream tone rather than pure white, reducing glare.
Accent Color
The accent color is the theme color used for elements like buttons, links, and selected states throughout the interface.
Preset Palette
Elftia provides a carefully curated set of preset colors that apply with a single click:
- Each preset color is tuned for both light and dark modes to ensure good contrast and visual quality.
- The preset palette covers warm, cool, and neutral tones.
Custom Colors
If the presets don't meet your needs, you can customize the accent color:
- Find the custom color option in the palette section.
- Enter a color value in one of the following formats:
- HEX: e.g.
#FF6B35 - HSL: e.g.
hsl(20, 100%, 60%)
- HEX: e.g.
- The preview area shows the effect of the chosen color in real time.
When choosing an accent color, make sure it has sufficient contrast in both light and dark modes. A color that's too light may not stand out in light mode, and the same goes for a color that's too dark in dark mode.
Font Settings
Elftia lets you override the fonts used in the interface.
UI Font (Sans)
The sans-serif font used for interface text; the default is Inter.
- In the Font settings section, find the UI font input field.
- Enter a font name (it must be a font installed on your system), for example:
"Noto Sans SC"— Source Han Sans"Microsoft YaHei"— Microsoft YaHei"PingFang SC"— PingFang (macOS)
- Leave it empty to use the default font, Inter.
Code Font (Mono)
The monospaced font used for code blocks and the editor; the default is JetBrains Mono.
- Enter a font name in the code font input field, for example:
"Fira Code"— a programming font with ligature support"Source Code Pro"— a programming font from Adobe"Cascadia Code"— a programming font from Microsoft
- Leave it empty to use the default font, JetBrains Mono.
Font changes apply to the entire interface immediately. If the specified font isn't installed on your system, the browser falls back to the default font.
Wallpaper
Elftia lets you set a background wallpaper for the interface, complete with a frosted-glass transparency effect. The wallpaper source can be an image or a gradient, and combined with multi-layered color/opacity adjustments, you can create everything from a clean business look to an immersive, atmospheric one.
Wallpaper Source
The wallpaper has two mutually exclusive sources (when both are configured, the gradient takes precedence):
| Source | How to set it | Notes |
|---|---|---|
| Image Wallpaper | Click Switch Image to choose a local file, or paste a URL into the input field | Automatically copied to the app data directory themes/wallpapers/; light and dark modes share the same image |
| Gradient Background | Turn on the Gradient Background toggle, choose the number of colors (one / two / three / four), and set a color for each slot | When enabled, the image below is temporarily hidden; turn the toggle off to restore it |
Supported image formats: JPG, PNG, WebP, GIF.
Remote Image Wallpaper
- Paste an image URL into the wallpaper input field (e.g.
https://example.com/wallpaper.jpg). - You must first enable Allow Remote Resources in Advanced Settings.
- The remote image's domain must be on the allowlist.
Enabling remote images sends requests to external servers to load the images. For privacy reasons, this is off by default. Only enable domains you trust.
Frosted-Glass Blur
| Parameter | Range | Default | Description |
|---|---|---|---|
| Frosted-Glass Blur | 0–30 px | 6 | The Gaussian blur applied behind the wallpaper. Higher values blur the wallpaper more and make interface text clearer |
Background Overlay (a tint layer over the wallpaper)
The overlay darkens or tints the wallpaper to improve readability. Starting with 0.1.11, the overlay color is controlled by a color picker and includes an automatic brightness toggle.
| Parameter | Range | Default | Description |
|---|---|---|---|
| Overlay Strength | 0–100 % | 70 | Overall opacity. 0 = wallpaper fully visible, 100 = fully covered |
| Overlay Color | Color picker | Neutral gray | Choose a hex color; takes effect instantly in the preview |
| Auto Brightness | Toggle | On | When on, the overlay brightness follows the mode (white in light mode, black in dark mode); when off, the color picker's brightness applies directly |
| Overlay Gradient | Optional toggle + 1–4 color slots | Off | When enabled, a linear gradient replaces the solid overlay; the strength slider still controls overall opacity |
The first time you drag the overlay color while the strength is 0, the system automatically raises the strength to 50 % so you can see the color effect right away.
Recommended overlay configurations:
| Wallpaper Type | Frosted-Glass Blur | Overlay Strength |
|---|---|---|
| Landscape photo | 6–12 | 60–75 |
| Gradient / solid color | 0–4 | 50–65 |
| Busy pattern | 10–20 | 70–85 |
| Dark image | 4–8 | 55–70 |
Element Background Tint
Semi-transparent panels such as sidebar items, cards, labels, and the tab switcher follow the theme by default (warm cream in light mode, warm charcoal in dark mode). Turning on Element Background Tint lets you uniformly override them with a custom color:
| Parameter | Default | Description |
|---|---|---|
| Element Background Tint (toggle) | Off | When off, the theme's default color is used; when on, the color below takes effect |
| Tint Color | Color picker | Affects all semi-transparent surfaces, including the rail / cards / labels / tabs / context menus |
| Element Gradient | Optional | Mutually exclusive with a solid color; when enabled, a 1–4 color gradient replaces the solid color, and each layer still retains its own opacity |
Elements that need to stay opaque, such as input fields and Dialogs/Modals, are not affected.
Message Bubble Color
Message bubbles (user bubbles / assistant bubbles) share the color and opacity of the element background by default. Starting with 0.1.11, a new independent control entry has been added:
| Parameter | Default | Description |
|---|---|---|
| Independent Control (master toggle) | Off | When off, bubbles follow the element background; the dedicated options below appear only when it's on |
| User Bubble | Sub-toggle + color picker | Independently set the user message bubble color / gradient |
| Assistant Bubble | Sub-toggle + color picker | Independently set the assistant message bubble color / gradient |
| Bubble Opacity | 0–100 % (default 35) | Takes effect only when the master toggle is on; lower values make bubbles more transparent and the wallpaper clearer |
The bubbles on each side can independently choose "solid color" or "gradient"—and these are mutually exclusive too (when a gradient is enabled, it overrides the solid color on that side).
Want all semi-transparent panels to share a single tone? Just turn on Element Background Tint, and the bubbles will follow automatically. Only when you want to distinguish bubbles and cards with different colors should you turn on Independent Control.
Other Advanced Parameters
| Parameter | Range | Default | Purpose |
|---|---|---|---|
| Element Opacity | 0–100 % | 0 | Experimental: pushes all semi-transparent UI toward opaque (use when the wallpaper steals the show) |
| Wallpaper Transparency | 0–100 % | 100 | Surface tint strength coefficient: 0 = surfaces fully transparent (wallpaper at its clearest), 100 = default surface tint |
| Disable Wallpaper in Compact Windows | Toggle | Off | When on, automatically disables the wallpaper in small windows such as Mini/Selection |
Removing the Wallpaper
Click the Clear button (trash can icon) above the wallpaper input field to remove the current wallpaper image. The gradient background is controlled separately by the Enable Gradient toggle.
Internal Rules for Wallpaper Transparency
Once a wallpaper is set, the interface automatically enables a set of transparency rules:
- Main container: a frosted-glass effect at 35% opacity
- Buttons and cards: a semi-transparent effect at 15–20% opacity
- Input fields: stay opaque to ensure readability
- Popups and dialogs: stay opaque and are unaffected by the wallpaper
- Dropdown / context menus: highly readable frosted glass at 85% opacity
These values are handled automatically and require no manual configuration; the "Element Background Tint" and "Message Bubble" options described above layer your chosen tone on top while preserving these per-level alphas.
Custom CSS
For advanced users, Elftia provides a full CSS editor that lets you inject custom styles to deeply customize the interface's appearance.
Using the CSS Editor
- Find the Custom CSS section in Appearance Settings.
- Click to expand the editor, and you'll see a CSS code editor with syntax highlighting.
- Write your custom CSS code.
- The code applies to the interface in real time, so you can see the effect immediately.
Example: Customizing Message Bubbles
{/* Change the background color of user message bubbles */}
.chat-bubble[data-role="user"] {
background-color: hsl(var(--primary) / 0.15);
border-radius: 16px;
}
{/* Change the font size of AI replies */}
.chat-bubble[data-role="assistant"] {
font-size: 15px;
line-height: 1.7;
}
Example: Customizing Sidebar Width
{/* Adjust the sidebar width */}
.session-panel {
width: 280px;
}
Available CSS Variables
You can use Elftia's theme variables in your custom CSS:
| Variable | Purpose |
|---|---|
--background | Page background color |
--foreground | Primary text color |
--surface-0 | Base surface color |
--surface-1 | First-level surface color (cards, containers) |
--surface-2 | Second-level surface color (input fields, secondary containers) |
--surface-3 | Third-level surface color (popups) |
--primary | Theme accent color |
--border | Border color |
--muted-foreground | Secondary text color |
--destructive | Color for errors/dangerous actions |
--success | Color for success states |
Action Buttons
The following actions are available above the CSS editor:
| Button | Function |
|---|---|
| Copy | Copy the current CSS to the clipboard |
| Paste | Paste CSS from the clipboard |
| Undo | Revert to the last saved state |
| Clear | Delete all custom CSS |
| Insert Compatibility Template | Insert a template of commonly used compatibility CSS selectors |
Custom CSS is very powerful, but improper styles can cause layout issues in the interface. If problems arise, simply clear the contents of the CSS editor to restore the default styles.
Theme Configuration Files
You can bundle all your appearance settings into a theme configuration file to export and share.
Exporting a Theme
- On the Appearance Settings page, find the Theme Configuration section.
- Click the Export button.
- Choose a save location; the configuration is saved in JSON format.
The exported file contains: theme mode, accent color, font settings, wallpaper parameters (excluding the image file), and custom CSS.
Importing a Theme
- Click the Import button.
- Select a theme JSON file.
- Preview the import effect, then apply after confirming.
You can share theme configuration files you've created with the community, and you can also use themes shared by others to quickly beautify your Elftia.
Code Editor Appearance
Elftia's built-in code editor (CodeMirror) has its own appearance settings:
| Setting | Description |
|---|---|
| Editor Theme | Choose the color scheme for the code editor |
| Word Wrap | Whether to wrap long lines of code automatically |
| Line Numbers | Whether to show line numbers |
| Minimap | Whether to show the minimap on the right |
| Font Size | The font size for the code editor |
These settings live in the Code Editor section of the Appearance page.
If you encounter display issues while customizing the appearance, try clearing your custom CSS or importing a known-good theme configuration. For more help, see Common Issues.