config.toml
jjui reads configuration from a TOML file at startup.
Global config:
- Linux / macOS:
~/.config/jjui/config.toml - Windows:
%AppData%/jjui/config.toml
Open the file directly in your editor with:
jjui --configRepo-specific config:
You can create a .jjui/config.toml file in the root of any jj repo and it will override anything that was set by your global config. This allows you to define settings, actions, and bindings that apply to all repos, but then granularly override particular settings per-repo.
Custom config:
You can also set a custom directory with the JJUI_CONFIG_DIR environment variable. jjui will then look for your config.toml file inside that directory. If you use this, it will replace the global and repo configs, rather than just override them.
Customizing jj inside jjui
Section titled “Customizing jj inside jjui”jjui sets the JJUI environment variable before invoking jj. You can use jj’s conditional config syntax to apply different jj settings only when commands are run from inside jjui.
This is useful when you want jj to behave one way in your shell and another way in jjui.
Enable a diff formatter only in jjui
Section titled “Enable a diff formatter only in jjui”[[--scope]]--when.environments = ["JJUI"][--scope.ui]diff-formatter = "delta"Use a different pager in jjui
Section titled “Use a different pager in jjui”[[--scope]]--when.environments = ["JJUI"][--scope.ui]pager = ["less", "-FRX"]Disable pagination in jjui
Section titled “Disable pagination in jjui”[[--scope]]--when.environments = ["JJUI"][--scope.ui]paginate = "never"Add these snippets to your jj configuration, not to jjui’s config.toml.
Revisions
Section titled “Revisions”Override the default log template or revset:
[revisions]template = "builtin_log_compact"revset = ""log_batching = truelog_batch_size = 50log_batching: load revisions incrementally in batches (default:true)log_batch_size: number of revisions per batch when batching is enabled (default:50)
Preview
Section titled “Preview”[preview]position = "auto" # auto | right | bottomshow_at_start = falsewidth_percentage = 50.0width_increment_percentage = 5.0Op Log
Section titled “Op Log”[oplog]limit = 200Disable jjui’s SSH askpass helper if you manage SSH credentials yourself:
[ssh]hijack_askpass = falseExec suggestions
Section titled “Exec suggestions”Controls autocomplete suggestions in the : and $ command prompts:
[suggest.exec]mode = "fuzzy" # off | regex | fuzzyAuto-refresh
Section titled “Auto-refresh”[ui]auto_refresh_interval = 0Seconds between automatic revision list refreshes. Default is 0 (disabled). Override at startup with --period.
Window title
Section titled “Window title”[ui]set_window_title = trueWhether jjui sets the terminal window title to include the repo path. Default is true. Set to false to leave the title managed by your shell or terminal.
Mouse support
Section titled “Mouse support”[ui]mouse_support = trueWhether jjui enables mouse interactions such as clicking list items, scrolling scrollable views, and dragging pane separators. Default is true. Set to false to disable mouse handling completely.
Flash messages
Section titled “Flash messages”[ui]flash_message_display_seconds = 4How long success flash messages stay visible in seconds. Default is 4. Set to 0 to keep them until manually dismissed with esc.
Colors and themes
Section titled “Colors and themes”Quick inline overrides go in [ui.colors]:
[ui.colors]"selected" = { bg = "#303446" }For a full theme file, see Themes.
Bindings profile
Section titled “Bindings profile”Load an alternative bindings file as the base instead of the built-in defaults:
bindings_profile = "vim_bindings.toml"Your own [[bindings]] entries are applied on top of the profile. Use :builtin to explicitly reset to embedded defaults.
For defining actions and bindings, see Actions and Bindings.