"description":"If true, capture mouse events.\nWhen mouse events are captured, it's a little harder to select text: e.g. requiring you to hold the option key when on macOS.",
"default":true
},
"skipDiscardChangeWarning":{
"type":"boolean",
"description":"If true, do not show a warning when discarding changes in the staging view."
},
"skipStashWarning":{
"type":"boolean",
"description":"If true, do not show warning when applying/popping the stash"
},
"skipNoStagedFilesWarning":{
"type":"boolean",
"description":"If true, do not show a warning when attempting to commit without any staged files; instead stage all unstaged files."
},
"skipRewordInEditorWarning":{
"type":"boolean",
"description":"If true, do not show a warning when rewording a commit via an external editor"
},
"sidePanelWidth":{
"type":"number",
"maximum":1,
"minimum":0,
"description":"Fraction of the total screen width to use for the left side section. You may want to pick a small number (e.g. 0.2) if you're using a narrow screen, so that you can see more of the main section.\nNumber from 0 to 1.0.",
"default":0.3333
},
"expandFocusedSidePanel":{
"type":"boolean",
"description":"If true, increase the height of the focused side window; creating an accordion effect."
},
"mainPanelSplitMode":{
"type":"string",
"enum":[
"horizontal",
"flexible",
"vertical"
],
"description":"Sometimes the main window is split in two (e.g. when the selected file has both staged and unstaged changes). This setting controls how the two sections are split.\nOptions are:\n- 'horizontal': split the window horizontally\n- 'vertical': split the window vertically\n- 'flexible': (default) split the window horizontally if the window is wide enough, otherwise split vertically",
"description":"How the window is split when in half screen mode (i.e. after hitting '+' once).\nPossible values:\n- 'left': split the window horizontally (side panel on the left, main view on the right)\n- 'top': split the window vertically (side panel on top, main view below)",
"description":"Format used when displaying time e.g. commit time.\nUses Go's time format syntax: https://pkg.go.dev/time#Time.Format",
"default":"02 Jan 06"
},
"shortTimeFormat":{
"type":"string",
"description":"Format used when displaying time if the time is less than 24 hours ago.\nUses Go's time format syntax: https://pkg.go.dev/time#Time.Format",
"default":"3:04PM"
},
"theme":{
"properties":{
"activeBorderColor":{
"items":{
"type":"string"
},
"type":"array",
"minItems":1,
"uniqueItems":true,
"description":"Border color of focused window",
"default":[
"green",
"bold"
]
},
"inactiveBorderColor":{
"items":{
"type":"string"
},
"type":"array",
"minItems":1,
"uniqueItems":true,
"description":"Border color of non-focused windows",
"default":[
"default"
]
},
"searchingActiveBorderColor":{
"items":{
"type":"string"
},
"type":"array",
"minItems":1,
"uniqueItems":true,
"description":"Border color of focused window when searching in that window",
"default":[
"cyan",
"bold"
]
},
"optionsTextColor":{
"items":{
"type":"string"
},
"type":"array",
"minItems":1,
"uniqueItems":true,
"description":"Color of keybindings help text in the bottom line",
"default":[
"blue"
]
},
"selectedLineBgColor":{
"items":{
"type":"string"
},
"type":"array",
"minItems":1,
"uniqueItems":true,
"description":"Background color of selected line.\nSee https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md#highlighting-the-selected-line",
"default":[
"blue"
]
},
"cherryPickedCommitFgColor":{
"items":{
"type":"string"
},
"type":"array",
"minItems":1,
"uniqueItems":true,
"description":"Foreground color of copied commit",
"default":[
"blue"
]
},
"cherryPickedCommitBgColor":{
"items":{
"type":"string"
},
"type":"array",
"minItems":1,
"uniqueItems":true,
"description":"Background color of copied commit",
"default":[
"cyan"
]
},
"markedBaseCommitFgColor":{
"items":{
"type":"string"
},
"type":"array",
"description":"Foreground color of marked base commit (for rebase)",
"default":[
"blue"
]
},
"markedBaseCommitBgColor":{
"items":{
"type":"string"
},
"type":"array",
"description":"Background color of marked base commit (for rebase)",
"default":[
"yellow"
]
},
"unstagedChangesColor":{
"items":{
"type":"string"
},
"type":"array",
"minItems":1,
"uniqueItems":true,
"description":"Color for file with unstaged changes",
"default":[
"red"
]
},
"defaultFgColor":{
"items":{
"type":"string"
},
"type":"array",
"minItems":1,
"uniqueItems":true,
"description":"Default text color",
"default":[
"default"
]
}
},
"additionalProperties":false,
"type":"object",
"description":"Config relating to colors and styles.\nSee https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md#color-attributes"
},
"commitLength":{
"properties":{
"show":{
"type":"boolean",
"description":"If true, show an indicator of commit message length",
"default":true
}
},
"additionalProperties":false,
"type":"object",
"description":"Config relating to the commit length indicator"
},
"showListFooter":{
"type":"boolean",
"description":"If true, show the '5 of 20' footer at the bottom of list views",
"default":true
},
"showFileTree":{
"type":"boolean",
"description":"If true, display the files in the file views as a tree. If false, display the files as a flat list.\nThis can be toggled from within Lazygit with the '~' key, but that will not change the default.",
"default":true
},
"showRandomTip":{
"type":"boolean",
"description":"If true, show a random tip in the command log when Lazygit starts",
"default":true
},
"showCommandLog":{
"type":"boolean",
"description":"If true, show the command log",
"default":true
},
"showBottomLine":{
"type":"boolean",
"description":"If true, show the bottom line that contains keybinding info and useful buttons. If false, this line will be hidden except to display a loader for an in-progress action.",
"default":true
},
"showPanelJumps":{
"type":"boolean",
"description":"If true, show jump-to-window keybindings in window titles.",
"default":true
},
"showIcons":{
"type":"boolean",
"description":"Deprecated: use nerdFontsVersion instead"
},
"nerdFontsVersion":{
"type":"string",
"enum":[
"2",
"3",
""
],
"description":"Nerd fonts version to use.\nOne of: '2' | '3' | empty string (default)\nIf empty, do not show icons."
"description":"If true, show commit hashes alongside branch names in the branches view."
},
"commandLogSize":{
"type":"integer",
"minimum":0,
"description":"Height of the command log view",
"default":8
},
"splitDiff":{
"type":"string",
"enum":[
"auto",
"always"
],
"description":"Whether to split the main window when viewing file changes.\nOne of: 'auto' | 'always'\nIf 'auto', only split the main window when a file has both staged and unstaged changes",
"default":"auto"
},
"windowSize":{
"type":"string",
"enum":[
"normal",
"half",
"full"
],
"description":"Default size for focused window. Window size can be changed from within Lazygit with '+' and '_' (but this won't change the default).\nOne of: 'normal' (default) | 'half' | 'full'"
"description":"If true, Lazygit will use whatever pager is specified in `$GIT_PAGER`, `$PAGER`, or your *git config*. If the pager ends with something like ` | less` we will strip that part out, because less doesn't play nice with our rendering approach. If the custom pager uses less under the hood, that will also break rendering (hence the `--paging=never` flag for the `delta` pager)."
"description":"If true, pass '--signoff' flag when committing"
}
},
"additionalProperties":false,
"type":"object",
"description":"Config relating to committing"
},
"merging":{
"properties":{
"manualCommit":{
"type":"boolean",
"description":"If true, run merges in a subprocess so that if a commit message is required, Lazygit will not hang\nOnly applicable to unix users."
},
"args":{
"type":"string",
"description":"Extra args passed to `git merge`, e.g. --no-ff",
"examples":[
"--no-ff"
]
}
},
"additionalProperties":false,
"type":"object",
"description":"Config relating to merging"
},
"mainBranches":{
"items":{
"type":"string"
},
"type":"array",
"uniqueItems":true,
"description":"list of branches that are considered 'main' branches, used when displaying commits",
"default":[
"master",
"main"
]
},
"skipHookPrefix":{
"type":"string",
"description":"Prefix to use when skipping hooks. E.g. if set to 'WIP', then pre-commit hooks will be skipped when the commit message starts with 'WIP'",
"default":"WIP"
},
"autoFetch":{
"type":"boolean",
"description":"If true, periodically fetch from remote",
"default":true
},
"autoRefresh":{
"type":"boolean",
"description":"If true, periodically refresh files and submodules",
"default":true
},
"fetchAll":{
"type":"boolean",
"description":"If true, pass the --all arg to git fetch",
"default":true
},
"branchLogCmd":{
"type":"string",
"description":"Command used when displaying the current branch git log in the main window",
"description":"If true, parse emoji strings in commit messages e.g. render :rocket: as 🚀\n(This should really be under 'gui', not 'git')"
},
"log":{
"properties":{
"order":{
"type":"string",
"enum":[
"date-order",
"author-date-order",
"topo-order",
"default"
],
"description":"One of: 'date-order' | 'author-date-order' | 'topo-order | default'\n'topo-order' makes it easier to read the git log graph, but commits may not\nappear chronologically. See https://git-scm.com/docs/",
"default":"topo-order"
},
"showGraph":{
"type":"string",
"enum":[
"always",
"never",
"when-maximised"
],
"description":"This determines whether the git graph is rendered in the commits panel\nOne of 'always' | 'never' | 'when-maximised'",
"default":"when-maximised"
},
"showWholeGraph":{
"type":"boolean",
"description":"displays the whole git graph by default in the commits view (equivalent to passing the `--all` argument to `git log`)"
}
},
"additionalProperties":false,
"type":"object",
"description":"Config for showing the log in the commits view"
"description":"Command for editing a file. Should contain \"{{filename}}\"."
},
"editAtLine":{
"type":"string",
"description":"Command for editing a file at a given line number. Should contain\n\"{{filename}}\", and may optionally contain \"{{line}}\"."
},
"editAtLineAndWait":{
"type":"string",
"description":"Same as EditAtLine, except that the command needs to wait until the\nwindow is closed."
},
"editInTerminal":{
"type":"boolean",
"description":"Whether lazygit suspends until an edit process returns\nPointer to bool so that we can distinguish unset (nil) from false.\nWe're naming this `editInTerminal` for backwards compatibility"
},
"openDirInEditor":{
"type":"string",
"description":"For opening a directory in an editor"
},
"editPreset":{
"type":"string",
"description":"A built-in preset that sets all of the above settings. Supported presets\nare defined in the getPreset function in editor_presets.go.",
"examples":[
"vim",
"nvim",
"emacs",
"nano",
"vscode",
"sublime",
"kakoune",
"helix",
"xcode"
]
},
"open":{
"type":"string",
"description":"Command for opening a file, as if the file is double-clicked. Should\ncontain \"{{filename}}\", but doesn't support \"{{line}}\"."
},
"openLink":{
"type":"string",
"description":"Command for opening a link. Should contain \"{{link}}\"."
},
"editCommand":{
"type":"string",
"description":"EditCommand is the command for editing a file.\nDeprecated: use Edit instead. Note that semantics are different:\nEditCommand is just the command itself, whereas Edit contains a\n\"{{filename}}\" variable."
},
"editCommandTemplate":{
"type":"string",
"description":"EditCommandTemplate is the command template for editing a file\nDeprecated: use EditAtLine instead."
},
"openCommand":{
"type":"string",
"description":"OpenCommand is the command for opening a file\nDeprecated: use Open instead."
},
"openLinkCommand":{
"type":"string",
"description":"OpenLinkCommand is the command for opening a link\nDeprecated: use OpenLink instead."
},
"copyToClipboardCmd":{
"type":"string",
"description":"CopyToClipboardCmd is the command for copying to clipboard.\nSee https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md#custom-command-for-copying-to-clipboard"
}
},
"additionalProperties":false,
"type":"object",
"description":"Config relating to things outside of Lazygit like how files are opened, copying to clipboard, etc"
},
"disableStartupPopups":{
"type":"boolean",
"description":"If true, don't display introductory popups upon opening Lazygit.\nLazygit sets this to true upon first runninng the program so that you don't see introductory popups every time you open the program."
},
"customCommands":{
"items":{
"properties":{
"key":{
"type":"string",
"description":"The key to trigger the command. Use a single letter or one of the values from https://github.com/jesseduffield/lazygit/blob/master/docs/keybindings/Custom_Keybindings.md"
},
"context":{
"type":"string",
"enum":[
"status",
"files",
"worktrees",
"localBranches",
"remotes",
"remoteBranches",
"tags",
"commits",
"reflogCommits",
"subCommits",
"commitFiles",
"stash",
"global"
],
"description":"The context in which to listen for the key"
},
"command":{
"type":"string",
"description":"The command to run (using Go template syntax for placeholder values)",
"description":"Used to reference the entered value from within the custom command. E.g. a prompt with `key: 'Branch'` can be referred to as `{{.Form.Branch}}` in the command"
},
"title":{
"type":"string",
"description":"The title to display in the popup panel"
},
"initialValue":{
"type":"string",
"description":"The initial value to appear in the text box.\nOnly for input prompts."
},
"suggestions":{
"properties":{
"preset":{
"type":"string",
"enum":[
"authors",
"branches",
"files",
"refs",
"remotes",
"remoteBranches",
"tags"
],
"description":"Uses built-in logic to obtain the suggestions. One of 'authors' | 'branches' | 'files' | 'refs' | 'remotes' | 'remoteBranches' | 'tags'"
},
"command":{
"type":"string",
"description":"Command to run such that each line in the output becomes a suggestion. Mutually exclusive with 'preset' field.",
"description":"How to format matched groups from the filter to construct a menu item's value.\nOnly for menuFromCommand prompts.",
"examples":[
"{{ .branch }}"
]
},
"labelFormat":{
"type":"string",
"description":"Like valueFormat but for the labels. If `labelFormat` is not specified, `valueFormat` is shown instead.\nOnly for menuFromCommand prompts.",
"examples":[
"{{ .branch | green }}"
]
}
},
"additionalProperties":false,
"type":"object"
},
"type":"array",
"description":"A list of prompts that will request user input before running the final command"
},
"loadingText":{
"type":"string",
"description":"Text to display while waiting for command to finish",
"examples":[
"Loading..."
]
},
"description":{
"type":"string",
"description":"Label for the custom command when displayed in the keybindings menu"
},
"stream":{
"type":"boolean",
"description":"If true, stream the command's output to the Command Log panel"
},
"showOutput":{
"type":"boolean",
"description":"If true, show the command's output in a popup within Lazygit"
},
"after":{
"properties":{
"checkForConflicts":{
"type":"boolean"
}
},
"additionalProperties":false,
"type":"object",
"description":"Actions to take after the command has completed"
}
},
"additionalProperties":false,
"type":"object"
},
"type":"array",
"uniqueItems":true,
"description":"User-configured commands that can be invoked from within Lazygit"
"description":"What to do when opening Lazygit outside of a git repo.\n- 'prompt': (default) ask whether to initialize a new repo or open in the most recent repo\n- 'create': initialize a new repo\n- 'skip': open most recent repo\n- 'quit': exit Lazygit",
"default":"prompt"
},
"promptToReturnFromSubprocess":{
"type":"boolean",
"description":"If true, display a confirmation when subprocess terminates. This allows you to view the output of the subprocess before returning to Lazygit.",