Browse the user guide

Configuration

Set Izar's appearance, stage binding, and diff settings with .izar.jsonc.

Create a configuration file

Create .izar.jsonc in the directory from which you launch Izar. When you use -C, place it in that directory instead. Launching from the repository root is the easiest way to use one project configuration consistently; Izar does not search parent directories for this file.

This example contains every setting and its default:

{
  "theme": "dark",
  "split_ratio": 0.35,
  "keymap": {
    "stage": "space",
    "commit": "c"
  },
  "diff": {
    "context": 3,
    "highlight": true
  }
}

JSONC allows comments. Omitted settings keep their defaults, including omitted fields inside keymap and diff. Configuration is read on launch; quit and reopen the workspace after editing it. r reloads repository status only.

Settings reference

Setting Accepted value Effect
theme String; built-ins dark, light, high_contrast Native window colors
split_ratio Finite number from 0 through 1 Native sidebar’s share of the split pane; default 0.35
keymap.stage Non-empty string Key binding for toggling the selected file; default space
keymap.commit Non-empty string Commit action binding; default c
diff.context Non-negative integer Context lines around changes in the displayed diff; default 3
diff.highlight true or false Syntax highlighting in the native diff view

Theme, split ratio, and syntax highlighting do not change the printed terminal view. diff.context: 0 is accepted, but the workspace currently uses three context lines for that value. Hunk staging uses three context lines regardless of this display setting.

Unknown keys at any of these levels, invalid types, and out-of-range values are rejected before workspace input begins. Theme names are resolved when the native view opens; an unknown name prevents that view from opening.

Keyboard bindings

To use t for staging while keeping the commit-message prompt:

{
  "keymap": {
    "stage": "t",
    "commit": "c"
  }
}

Use a single character in the terminal workspace, or space for Space. Avoid keys already used by other workspace actions. Only stage and commit can be configured; movement, hunk staging, filtering, reload, discard, help, and quit have fixed bindings.

The commit action accepts a custom binding, but the terminal only opens its message prompt for literal c. A different commit key cannot collect a message in the current TUI. The native window has no commit-message input either, so use the default terminal binding or izar commit -m "Your message".

Custom themes

If the optional Auva gem is installed, theme can also name an Auva JSONC token file:

{
  "theme": "/absolute/path/to/theme.jsonc"
}

Use an absolute path to avoid ambiguity: a relative theme path is resolved from the process’s working directory, including when -C selects another repository. Without Auva, use the built-in dark, light, or high_contrast themes.