Config File Format
All configuration settings are optional. Specify only the values you want to change, for example:
[color]
accent = "magenta"
The sections below list the settings and their defaults. Use sauva --print-default-config to print the full configuration, including every default keybinding.
The configuration structure is also described by config.schema.json. Sauva validates the configuration at startup, including terminal cell widths and keybinding conflicts.
color
These settings control the TUI's colors:
| Setting | Default | Use |
|---|---|---|
fg | "reset" | Main text |
bg | "reset" | Main background |
muted | "darkgray" | Secondary text and labels |
accent | "cyan" | Accented text and grapheme markers |
heading | "blue" | Section headings |
border | "darkgray" | Borders and scrollbars |
match | "yellow" | Search matches |
key | "yellow" | Key labels in help and the footer |
link | "blue" | Link text |
selection.fg | "black" | Selected item text |
selection.bg | "cyan" | Selected item background |
difference.fg | "black" | Text in changed normalization spans |
difference.bg | "yellow" | Background of changed normalization spans |
status.info | "green" | Informational status messages |
status.warning | "yellow" | Warning status messages |
Changed normalization spans are also underlined. Their colors are configured separately from the selection colors.
UI color values are strings in one of these formats:
- ANSI names:
reset,black,red,green,yellow,blue,magenta,cyan,gray,darkgray,light-red,light-green,light-yellow,light-blue,light-magenta,light-cyan, orwhite. - RGB hexadecimal:
"#RRGGBB". - Indexed color: a quoted number from
"0"to"255".
reset uses the terminal's default color. UI colors do not accept an alpha channel.
For example:
[color]
heading = "#89b4fa"
muted = "245"
[color.selection]
fg = "black"
bg = "light-blue"
glyph_preview
| Setting | Type | Default |
|---|---|---|
font_families | Array of font family names | [] |
emoji_font_families | Array of font family names | [] |
fg | RGB or RGBA color string | "#f5f7fa" |
bg | RGB or RGBA color string | "#00000000" |
Empty or whitespace-only family names are rejected. Image colors accept #RRGGBB or #RRGGBBAA, including an alpha channel.
See Glyph Preview for examples and the complete font selection order.
ui
input_cursor
The cursor shown in the search input.
- Default:
"native", using the terminal's native cursor. - Use
{ text = "..." }for a text cursor. Its text must occupy exactly one terminal cell, without control characters.
[ui]
input_cursor = { text = "|" }
bookmark_date_format
The strftime format for bookmark registration times, shown in the selected entry's details. Times use the local time zone.
- Default:
"%Y-%m-%d %H:%M %Z", such as2026-10-16 14:32 JST. - The format must produce nonempty text without control characters. Invalid formats are rejected at startup.
[ui]
bookmark_date_format = "%Y-%m-%d %H:%M:%S %:z"
See Bookmarks for the list controls and storage location.
keybindings
Use [keybindings.<context>] sections to customize controls. See Custom Keybindings for syntax, examples, and validation rules.