{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://github.com/jesseduffield/lazygit/pkg/config/user-config", "properties": { "gui": { "properties": { "authorColors": { "additionalProperties": { "type": "string" }, "type": "object", "description": "See https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md#custom-author-color" }, "branchColors": { "additionalProperties": { "type": "string" }, "type": "object", "description": "See https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md#custom-branch-color" }, "scrollHeight": { "type": "integer", "minimum": 1, "description": "The number of lines you scroll by when scrolling the main window", "default": 2 }, "scrollPastBottom": { "type": "boolean", "description": "If true, allow scrolling past the bottom of the content in the main window", "default": true }, "scrollOffMargin": { "type": "integer", "description": "See https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md#scroll-off-margin", "default": 2 }, "scrollOffBehavior": { "type": "string", "description": "One of: 'margin' (default) | 'jump'", "default": "margin" }, "mouseEvents": { "type": "boolean", "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", "default": "flexible" }, "enlargedSideViewLocation": { "type": "string", "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)", "default": "left" }, "language": { "type": "string", "enum": [ "auto", "en", "zh-TW", "zh-CN", "pl", "nl", "ja", "ko", "ru" ], "description": "One of 'auto' (default) | 'en' | 'zh-CN' | 'zh-TW' | 'pl' | 'nl' | 'ja' | 'ko' | 'ru'", "default": "auto" }, "timeFormat": { "type": "string", "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." }, "showFileIcons": { "type": "boolean", "description": "If true (default), file icons are shown in the file views. Only relevant if NerdFontsVersion is not empty.", "default": true }, "showBranchCommitHash": { "type": "boolean", "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'" }, "border": { "type": "string", "enum": [ "single", "double", "rounded", "hidden" ], "description": "Window border style.\nOne of 'rounded' (default) | 'single' | 'double' | 'hidden'", "default": "rounded" }, "animateExplosion": { "type": "boolean", "description": "If true, show a seriously epic explosion animation when nuking the working tree.", "default": true }, "portraitMode": { "type": "string", "description": "Whether to stack UI components on top of each other.\nOne of 'auto' (default) | 'always' | 'never'", "default": "auto" } }, "additionalProperties": false, "type": "object", "description": "Config relating to the Lazygit UI" }, "git": { "properties": { "paging": { "properties": { "colorArg": { "type": "string", "enum": [ "always", "never" ], "description": "Value of the --color arg in the git diff command. Some pagers want this to be set to 'always' and some want it set to 'never'", "default": "always" }, "pager": { "type": "string", "minLength": 1, "description": "e.g.\ndiff-so-fancy\ndelta --dark --paging=never\nydiff -p cat -s --wrap --width={{columnWidth}}", "default": "", "examples": [ "delta --dark --paging=never", "diff-so-fancy", "ydiff -p cat -s --wrap --width={{columnWidth}}" ] }, "useConfig": { "type": "boolean", "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)." }, "externalDiffCommand": { "type": "string", "description": "e.g. 'difft --color=always'" } }, "additionalProperties": false, "type": "object", "description": "See https://github.com/jesseduffield/lazygit/blob/master/docs/Custom_Pagers.md" }, "commit": { "properties": { "signOff": { "type": "boolean", "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", "default": "git log --graph --color=always --abbrev-commit --decorate --date=relative --pretty=medium {{branchName}} --" }, "allBranchesLogCmd": { "type": "string", "description": "Command used to display git log of all branches in the main window", "default": "git log --graph --all --color=always --abbrev-commit --decorate --date=relative --pretty=medium" }, "overrideGpg": { "type": "boolean", "description": "If true, do not spawn a separate process when using GPG" }, "disableForcePushing": { "type": "boolean", "description": "If true, do not allow force pushes" }, "commitPrefixes": { "additionalProperties": { "properties": { "pattern": { "type": "string", "minLength": 1, "description": "pattern to match on. E.g. for 'feature/AB-123' to match on the AB-123 use \"^\\\\w+\\\\/(\\\\w+-\\\\w+).*\"", "examples": [ "^\\w+\\/(\\w+-\\w+).*" ] }, "replace": { "type": "string", "minLength": 1, "description": "Replace directive. E.g. for 'feature/AB-123' to start the commit message with 'AB-123 ' use \"[$1] \"", "examples": [ "[$1] " ] } }, "additionalProperties": false, "type": "object" }, "type": "object", "description": "See https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md#predefined-commit-message-prefix" }, "parseEmoji": { "type": "boolean", "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/\n\nDeprecated: Configure this with `Log menu -\u003e Commit sort order` (\u003cc-l\u003e in the commits window by default).", "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'\n\nDeprecated: Configure this with `Log menu -\u003e Show git graph` (\u003cc-l\u003e in the commits window by default).", "default": "always" }, "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" } }, "additionalProperties": false, "type": "object", "description": "Config relating to git" }, "update": { "properties": { "method": { "type": "string", "enum": [ "prompt", "background", "never" ], "description": "One of: 'prompt' (default) | 'background' | 'never'", "default": "prompt" }, "days": { "type": "integer", "minimum": 0, "description": "Period in days between update checks", "default": 14 } }, "additionalProperties": false, "type": "object", "description": "Periodic update checks" }, "refresher": { "properties": { "refreshInterval": { "type": "integer", "minimum": 0, "description": "File/submodule refresh interval in seconds.\nAuto-refresh can be disabled via option 'git.autoRefresh'.", "default": 10 }, "fetchInterval": { "type": "integer", "minimum": 0, "description": "Re-fetch interval in seconds.\nAuto-fetch can be disabled via option 'git.autoFetch'.", "default": 60 } }, "additionalProperties": false, "type": "object", "description": "Background refreshes" }, "confirmOnQuit": { "type": "boolean", "description": "If true, show a confirmation popup before quitting Lazygit" }, "quitOnTopLevelReturn": { "type": "boolean", "description": "If true, exit Lazygit when the user presses escape in a context where there is nothing to cancel/close" }, "keybinding": { "properties": { "universal": { "properties": { "quit": { "type": "string", "default": "q" }, "quit-alt1": { "type": "string", "default": "\u003cc-c\u003e" }, "return": { "type": "string", "default": "\u003cesc\u003e" }, "quitWithoutChangingDirectory": { "type": "string", "default": "Q" }, "togglePanel": { "type": "string", "default": "\u003ctab\u003e" }, "prevItem": { "type": "string", "default": "\u003cup\u003e" }, "nextItem": { "type": "string", "default": "\u003cdown\u003e" }, "prevItem-alt": { "type": "string", "default": "k" }, "nextItem-alt": { "type": "string", "default": "j" }, "prevPage": { "type": "string", "default": "," }, "nextPage": { "type": "string", "default": "." }, "scrollLeft": { "type": "string", "default": "H" }, "scrollRight": { "type": "string", "default": "L" }, "gotoTop": { "type": "string", "default": "\u003c" }, "gotoBottom": { "type": "string", "default": "\u003e" }, "toggleRangeSelect": { "type": "string", "default": "v" }, "rangeSelectDown": { "type": "string", "default": "\u003cs-down\u003e" }, "rangeSelectUp": { "type": "string", "default": "\u003cs-up\u003e" }, "prevBlock": { "type": "string", "default": "\u003cleft\u003e" }, "nextBlock": { "type": "string", "default": "\u003cright\u003e" }, "prevBlock-alt": { "type": "string", "default": "h" }, "nextBlock-alt": { "type": "string", "default": "l" }, "nextBlock-alt2": { "type": "string", "default": "\u003ctab\u003e" }, "prevBlock-alt2": { "type": "string", "default": "\u003cbacktab\u003e" }, "jumpToBlock": { "items": { "type": "string" }, "type": "array", "default": [ "1", "2", "3", "4", "5" ] }, "nextMatch": { "type": "string", "default": "n" }, "prevMatch": { "type": "string", "default": "N" }, "startSearch": { "type": "string", "default": "/" }, "optionMenu": { "type": "string", "default": "\u003cdisabled\u003e" }, "optionMenu-alt1": { "type": "string", "default": "?" }, "select": { "type": "string", "default": "\u003cspace\u003e" }, "goInto": { "type": "string", "default": "\u003center\u003e" }, "confirm": { "type": "string", "default": "\u003center\u003e" }, "confirmInEditor": { "type": "string", "default": "\u003ca-enter\u003e" }, "remove": { "type": "string", "default": "d" }, "new": { "type": "string", "default": "n" }, "edit": { "type": "string", "default": "e" }, "openFile": { "type": "string", "default": "o" }, "scrollUpMain": { "type": "string", "default": "\u003cpgup\u003e" }, "scrollDownMain": { "type": "string", "default": "\u003cpgdown\u003e" }, "scrollUpMain-alt1": { "type": "string", "default": "K" }, "scrollDownMain-alt1": { "type": "string", "default": "J" }, "scrollUpMain-alt2": { "type": "string", "default": "\u003cc-u\u003e" }, "scrollDownMain-alt2": { "type": "string", "default": "\u003cc-d\u003e" }, "executeCustomCommand": { "type": "string", "default": ":" }, "createRebaseOptionsMenu": { "type": "string", "default": "m" }, "pushFiles": { "type": "string", "description": "'Files' appended for legacy reasons", "default": "P" }, "pullFiles": { "type": "string", "description": "'Files' appended for legacy reasons", "default": "p" }, "refresh": { "type": "string", "default": "R" }, "createPatchOptionsMenu": { "type": "string", "default": "\u003cc-p\u003e" }, "nextTab": { "type": "string", "default": "]" }, "prevTab": { "type": "string", "default": "[" }, "nextScreenMode": { "type": "string", "default": "+" }, "prevScreenMode": { "type": "string", "default": "_" }, "undo": { "type": "string", "default": "z" }, "redo": { "type": "string", "default": "\u003cc-z\u003e" }, "filteringMenu": { "type": "string", "default": "\u003cc-s\u003e" }, "diffingMenu": { "type": "string", "default": "W" }, "diffingMenu-alt": { "type": "string", "default": "\u003cc-e\u003e" }, "copyToClipboard": { "type": "string", "default": "\u003cc-o\u003e" }, "openRecentRepos": { "type": "string", "default": "\u003cc-r\u003e" }, "submitEditorText": { "type": "string", "default": "\u003center\u003e" }, "extrasMenu": { "type": "string", "default": "@" }, "toggleWhitespaceInDiffView": { "type": "string", "default": "\u003cc-w\u003e" }, "increaseContextInDiffView": { "type": "string", "default": "}" }, "decreaseContextInDiffView": { "type": "string", "default": "{" }, "openDiffTool": { "type": "string", "default": "\u003cc-t\u003e" } }, "additionalProperties": false, "type": "object" }, "status": { "properties": { "checkForUpdate": { "type": "string", "default": "u" }, "recentRepos": { "type": "string", "default": "\u003center\u003e" }, "allBranchesLogGraph": { "type": "string", "default": "a" } }, "additionalProperties": false, "type": "object" }, "files": { "properties": { "commitChanges": { "type": "string", "default": "c" }, "commitChangesWithoutHook": { "type": "string", "default": "w" }, "amendLastCommit": { "type": "string", "default": "A" }, "commitChangesWithEditor": { "type": "string", "default": "C" }, "findBaseCommitForFixup": { "type": "string", "default": "\u003cc-f\u003e" }, "confirmDiscard": { "type": "string", "default": "x" }, "ignoreFile": { "type": "string", "default": "i" }, "refreshFiles": { "type": "string", "default": "r" }, "stashAllChanges": { "type": "string", "default": "s" }, "viewStashOptions": { "type": "string", "default": "S" }, "toggleStagedAll": { "type": "string", "default": "a" }, "viewResetOptions": { "type": "string", "default": "D" }, "fetch": { "type": "string", "default": "f" }, "toggleTreeView": { "type": "string", "default": "`" }, "openMergeTool": { "type": "string", "default": "M" }, "openStatusFilter": { "type": "string", "default": "\u003cc-b\u003e" }, "copyFileInfoToClipboard": { "type": "string", "default": "y" } }, "additionalProperties": false, "type": "object" }, "branches": { "properties": { "createPullRequest": { "type": "string", "default": "o" }, "viewPullRequestOptions": { "type": "string", "default": "O" }, "copyPullRequestURL": { "type": "string", "default": "\u003cc-y\u003e" }, "checkoutBranchByName": { "type": "string", "default": "c" }, "forceCheckoutBranch": { "type": "string", "default": "F" }, "rebaseBranch": { "type": "string", "default": "r" }, "renameBranch": { "type": "string", "default": "R" }, "mergeIntoCurrentBranch": { "type": "string", "default": "M" }, "viewGitFlowOptions": { "type": "string", "default": "i" }, "fastForward": { "type": "string", "default": "f" }, "createTag": { "type": "string", "default": "T" }, "pushTag": { "type": "string", "default": "P" }, "setUpstream": { "type": "string", "default": "u" }, "fetchRemote": { "type": "string", "default": "f" }, "sortOrder": { "type": "string", "default": "s" } }, "additionalProperties": false, "type": "object" }, "worktrees": { "properties": { "viewWorktreeOptions": { "type": "string", "default": "w" } }, "additionalProperties": false, "type": "object" }, "commits": { "properties": { "squashDown": { "type": "string", "default": "s" }, "renameCommit": { "type": "string", "default": "r" }, "renameCommitWithEditor": { "type": "string", "default": "R" }, "viewResetOptions": { "type": "string", "default": "g" }, "markCommitAsFixup": { "type": "string", "default": "f" }, "createFixupCommit": { "type": "string", "default": "F" }, "squashAboveCommits": { "type": "string", "default": "S" }, "moveDownCommit": { "type": "string", "default": "\u003cc-j\u003e" }, "moveUpCommit": { "type": "string", "default": "\u003cc-k\u003e" }, "amendToCommit": { "type": "string", "default": "A" }, "resetCommitAuthor": { "type": "string", "default": "a" }, "pickCommit": { "type": "string", "default": "p" }, "revertCommit": { "type": "string", "default": "t" }, "cherryPickCopy": { "type": "string", "default": "C" }, "pasteCommits": { "type": "string", "default": "V" }, "markCommitAsBaseForRebase": { "type": "string", "default": "B" }, "tagCommit": { "type": "string", "default": "T" }, "checkoutCommit": { "type": "string", "default": "\u003cspace\u003e" }, "resetCherryPick": { "type": "string", "default": "\u003cc-R\u003e" }, "copyCommitAttributeToClipboard": { "type": "string", "default": "y" }, "openLogMenu": { "type": "string", "default": "\u003cc-l\u003e" }, "openInBrowser": { "type": "string", "default": "o" }, "viewBisectOptions": { "type": "string", "default": "b" }, "startInteractiveRebase": { "type": "string", "default": "i" } }, "additionalProperties": false, "type": "object" }, "stash": { "properties": { "popStash": { "type": "string", "default": "g" }, "renameStash": { "type": "string", "default": "r" } }, "additionalProperties": false, "type": "object" }, "commitFiles": { "properties": { "checkoutCommitFile": { "type": "string", "default": "c" } }, "additionalProperties": false, "type": "object" }, "main": { "properties": { "toggleSelectHunk": { "type": "string", "default": "a" }, "pickBothHunks": { "type": "string", "default": "b" }, "editSelectHunk": { "type": "string", "default": "E" } }, "additionalProperties": false, "type": "object" }, "submodules": { "properties": { "init": { "type": "string", "default": "i" }, "update": { "type": "string", "default": "u" }, "bulkMenu": { "type": "string", "default": "b" } }, "additionalProperties": false, "type": "object" }, "commitMessage": { "properties": { "switchToEditor": { "type": "string", "default": "\u003cc-o\u003e" } }, "additionalProperties": false, "type": "object" } }, "additionalProperties": false, "type": "object", "description": "Keybindings" }, "os": { "properties": { "edit": { "type": "string", "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)", "examples": [ "git fetch {{.Form.Remote}} {{.Form.Branch}} \u0026\u0026 git checkout FETCH_HEAD" ] }, "subprocess": { "type": "boolean", "description": "If true, run the command in a subprocess (e.g. if the command requires user input)" }, "prompts": { "items": { "properties": { "type": { "type": "string", "description": "One of: 'input' | 'menu' | 'confirm' | 'menuFromCommand'" }, "key": { "type": "string", "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.", "examples": [ "git fetch {{.Form.Remote}} {{.Form.Branch}} \u0026\u0026 git checkout FETCH_HEAD" ] } }, "additionalProperties": false, "type": "object", "description": "Shows suggestions as the input is entered\nOnly for input prompts." }, "body": { "type": "string", "description": "The message of the confirmation prompt.\nOnly for confirm prompts.", "examples": [ "Are you sure you want to push to the remote?" ] }, "options": { "items": { "properties": { "name": { "type": "string", "description": "The first part of the label" }, "description": { "type": "string", "description": "The second part of the label" }, "value": { "type": "string", "minLength": 1, "description": "The value that will be used in the command", "examples": [ "feature" ] } }, "additionalProperties": false, "type": "object" }, "type": "array", "description": "Menu options.\nOnly for menu prompts." }, "command": { "type": "string", "description": "The command to run to generate menu options\nOnly for menuFromCommand prompts.", "examples": [ "git fetch {{.Form.Remote}} {{.Form.Branch}} \u0026\u0026 git checkout FETCH_HEAD" ] }, "filter": { "type": "string", "description": "The regexp to run specifying groups which are going to be kept from the command's output.\nOnly for menuFromCommand prompts.", "examples": [ ".*{{.SelectedRemote.Name }}/(?P\u003cbranch\u003e.*)" ] }, "valueFormat": { "type": "string", "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" }, "services": { "additionalProperties": { "type": "string" }, "type": "object", "description": "See https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md#custom-pull-request-urls" }, "notARepository": { "type": "string", "enum": [ "prompt", "create", "skip", "quit" ], "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.", "default": true } }, "additionalProperties": false, "type": "object" }