Config File Format
Example
[core.option]
protocol = "auto"
order = "chrono"
graph_width = "auto"
graph_style = "rounded"
initial_selection = "latest"
[core.git]
mailmap = false
[core.search]
target = "all"
ignore_case = false
fuzzy = false
[core.user_command]
commands_1 = { name = "git diff", commands = ["git", "--no-pager", "diff", "--color=always", "{{first_parent_hash}}", "{{target_hash}}"]}
tab_width = 4
[core.external]
clipboard = "auto"
[ui.common]
cursor_type = "native"
[ui.list]
columns = ["graph", "marker", "subject", "name", "hash", "date"]
subject_min_width = 20
date_format = "%Y-%m-%d"
date_width = 10
date_local = true
name_width = 20
[ui.detail]
height = 20
date_format = "%Y-%m-%d %H:%M:%S %z"
date_local = true
[ui.user_command]
height = 20
[ui.refs]
width = 26
[graph]
row_image_width = "compact"
[graph.color]
branches = [
"#E06C76",
"#98C379",
"#E5C07B",
"#61AFEF",
"#C678DD",
"#56B6C2",
]
edge = "#00000000"
background = "#00000000"
[color]
fg = "reset"
bg = "reset"
list_selected_fg = "white"
list_selected_bg = "dark-gray"
list_ref_paren_fg = "yellow"
list_ref_branch_fg = "green"
list_ref_remote_branch_fg = "red"
list_ref_tag_fg = "yellow"
list_ref_stash_fg = "magenta"
list_head_fg = "cyan"
list_subject_fg = "reset"
list_name_fg = "cyan"
list_hash_fg = "yellow"
list_date_fg = "magenta"
list_match_fg = "black"
list_match_bg = "yellow"
detail_label_fg = "reset"
detail_name_fg = "reset"
detail_date_fg = "reset"
detail_email_fg = "blue"
detail_hash_fg = "reset"
detail_ref_branch_fg = "green"
detail_ref_remote_branch_fg = "red"
detail_ref_tag_fg = "yellow"
detail_file_change_add_fg = "green"
detail_file_change_modify_fg = "yellow"
detail_file_change_delete_fg = "red"
detail_file_change_move_fg = "magenta"
ref_selected_fg = "white"
ref_selected_bg = "dark-gray"
help_block_title_fg = "green"
help_key_fg = "yellow"
virtual_cursor_fg = "reset"
status_input_fg = "reset"
status_input_transient_fg = "dark-gray"
status_info_fg = "cyan"
status_success_fg = "green"
status_warn_fg = "yellow"
status_error_fg = "red"
divider_fg = "dark-gray"
[keybind]
# See the separate Custom Keybindings section for details.
# ...
Configuration Options
core.option.protocol
The protocol type for rendering images of commit graphs.
- type:
string(enum) - default:
auto - possible values:
autoitermkittykitty-unicode
The value specified in the command line argument takes precedence.
core.option.order
The commit ordering algorithm.
- type:
string(enum) - default:
chrono - possible values:
chronotopo
The value specified in the command line argument takes precedence.
core.option.graph_width
The character width that a graph image unit cell occupies.
- type:
string(enum) - default:
auto - possible values:
autodoublesingle
The value specified in the command line argument takes precedence.
core.option.graph_style
The commit graph image edge style.
- type:
string(enum) - default:
rounded - possible values:
roundedangular
The value specified in the command line argument takes precedence.
core.option.initial_selection
The initial selection of commit when starting the application.
- type:
string(enum) - default:
latest - possible values:
latesthead
The value specified in the command line argument takes precedence.
core.git.mailmap
Whether to resolve author and committer identities through the repository's .mailmap file.
- type:
boolean - default:
false
When enabled, names and emails are displayed as mapped by .mailmap, in the same way as git log and git shortlog. Repositories without a .mailmap file are unaffected.
graph.row_image_width
The width mode for each graph row image.
- type:
string(enum) - default:
compact - possible values:
compact: trim each row image to the minimum required graph width- Reduces the file size for more lightweight operation. If you are using
kitty-unicodeprotocol, it helps you avoid hitting the image transfer size limit.
- Reduces the file size for more lightweight operation. If you are using
fixed: use the same full graph width for every row image- This can be used when you want to set a background color for graphs in environments that cannot correctly handle transparent images, or in environments where rendering does not work well when there are images of various widths.
core.search.target
The field to search when the application starts. The target can be toggled while the commit list is displayed.
- type:
string(enum) - default:
all - possible values:
all: Search refs, commit subjects, author names, and short commit hashessubject: Search commit subjectsauthor: Search author namesref: Search branch, remote branch, and tag nameshash: Search short commit hashes
core.search.ignore_case
Whether to enable ignore case when the application starts. The option can be toggled while the commit list is displayed.
- type:
boolean - default:
false
core.search.fuzzy
Whether to enable fuzzy matching when the application starts. The option can be toggled while the commit list is displayed.
- type:
boolean - default:
false
core.user_command.commands_{n}
The command definition for executing external commands.
Multiple commands can be specified in the format commands_{n}.
For details about user command, see the separate User command section.
- type:
object - fields:
name:string- The name of the user command.type:string(enum) - The type of user command.- default:
inline - possible values:
inline: Display the output of the command in the user command view.silent: Execute the command in the background without opening a view.suspend: Execute the command by suspending the application. This is useful for interactive commands.
- default:
commands:array of strings- The command and its arguments.refresh:boolean- Whether to reload the repository and refresh the display after executing the command. Available forsilentandsuspendcommands.- default:
false
- default:
- examples:
commands_1 = { name = "git diff", commands = ["git", "--no-pager", "diff", "--color=always", "{{first_parent_hash}}", "{{target_hash}}"]}commands_2 = { name = "delete branch", type = "silent", commands = ["git", "branch", "-D", "{{branches}}"], refresh = true }commands_3 = { name = "amend commit", type = "suspend", commands = ["git", "commit", "--amend"], refresh = true }
core.user_command.tab_width
The number of spaces to replace tabs in the user command output.
- type:
u16 - default:
4
core.external.clipboard
The clipboard command to use for copy operations.
- type:
object(enum) - default:
auto - possible values:
auto: Use the default clipboard library{ custom = { commands = ["..."] } }: Use a custom command that receives text via stdincommands:array of strings- The command and its arguments.
- examples:
clipboard = "auto"clipboard = { custom = { commands = ["wl-copy"] } }clipboard = { custom = { commands = ["xclip", "-selection", "clipboard"] } }
ui.common.cursor_type
The type of a cursor to display in the input.
- type:
object(enum) - default:
native - possible values:
native: Use the terminal native cursor.{ virtual = "|" }: Use a virtual cursor with the specified string.- value:
string- The string to display as the virtual cursor.
- value:
ui.list.columns
The order and visibility of columns in the commit list.
- type:
array of strings(enum) - default:
["graph", "marker", "subject", "name", "hash", "date"] - possible values:
graphmarkersubjectnamehashdate
ui.list.subject_min_width
The minimum width of a subject in the commit list.
- type:
u16 - default:
20
ui.list.date_format
The date format of a author date in the commit list.
- type:
string - default:
"%Y-%m-%d"
The format must be specified in strftime format. https://docs.rs/chrono/latest/chrono/format/strftime/index.html
ui.list.date_width
The width of a author date in the commit list.
- type:
u16 - default:
10
ui.list.date_local
Whether to show a author date in the commit list in local timezone.
- type:
boolean - default:
true
ui.list.name_width
The width of a author name in the commit list.
- type:
u16 - default:
20
ui.detail.height
The height of a commit detail area.
- type:
u16 - default:
20
ui.detail.date_format
The date format of a author/committer date in the commit detail.
- type:
string - default:
"%Y-%m-%d %H:%M:%S %z"
The format must be specified in strftime format. https://docs.rs/chrono/latest/chrono/format/strftime/index.html
ui.detail.date_local
Whether to show a author/committer date in the commit list in local timezone.
- type:
boolean - default:
true
ui.user_command.height
The height of a user command area.
- type:
u16 - default:
20
ui.refs.width
The width of a refs list area.
- type:
u16 - default:
26
graph.color.branches
Array of colors used for the commit graph.
- type:
array of strings - default:
"#E06C76""#98C379""#E5C07B""#61AFEF""#C678DD""#56B6C2"
Colors should be specified in the format #RRGGBB or #RRGGBBAA.
graph.color.edge
Color of the edge surrounding the commit circles in the graph.
- type:
string - default:
"#00000000"
Colors should be specified in the format #RRGGBB or #RRGGBBAA.
graph.color.background
Background color of the commit graph.
- type:
string - default:
"#00000000"
Colors should be specified in the format #RRGGBB or #RRGGBBAA.
color
The colors of each element of the application.
Note: Graph colors are specified with [graph.color].
- type:
string - default: see the example above
Colors should be specified in one of the following formats:
- ANSI color name
"red","bright-blue","light-red","reset", ...
- 8-bit color (256-color) index values
"34","128","255", ...
- 24-bit true color hex codes
"#abcdef", ...
keybind
Key bindings for various actions in the application.
See the separate Custom Keybindings section for details.