Skip to content

Themes

Raffi supports dark and light themes with full color customization.

Raffi includes built-in dark and light theme presets:

  • dark — Sleek Obsidian dark palette (default)
  • light — Rose Pine Dawn light palette
  • catppuccin / catppuccin-mocha — Catppuccin Mocha dark palette
  • catppuccin-latte — Catppuccin Latte light palette
  • tokyo-night / tokyonight — Tokyo Night dark palette
  • nord — Nord dark palette
  • gruvbox — Gruvbox dark palette
  • dracula — Dracula dark palette
  • rose-pine / rosepine — Rosé Pine dark palette
  • kanagawa — Kanagawa Wave dark palette
Terminal window
raffi -t dark
general:
theme: dark # or "light", "catppuccin", "tokyo-night", "nord", "gruvbox", "dracula", "rose-pine", "kanagawa"
general:
theme: dark

Sleek Obsidian dark palette with crisp slate text and indigo accents

Each theme also has its own 16-colour terminal palette, taken from the theme’s terminal port. Raffi uses it for basic ANSI colours in previews and Script Filter titles, so \e[31m is the theme’s red rather than a generic one. 256-colour and 24-bit colours are drawn as given. A palette colour that would be unreadable on the preview background, such as black on a dark theme, is replaced: a bright colour by its normal shade, otherwise by the muted text colour.

Preview commands and Script Filter previews receive the theme in the environment, so they can match their own colours to it:

VariableValue
RAFFI_THEMETheme name, such as catppuccin-mocha or dark
RAFFI_THEME_MODEdark or light
RAFFI_THEME_FG, RAFFI_THEME_MUTED, RAFFI_THEME_ACCENT, RAFFI_THEME_BGMain text, muted text, accent and background colours as #rrggbb, after any theme_colors overrides

The bundled file previewer uses these to pick a matching bat and Markdown theme.

Individual theme colors can be customized under theme_colors. Only the colors you specify are overridden; the rest come from the base theme.

bg_base string

Main background color

bg_input string

Search input background color

accent string

Primary accent color (highlights, active items)

accent_hover string

Accent color on hover

text_main string

Primary text color

text_muted string

Secondary/muted text color

selection_bg string

Selected item background

border string

Border and separator colors

Colors accept hex color strings in these formats:

  • #RGB - Short form (e.g., #f0f)
  • #RRGGBB - Standard form (e.g., #ff00ff)
  • #RRGGBBAA - With alpha channel (e.g., #ff00ff80)
general:
theme: dark
theme_colors:
bg_base: "#1e1e2e"
bg_input: "#313244"
accent: "#cba6f7"
accent_hover: "#89b4fa"
text_main: "#cdd6f4"
text_muted: "#6c7086"
selection_bg: "#45475a"
border: "#585b70"
general:
theme: dark
theme_colors:
bg_base: "#2e3440"
bg_input: "#3b4252"
accent: "#88c0d0"
accent_hover: "#81a1c1"
text_main: "#eceff4"
text_muted: "#d8dee9"
selection_bg: "#434c5e"
border: "#4c566a"
general:
theme: dark
theme_colors:
bg_base: "#282828"
bg_input: "#3c3836"
accent: "#d79921"
accent_hover: "#fabd2f"
text_main: "#ebdbb2"
text_muted: "#a89984"
selection_bg: "#504945"
border: "#665c54"
general:
theme: light
theme_colors:
bg_base: "#fdf6e3"
bg_input: "#eee8d5"
accent: "#268bd2"
accent_hover: "#2aa198"
text_main: "#657b83"
text_muted: "#93a1a1"
selection_bg: "#eee8d5"
border: "#93a1a1"
general:
theme: dark
theme_colors:
bg_base: "#1a1b26"
bg_input: "#24283b"
accent: "#7aa2f7"
accent_hover: "#bb9af7"
text_main: "#c0caf5"
text_muted: "#565f89"
selection_bg: "#292e42"
border: "#414868"

You can override just a few colors while keeping the rest from the base theme:

general:
theme: dark
theme_colors:
accent: "#ff6b9d" # Custom pink accent
# All other colors use dark theme defaults

The window background is see-through by default, like Vicinae. opacity scales the background colours (window, search box, selection and preview pane) from 0.0, fully see-through, to 1.0, the theme as designed. Text, icons, accents and borders stay opaque. The default is 0.95. --opacity overrides it for one run.

general:
opacity: 0.75 # 1 for a solid window
blur: true # default

Colours set with #RRGGBBAA in theme_colors keep their alpha and are scaled by opacity too.

Transparency needs the GPU renderer: the software renderer draws an opaque window on Wayland. The default renderer: auto uses the GPU when opacity is below 1, and the faster software renderer at opacity: 1. With renderer: cpu, opacity is ignored.

Blurring what shows through is up to the compositor:

  • KDE Plasma (KWin) blurs the window when blur is true, which it is by default.

  • Hyprland blurs translucent windows when decoration:blur:enabled is on, which it is by default.

  • niri 26.04 and later blur when a window rule asks for it:

    window-rule {
    match app-id="^com\\.chmouel\\.raffi$"
    background-effect { blur true; }
    }
  • SwayFX blurs with for_window [app_id="com.chmouel.raffi"] blur enable. Plain Sway has no blur.

The app ID is com.chmouel.raffi unless you change it with --app-name. Without a compositor (bare X11), or when no GPU is usable, the see-through parts can render black: set opacity: 1 there.

Combine theme customization with font settings:

general:
theme: dark
theme_colors:
accent: "#cba6f7"
font_family: "Inter"
font_size: 20
window_width: 900
window_height: 500

font_family string

Font family name (e.g., “Inter”, “Fira Sans”). System default sans-serif when omitted.

font_size number (default: 20)

Base font size in pixels. Other UI sizes scale proportionally:

  • Input text: 1.2× base
  • Subtitles: 0.7× base
  • Hints: 0.6× base

window_width number (default: 800)

Window width in pixels

window_height number (default: 600)

Window height in pixels

padding number

Outer window padding in pixels. Scales with font_size if not set.

general:
theme: dark
theme_colors:
bg_base: "#1e1e2e"
bg_input: "#313244"
accent: "#cba6f7"
accent_hover: "#89b4fa"
text_main: "#cdd6f4"
text_muted: "#6c7086"
selection_bg: "#45475a"
border: "#585b70"
font_family: "Inter"
font_size: 20
window_width: 900
window_height: 500
Default Dark Theme

Dracula-inspired palette with:

  • Deep purple background
  • High contrast text
  • Purple/pink accents
  • Excellent readability
Default Light Theme

Rose Pine Dawn palette with:

  • Soft, warm background
  • Comfortable contrast
  • Muted accents
  • Eye-friendly for bright environments
Custom Themes

Create your own by:

  1. Starting with a base theme (dark or light)
  2. Overriding specific colors
  3. Testing with raffi -t [theme]
  4. Adjusting until satisfied
Default dark theme with launcher and right-hand preview pane Built-in Rose Pine Dawn light theme Catppuccin Mocha custom color palette Nord custom color palette Gruvbox Dark custom color palette Solarized Light custom color palette Tokyo Night custom color palette

Generate custom palettes using these tools:

Colors not applying
  1. Make sure ui_type is not set to fuzzel
  2. Check color format: #RRGGBB or #RGB
  3. Verify YAML syntax (proper indentation)
  4. Restart Raffi after config changes
Font not changing
  1. Make sure font is installed on your system
  2. Use exact font name (case-sensitive)
  3. Try fc-list to see available fonts
  4. Set font_family: "Font Name" in quotes
Poor contrast

Adjust these color pairs for better readability:

  • text_main vs bg_base
  • text_main vs selection_bg
  • accent vs bg_base