This directory contains configuration for LazyGit — a simple terminal UI for git commands.
LazyGit provides an intuitive terminal-based interface for managing Git repositories. This configuration includes theme customization with automatic dark/light mode switching.
config.yml- Main LazyGit configurationtheme-dark.yml- Dark theme colors (Catppuccin Macchiato)theme-light.yml- Light theme colors (Catppuccin Latte)
LazyGit automatically switches between dark and light themes based on macOS system appearance:
- Dark mode → Uses
theme-dark.yml(Catppuccin Macchiato) - Light mode → Uses
theme-light.yml(Catppuccin Latte)
The theme is detected via the MACOS_IS_DARK environment variable, which is set by Fish shell configuration.
The config.yml includes:
gui:
theme:
selectedLineBgColor:
- {{ if eq (env "MACOS_IS_DARK") "true" }}
- "#theme-dark-color"
{{ else }}
- "#theme-light-color"
{{ end }}Both themes use the Catppuccin color scheme:
Catppuccin Macchiato (Dark):
- Rosewater, Flamingo, Pink, Mauve
- Red, Maroon, Peach, Yellow
- Green, Teal, Sky, Sapphire, Blue, Lavender
Catppuccin Latte (Light):
- Same color names with lighter variants
- Optimized for light backgrounds
- Better contrast for daylight viewing
# From any git repository
lazygit
# From Fish shell (uses wrapper function)
lgPanel Navigation:
1-5- Switch between panels (Status, Files, Branches, Commits, Stash)Tab- Next panelShift+Tab- Previous panel[/]- Previous/next tab within panel
List Navigation:
j/kor↓/↑- Move down/upg/G- Jump to top/bottom/- Searchn/N- Next/previous search result
File Operations:
Space- Stage/unstage filea- Stage all filesd- Show file diffe- Edit fileo- Open filec- Commit changesShift+c- Commit using git-flow
Branch Operations:
n- Create new branchSpace- Checkout branchd- Delete branchr- Rebase onto branchm- Merge into current branchf- Fast-forward branch
Commit Operations:
s- Squash commitsr- Reword commitd- Delete commite- Edit commitp- Pick commit (rebase)f- Fixup commit
Remote Operations:
p- PullShift+p- PushShift+f- Force pushf- Fetch
LazyGit supports git-flow workflow:
- Create feature/bugfix/hotfix branches
- Finish flows with automated merging
- Track flow branches
The Fish shell includes a wrapper function (functions/wrappers/lazygit.fish) that:
- Sets appropriate environment variables
- Ensures theme detection works correctly
- Provides better integration with Fish
LazyGit works best in terminals with true color support:
- WezTerm ✅
- Ghostty ✅
- iTerm2 ✅
- Terminal.app
⚠️ (limited color support)
Edit theme-dark.yml or theme-light.yml:
activeBorderColor:
- "#89b4fa" # Blue accent color
inactiveBorderColor:
- "#45475a" # Subtle grayAfter editing, restart LazyGit to see changes.
Edit config.yml to add custom commands:
customCommands:
- key: 'C'
command: 'git commit --amend --no-edit'
description: 'Amend commit without editing'
context: 'files'Modify keybindings in config.yml:
keybinding:
universal:
quit: 'q'
return: 'Esc'x- Open menu for current context?- Open help menuCtrl+r- Recent repositoriesCtrl+s- View filtering options:- Execute custom command
d- View full diffEnter- View file/commit detailsw- Toggle whitespace in diff
s- Stash changesg- Pop stashd- Drop stashSpace- Apply stash
Ctrl+s- Open filter menu- Filter by author, date, path, etc.
- Clear filters with
Esc
- Verify
MACOS_IS_DARKis set:echo $MACOS_IS_DARK - Restart Fish shell:
exec fish - Check macOS appearance:
defaults read -g AppleInterfaceStyle
- Ensure terminal supports true color
- Check
$TERMvariable: should bexterm-256coloror better - Update terminal emulator
- Verify installation:
which lazygit - Check mise installation:
mise ls | grep lazygit - Reinstall:
mise install ubi:jesseduffield/lazygit
- Check git configuration:
git config --list - Verify SSH keys are set up
- Check repository status:
git status
gui:
showFileTree: true # Show files in tree view
showListFooter: true # Show footer with shortcuts
showRandomTip: true # Show tips on startup
showCommandLog: true # Show git commands executed
mouseEvents: true # Enable mouse support
skipUnstageLineWarning: false
skipStashWarning: false
git:
paging:
colorArg: always # Always use colors
pager: diff-so-fancy # Use diff-so-fancy for diffs
commit:
signOff: false # Don't sign-off commits by default
merging:
manualCommit: false # Auto-commit after merge
refresher:
refreshInterval: 10 # Refresh every 10 seconds
fetchInterval: 60 # Fetch from remote every 60 seconds