Skip to main content

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:

ModeDescription
Light ModeA warm white background, ideal for well-lit environments
Dark ModeA warm charcoal background that reduces eye strain, ideal for nighttime use
Follow SystemAutomatically switches based on your operating system's light/dark setting

How to set it:

  1. Open Settings → Appearance.
  2. In the Theme Mode section, click the card for the mode you want.
  3. The switch takes effect immediately—no restart required.
info

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:

  1. Find the custom color option in the palette section.
  2. Enter a color value in one of the following formats:
    • HEX: e.g. #FF6B35
    • HSL: e.g. hsl(20, 100%, 60%)
  3. The preview area shows the effect of the chosen color in real time.
tip

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.

  1. In the Font settings section, find the UI font input field.
  2. 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)
  3. 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.

  1. 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
  2. Leave it empty to use the default font, JetBrains Mono.
tip

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):

SourceHow to set itNotes
Image WallpaperClick Switch Image to choose a local file, or paste a URL into the input fieldAutomatically copied to the app data directory themes/wallpapers/; light and dark modes share the same image
Gradient BackgroundTurn on the Gradient Background toggle, choose the number of colors (one / two / three / four), and set a color for each slotWhen enabled, the image below is temporarily hidden; turn the toggle off to restore it

Supported image formats: JPG, PNG, WebP, GIF.

Remote Image Wallpaper

  1. Paste an image URL into the wallpaper input field (e.g. https://example.com/wallpaper.jpg).
  2. You must first enable Allow Remote Resources in Advanced Settings.
  3. The remote image's domain must be on the allowlist.
caution

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

ParameterRangeDefaultDescription
Frosted-Glass Blur0–30 px6The 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.

ParameterRangeDefaultDescription
Overlay Strength0–100 %70Overall opacity. 0 = wallpaper fully visible, 100 = fully covered
Overlay ColorColor pickerNeutral grayChoose a hex color; takes effect instantly in the preview
Auto BrightnessToggleOnWhen 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 GradientOptional toggle + 1–4 color slotsOffWhen enabled, a linear gradient replaces the solid overlay; the strength slider still controls overall opacity
tip

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 TypeFrosted-Glass BlurOverlay Strength
Landscape photo6–1260–75
Gradient / solid color0–450–65
Busy pattern10–2070–85
Dark image4–855–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:

ParameterDefaultDescription
Element Background Tint (toggle)OffWhen off, the theme's default color is used; when on, the color below takes effect
Tint ColorColor pickerAffects all semi-transparent surfaces, including the rail / cards / labels / tabs / context menus
Element GradientOptionalMutually 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:

ParameterDefaultDescription
Independent Control (master toggle)OffWhen off, bubbles follow the element background; the dedicated options below appear only when it's on
User BubbleSub-toggle + color pickerIndependently set the user message bubble color / gradient
Assistant BubbleSub-toggle + color pickerIndependently set the assistant message bubble color / gradient
Bubble Opacity0–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).

tip

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

ParameterRangeDefaultPurpose
Element Opacity0–100 %0Experimental: pushes all semi-transparent UI toward opaque (use when the wallpaper steals the show)
Wallpaper Transparency0–100 %100Surface tint strength coefficient: 0 = surfaces fully transparent (wallpaper at its clearest), 100 = default surface tint
Disable Wallpaper in Compact WindowsToggleOffWhen 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

  1. Find the Custom CSS section in Appearance Settings.
  2. Click to expand the editor, and you'll see a CSS code editor with syntax highlighting.
  3. Write your custom CSS code.
  4. 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:

VariablePurpose
--backgroundPage background color
--foregroundPrimary text color
--surface-0Base surface color
--surface-1First-level surface color (cards, containers)
--surface-2Second-level surface color (input fields, secondary containers)
--surface-3Third-level surface color (popups)
--primaryTheme accent color
--borderBorder color
--muted-foregroundSecondary text color
--destructiveColor for errors/dangerous actions
--successColor for success states

Action Buttons

The following actions are available above the CSS editor:

ButtonFunction
CopyCopy the current CSS to the clipboard
PastePaste CSS from the clipboard
UndoRevert to the last saved state
ClearDelete all custom CSS
Insert Compatibility TemplateInsert a template of commonly used compatibility CSS selectors
caution

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

  1. On the Appearance Settings page, find the Theme Configuration section.
  2. Click the Export button.
  3. 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

  1. Click the Import button.
  2. Select a theme JSON file.
  3. Preview the import effect, then apply after confirming.
tip

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:

SettingDescription
Editor ThemeChoose the color scheme for the code editor
Word WrapWhether to wrap long lines of code automatically
Line NumbersWhether to show line numbers
MinimapWhether to show the minimap on the right
Font SizeThe 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.