---
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`.