--- title: Lazygit description: Lazygit with CherryBlossom colors, delta diffs, a full keybinding map, and custom commands wired to gh and helper scripts. --- [Lazygit](https://github.com/jesseduffield/lazygit) is a terminal UI for git. The config sets CherryBlossom colors, renders diffs with delta, turns on background fetching and a whole-graph log, and adds custom commands that call `gh`. | | | | --- | --- | | Source | `dot_config/lazygit/config.yml`, `dot_config/lazygit/ii-theme.yml` | | Target | `~/.config/lazygit/config.yml`, `~/.config/lazygit/ii-theme.yml` | | Packages | `lazygit` (pacman / Homebrew) | | Ignored | `.config/lazygit/.omc/**` (agent tooling state) | ## Launching | Entry point | Behavior | | --- | --- | | `gg` | Alias for `lazygit` (all shells) | | Ctrl+g | fish and zsh keybinding | | Ctrl+Shift+g | [Kitty](/terminal/kitty): lazygit as an overlay on the current window. The tmux-host kitty config opens it in a 90% `tmux display-popup` instead. | tmux-resurrect lists `lazygit` among the processes it restores. ## GUI Colors come from the CherryBlossom palette (`palettes/CherryBlossom.json` in [prdlk/noctalia](https://github.com/prdlk/noctalia)): | Theme key | Color | | --- | --- | | `activeBorderColor` | `#cf716f` | | `inactiveBorderColor` | `#a6958f` | | `searchingActiveBorderColor` | `#c17e4a` | | `optionsTextColor` | `#a6958f` | | `selectedLineBgColor` | `#453130` | | `cherryPickedCommitBgColor` | `#453130` | | `cherryPickedCommitFgColor` | `#ad6756` | | `unstagedChangesColor` | `#ae825f` | | `defaultFgColor` | `#dcc1b7` | | `authorColors."*"` | `#dcc1b7` (every author the same color) | | Option | Value | | --- | --- | | `border` | `rounded` | | `scrollHeight` / `scrollPastBottom` | `2` / `true` | | `scrollOffMargin` / `scrollOffBehavior` | `2` / `margin` | | `mouseEvents` | `true` | | `skipDiscardChangeWarning` | `true` | | `skipStashWarning` | `true` | | `skipNoStagedFilesWarning` | `false` | | `skipRewordInEditorWarning` | `false` | | `sidePanelWidth` | `0.4` | | `expandFocusedSidePanel` / `expandedSidePanelWeight` | `true` / `2` | | `mainPanelSplitMode` | `horizontal` | | `enlargedSideViewLocation` | `left` | | `language` | `auto` | | `timeFormat` / `shortTimeFormat` | `02 Jan 06` / `3:04PM` | | `commitLength.show` | `true` | | `showListFooter` | `true` | | `showFileTree` | `true` | | `showRandomTip` | `false` | | `showCommandLog` / `commandLogSize` | `true` / `4` | | `showBottomLine` | `false` (keybinding hint line hidden) | | `showPanelJumps` | `false` | | `showIcons`, `nerdFontsVersion`, `showFileIcons` | `true`, `"3"`, `true` | | `commitAuthorShortLength` / `commitAuthorLongLength` | `2` (initials) / `17` | | `commitHashLength` | `8` | | `showBranchCommitHash` | `true` | | `showDivergenceFromBaseBranch` | `arrowAndNumber` | | `splitDiff` | `auto` | | `screenMode` | `normal` | | `animateExplosion` | `true` | | `portraitMode` | `auto` | | `filterMode` | `fuzzy` | | `spinner.frames` / `spinner.rate` | ASCII bar (`\|`, `/`, `-`, `\`) / `50` ms | | `statusPanelView` | `allBranchesLog` | ## Git | Option | Value | | --- | --- | | `diffRenderers` | `delta --dark --paging=never` with `colorArg: always`. delta also reads the `[delta]` section of `~/.gitconfig`; see [Git](/tools/git). | | `commit.signOff` | `false` | | `commit.autoWrapCommitMessage` / `autoWrapWidth` | `true` / `72` | | `merging.manualCommit` / `args` | `false` / empty | | `merging.squashMergeMessage` | `Squash merge {{selectedRef}} into {{currentBranch}}` | | `mainBranches` | `develop` | | `skipHookPrefix` | `WIP` (a message starting with `WIP` skips pre-commit hooks) | | `autoFetch` / `autoRefresh` / `fetchAll` | `true` / `true` / `true` | | `branchLogCmd` | `git log --graph --color=always --abbrev-commit --decorate --date=relative --pretty=medium {{branchName}} --` | | `allBranchesLogCmds` | `git log --graph --all --color=always --abbrev-commit --decorate --date=relative --pretty=medium` | | `overrideGpg` | `false` | | `disableForcePushing` | `false` | | `commitPrefix` / `branchPrefix` | empty | | `parseEmoji` | `true` | | `log.order` / `showGraph` / `showWholeGraph` | `topo-order` / `always` / `true` | | `truncateCopiedCommitHashesTo` | `8` | ## Refresh, updates, and OS | Option | Value | | --- | --- | | `update.method` / `days` | `background` / `14` | | `refresher.refreshInterval` | `10` s | | `refresher.fetchInterval` | `60` s | | `confirmOnQuit` | `false` | | `quitOnTopLevelReturn` | `true` (Esc at top level quits) | | `disableStartupPopups` | `true` | | `notARepository` | `skip` (opens the most recent repo) | | `promptToReturnFromSubprocess` | `false` | | `os.edit`, `editAtLine`, `editAtLineAndWait`, `openDirInEditor`, `editPreset`, `open` | empty (lazygit defaults, which follow `$EDITOR` = nvim) | | `os.openLink` | `bash -C` running `~/.local/share/omarchy/bin/omarchy-launch-webapp {{link}}` (absolute path in the file) | | `os.copyToClipboardCmd` / `readFromClipboardCmd` | `wl-copy` / `wl-paste` | :::note The link opener and the `wl-copy`/`wl-paste` clipboard commands are Wayland/Omarchy-specific. On macOS or a server they are unavailable, so opening links and clipboard actions fail there. ::: ## Custom commands | Key | Context | Command | Output | | --- | --- | --- | --- | | Ctrl+i | global | `gitv {{.Repository.Owner}}/{{.Repository.Name}}` | terminal | | Ctrl+w | global | `gwm` | terminal | | Ctrl+a | global | `wrkflw` | terminal | | Ctrl+p | global | `github prs` | terminal | | F | files | `gh repo sync && gh clean-branches --force` ("Sync repo and clean branches, update DuckDB cache") | log | | A | files | `gh commit` ("Smart commit with AI") | terminal | | C | files | `gh commit` ("Smart commit with AI") | terminal | | a | files | `git add` the file if it has unstaged changes, else `git reset` it ("Toggle file staged") | | | L | files | `livediff` | terminal | | Ctrl+d | files | `gh dash` | terminal | | Ctrl+o | files | `gh browse` | | | o | localBranches | `gh pr create --fill -w` ("start ai pull request") | | | C | localBranches | `gh repo sync && gh clean-branches --force` | log | | O | commits | `hub browse -- "commit/{{.SelectedLocalCommit.Hash}}"` | | `gh commit`, `gh clean-branches`, and `gh dash` are managed gh extensions (see [GitHub CLI](/tools/github-cli)). `gitv`, `gwm`, `wrkflw`, `github`, `livediff`, and `hub` are not installed by this repo. :::warning Several custom keys share a key with a built-in binding in the same context: C and a in files (`commitChangesWithEditor`, `toggleStagedAll`), Ctrl+w, Ctrl+p, Ctrl+d, Ctrl+o against universal bindings, and O in commits. Ctrl+i is the same keycode as Tab in most terminals. ::: ## Keybindings The file writes out the full keybinding map. Most values match lazygit's defaults; they are listed so the file is the single reference. | Action | Key | | --- | --- | | `quit` / `quit-alt1` | q / Ctrl+q | | `return` | Esc | | `quitWithoutChangingDirectory` | Q | | `togglePanel` | Tab | | `prevItem` / `nextItem` | Up / Down | | `prevItem-alt` / `nextItem-alt` | k / j | | `prevPage` / `nextPage` | , / . | | `scrollLeft` / `scrollRight` | H / L | | `gotoTop` / `gotoBottom` | `<` / `>` | | `toggleRangeSelect` | v | | `rangeSelectDown` / `rangeSelectUp` | Shift+Down / Shift+Up | | `prevBlock` / `nextBlock` | Left / Right | | `prevBlock-alt` / `nextBlock-alt` | h / l | | `nextBlock-alt2` / `prevBlock-alt2` | Tab / Shift+Tab | | `jumpToBlock` | 1–5 | | `nextMatch` / `prevMatch` | n / N | | `startSearch` | / | | `optionMenu` | ? | | `select` | Space | | `goInto` / `confirm` | Enter | | `confirmInEditor` | Alt+Enter | | `remove` | d | | `new` | n | | `edit` | e | | `openFile` | o | | `scrollUpMain` / `scrollDownMain` | PgUp / PgDn | | `scrollUpMain-alt1` / `scrollDownMain-alt1` | K / J | | `scrollUpMain-alt2` / `scrollDownMain-alt2` | Ctrl+u / Ctrl+d | | `createRebaseOptionsMenu` | m | | `pushFiles` / `pullFiles` | P / p | | `refresh` | R | | `createPatchOptionsMenu` | Ctrl+p | | `nextTab` / `prevTab` | ] / [ | | `nextScreenMode` / `prevScreenMode` | + / _ | | `undo` / `redo` | z / Ctrl+z | | `filteringMenu` | Ctrl+s | | `diffingMenu` / `diffingMenu-alt` | W / Ctrl+e | | `copyToClipboard` | Ctrl+o | | `openRecentRepos` | Ctrl+r | | `submitEditorText` | Enter | | `extrasMenu` | @ | | `toggleWhitespaceInDiffView` | Ctrl+w | | `increaseContextInDiffView` / `decreaseContextInDiffView` | `}` / `{` | | `increaseRenameSimilarityThreshold` / `decrease...` | ) / ( | | `openDiffTool` | Ctrl+t (runs the nvim `codediff` difftool) | | `newWorktree` | w | | Action | Key | | --- | --- | | `checkForUpdate` | u | | `recentRepos` | Enter | | `allBranchesLogGraph` | a | | Action | Key | | --- | --- | | `commitChanges` | c | | `commitChangesWithoutHook` | w | | `amendLastCommit` | E | | `commitChangesWithEditor` | C | | `findBaseCommitForFixup` | Ctrl+f | | `confirmDiscard` | x | | `ignoreFile` | i | | `refreshFiles` | r | | `stashAllChanges` / `viewStashOptions` | s / S | | `toggleStagedAll` | a | | `viewResetOptions` | D | | `fetch` | f | | `toggleTreeView` | `` ` `` | | `openMergeOptions` | M | | `openStatusFilter` | Ctrl+b | | `copyFileInfoToClipboard` | y | | Action | Key | | --- | --- | | `createPullRequest` | 1 | | `viewPullRequestOptions` | O | | `copyPullRequestURL` | Ctrl+y | | `checkoutBranchByName` | c | | `forceCheckoutBranch` | F | | `rebaseBranch` | r | | `renameBranch` | R | | `mergeIntoCurrentBranch` | M | | `viewGitFlowOptions` | i | | `fastForward` / `fetchRemote` | f | | `createTag` / `pushTag` | T / P | | `setUpstream` | u | | `sortOrder` | s | | Action | Key | | --- | --- | | `squashDown` | s | | `renameCommit` / `renameCommitWithEditor` | r / R | | `viewResetOptions` | g | | `markCommitAsFixup` / `createFixupCommit` | f / F | | `squashAboveCommits` | S | | `moveDownCommit` / `moveUpCommit` | Ctrl+j / Ctrl+k | | `resetCommitAuthor` | a | | `pickCommit` | p | | `revertCommit` | t | | `cherryPickCopy` / `pasteCommits` | C / V | | `markCommitAsBaseForRebase` | B | | `tagCommit` | T | | `checkoutCommit` | Space | | `resetCherryPick` | Ctrl+c | | `copyCommitAttributeToClipboard` | y | | `openLogMenu` | Ctrl+l | | `openInBrowser` | o | | `viewBisectOptions` | b | | `startInteractiveRebase` | i | | Panel | Action | Key | | --- | --- | --- | | amendAttribute | `resetAuthor` / `setAuthor` / `addCoAuthor` | a / A / c | | stash | `popStash` / `renameStash` | g / r | | commitFiles | `checkoutCommitFile` | c | | main | `toggleSelectHunk` / `pickBothHunks` / `editSelectHunk` | a / b / E | | submodules | `init` / `update` / `bulkMenu` | i / u / b | | commitMessage | `commitMenu` | Ctrl+o | ## ii-theme.yml `ii-theme.yml` is generated by the ii wallpaper theming system and holds only a `gui.theme` block: white active border (bold), grey `#8F9192` inactive border, `#1F1F1F` selection and cherry-pick backgrounds, `#FFF17B` marked base commit, `#FF9BAD` unstaged changes, `#DFE3E3` default text. Nothing in the repo loads it, so `config.yml`'s cyberdream colors are what lazygit uses. To apply it, pass both files: `LG_CONFIG_FILE="$HOME/.config/lazygit/config.yml,$HOME/.config/lazygit/ii-theme.yml" lazygit`.