Skip to content

Config file

The config file lives at $XDG_CONFIG_HOME/gitoui/config.toml (default ~/.config/gitoui/config.toml). Override with GITOUI_CONFIG_FILE=....

Everything below is optional, gitoui ships with sensible defaults and only reads the keys you specify. Unknown keys are rejected with a styled diagnostic at boot.

  • Directory~/.config/gitoui/
    • config.toml the file documented on this page
    • Directorythemes/
    • github_token.toml OAuth (mode 0600, user-only)
SectionPurpose
[core.option]UI defaults (theme, graph style, initial selection…).
[core.search]Persistent search toggles (fuzzy / case / regex).
[core.user_command]Custom user-defined shell commands.
[core.external]External hooks (clipboard, browser opener).
[ui.common]Per-view mode preferences.
[graph.color]Graph palette overrides (independent of the UI theme).
[color]Theme color tokens, usually populated via a named theme.
[keybind]Keybindings (global section + scoped sub-tables).
KeyType / defaultEffect
themestring / "Tokyo Night"Built-in theme name or custom theme stem (file at ~/.config/gitoui/themes/<name>.toml). Empty string disables theming.
syntax_themestring / "base16-ocean.dark"Syntect theme for diff syntax highlighting. Overridden when theme is a named theme.
graph_rendererauto / ascii / kitty / iterm / kitty-unicode / sixel (default auto)Image protocol for the commit graph. auto detects at startup. ascii renders with Unicode box-drawing characters (no image protocol).
graph_stylerounded / angular / smooth (default smooth)Branch corner shape.
graph_widthauto / single / double (default auto)Graph image cell width.
initial_selectionlatest / head / top (default latest)Cursor position when opening.
github_avatarsbool / trueRender GitHub avatars next to commits, comments, reviews.
date_time_formatenum (default ddmmyyyy_hhmm)One of: ddmmyyyy_hhmm, ddmmyyyy, mmddyyyy_hhmm, yyyymmdd_hhmm, iso, yyyymmdd_hhmm_dash.
date_time_localbool / trueConvert commit times to your local zone.
huge_repo_thresholdusize / 50_000Commit-count cap above which gitoui auto-disables the graph column at startup. On very large repos (kernel, rust-lang/rust, chromium, …) the inline-image pipeline can struggle to keep up: lag, freezes, render glitches. When the live git rev-list --count HEAD exceeds this value, [ui.list] graph_enabled is forced to false at launch and the Configuration view’s Graph Enabled row shows a red warning in its Details panel. The user can still toggle the graph back on from that view. Set to 0 to disable the auto-disable entirely.

Persistent toggles for the list-view search bar.

KeyType / defaultEffect
fuzzybool / falseDefault to fuzzy matching.
ignore_casebool / falseDefault to case-insensitive matching.
regexbool / falseDefault to regex matching.

These mirror the in-app toggles (s, z, x in search mode). The view writes back to disk when the user flips them.

KeyType / defaultEffect
mouse_enabledbool / trueMaster mouse switch.
diff_modeenhanced / unified (default enhanced)Side-by-side vs unified diff view.
conflict_viewtwo-pane / inline (default two-pane)Conflict editor layout.
rebase_viewinline / compact / split (default inline)Interactive-rebase plan layout.
KeyType / defaultEffect
graph_enabledbool / trueRender the inline commit-graph image column. Set to false to skip all SVG/PNG generation and terminal-image uploads, for near-instant scrolling on huge repos (rust-lang/rust, linux kernel).

When the native graph is wider than ~40% of the panel (heavy multi-branch repos), the column is capped to that 40% and the visible lane window slides with / from the commit list (Kitty terminals only — uses Kitty’s source-rect crop).

KeyType / defaultEffect
widthu16 / 42Width (in cells) of the refs side-panel that opens with Tab. Minimum 1. Bump if you have long branch names like origin/dependabot/github_actions/... and want them visible without scrolling.

Override the graph palette without changing the UI theme:

[graph.color]
background = "#1a1b26" # graph cell background
edge = "#3b4261" # connector lines + commit-circle outline
branches = [
"#f7768e", "#7aa2f7", "#9ece6a", "#e0af68",
"#bb9af7", "#7dcfff", "#ff9e64", "#73daca",
"#ad8ee6", "#2ac3de", "#ff007c", "#41a6b5",
]

If a named theme defines its own graph_branches, that wins over a generic [graph.color.branches] setting, see Themes.

Two-layer keybinding system, see the dedicated Keybindings page for the full reference.

[keybind]
# Global UserEvents, same shape as upstream serie.
quit = ["q"]
navigate_up = ["k", "up"]
# Per-view scopes nest under `[keybind.scope.<path>]`.
[keybind.scope.pr]
approve = ["ctrl-a"]

gitoui validates the entire config at boot. Failures render a styled --help-shaped diagnostic block before the no-repo splash, catching:

  • TOML syntax errors → file + line + caret pointer to the bad token.
  • Schema mismatches (wrong type, unknown key) → which key and what was expected.
  • Theme problems, unknown name, missing file under themes/, file with invalid TOML, or an unknown base = "..." reference.
  • Keybind issues, duplicate keys within a scope, unknown event name, keys with more than one modifier prefix.

Config error diagnostic, gitoui refuses to start, styled error pane with caret pointer + line + expected schema