Lazygit
Lazygit with cyberdream colors, delta diffs, a full keybinding map, and custom commands wired to gh and helper scripts.
Lazygit is a terminal UI for git. The config sets cyberdream 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: 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 cyberdream palette:
| Theme key | Color |
|---|---|
activeBorderColor |
#5ef1ff |
inactiveBorderColor |
#7b8496 |
searchingActiveBorderColor |
#ff5ef1 |
optionsTextColor |
#7b8496 |
selectedLineBgColor |
#3c4048 |
cherryPickedCommitBgColor |
#3c4048 |
cherryPickedCommitFgColor |
#ff5ea0 |
unstagedChangesColor |
#ffbd5e |
defaultFgColor |
#ffffff |
authorColors."*" |
#ffffff (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. |
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 |
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). gitv, gwm, wrkflw, github, livediff, and hub are not installed by this repo.
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.
Universal
| 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 |
Status
| Action | Key |
|---|---|
checkForUpdate |
u |
recentRepos |
Enter |
allBranchesLogGraph |
a |
Files
| 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 |
Branches
| 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 |
Commits
| 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 |
Other panels
| 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.