Themes
Raffi supports dark and light themes with full color customization.
Built-in Themes
Section titled “Built-in Themes”Raffi includes built-in dark and light theme presets:
dark— Sleek Obsidian dark palette (default)light— Rose Pine Dawn light palettecatppuccin/catppuccin-mocha— Catppuccin Mocha dark palettecatppuccin-latte— Catppuccin Latte light palettetokyo-night/tokyonight— Tokyo Night dark palettenord— Nord dark palettegruvbox— Gruvbox dark palettedracula— Dracula dark paletterose-pine/rosepine— Rosé Pine dark palettekanagawa— Kanagawa Wave dark palette
Selecting a Theme
Section titled “Selecting a Theme”Command Line
Section titled “Command Line”raffi -t darkraffi -t lightraffi -t catppuccinConfiguration File
Section titled “Configuration File”general: theme: dark # or "light", "catppuccin", "tokyo-night", "nord", "gruvbox", "dracula", "rose-pine", "kanagawa"general: theme: darkSleek Obsidian dark palette with crisp slate text and indigo accents
general: theme: light
Terminal Colours
Section titled “Terminal Colours”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:
| Variable | Value |
|---|---|
RAFFI_THEME | Theme name, such as catppuccin-mocha or dark |
RAFFI_THEME_MODE | dark or light |
RAFFI_THEME_FG, RAFFI_THEME_MUTED, RAFFI_THEME_ACCENT, RAFFI_THEME_BG | Main 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.
Custom Colors
Section titled “Custom Colors”Individual theme colors can be customized under theme_colors. Only the colors you specify are overridden; the rest come from the base theme.
Available Color Keys
Section titled “Available Color Keys”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
Color Format
Section titled “Color Format”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)
Custom Color Examples
Section titled “Custom Color Examples”Catppuccin Mocha
Section titled “Catppuccin Mocha”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"Gruvbox Dark
Section titled “Gruvbox Dark”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"Solarized Light
Section titled “Solarized Light”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"Tokyo Night
Section titled “Tokyo Night”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"Partial Color Override
Section titled “Partial Color Override”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 defaultsTransparency and Blur
Section titled “Transparency and Blur”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 # defaultColours 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
bluristrue, which it is by default. -
Hyprland blurs translucent windows when
decoration:blur:enabledis 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.
Font Customization
Section titled “Font Customization”Combine theme customization with font settings:
general: theme: dark theme_colors: accent: "#cba6f7" font_family: "Inter" font_size: 20 window_width: 900 window_height: 500Font Settings
Section titled “Font Settings”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.
Complete Theme Configuration
Section titled “Complete Theme Configuration”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: 500general: theme: light theme_colors: accent: "#0066cc" accent_hover: "#0052a3" font_family: "Fira Sans" font_size: 18 window_width: 800 window_height: 600Theme Previews
Section titled “Theme Previews”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:
- Starting with a base theme (dark or light)
- Overriding specific colors
- Testing with
raffi -t [theme] - Adjusting until satisfied
Theme Gallery
Section titled “Theme Gallery”
Color Palette Generators
Section titled “Color Palette Generators”Generate custom palettes using these tools:
Troubleshooting
Section titled “Troubleshooting”Colors not applying
- Make sure
ui_typeis not set tofuzzel - Check color format:
#RRGGBBor#RGB - Verify YAML syntax (proper indentation)
- Restart Raffi after config changes
Font not changing
- Make sure font is installed on your system
- Use exact font name (case-sensitive)
- Try
fc-listto see available fonts - Set
font_family: "Font Name"in quotes
Poor contrast
Adjust these color pairs for better readability:
text_mainvsbg_basetext_mainvsselection_bgaccentvsbg_base