fix(posix-shell): fix on checking command exist

Use `command -v $CMD >/dev/null 2>&1` to check if command exist
This commit is contained in:
js0ny 2025-02-23 20:31:13 +00:00
parent 8aa9daf582
commit f3333d2292
7 changed files with 470 additions and 479 deletions

View file

@ -1,7 +1,8 @@
echo "[INFO] Installing AppMan" echo "[INFO] Installing AppMan"
echo "[ACTION] Type [2] to install AppMan" echo "[ACTION] Type [2] to install AppMan"
wget -q https://raw.githubusercontent.com/ivan-hc/AM/main/AM-INSTALLER && chmod a+x ./AM-INSTALLER && ./AM-INSTALLER wget -q https://raw.githubusercontent.com/ivan-hc/AM/main/AM-INSTALLER && chmod a+x ./AM-INSTALLER && ./AM-INSTALLER
if [ command -v appman ]; then
if command -v appman >/dev/null 2>&1; then
appman install wezterm appman install wezterm
appman install nvim appman install nvim
fi fi

View file

@ -44,10 +44,10 @@ export GUI_SETUP
if [ "$WHEEL" -eq 1 ]; then if [ "$WHEEL" -eq 1 ]; then
echo "[INFO] Installing basic build tools" echo "[INFO] Installing basic build tools"
if [ command -v apt ]; then if command -v apt >/dev/null 2>&1; then
sudo apt update sudo apt update
sudo apt install -y build-essential sudo apt install -y build-essential
elif [ command -v pacman ]; then elif command -v pacman >/dev/null 2>&1; then
sudo pacman -Syu --noconfirm sudo pacman -Syu --noconfirm
sudo pacman -S --noconfirm base-devel sudo pacman -S --noconfirm base-devel
else else
@ -60,7 +60,7 @@ echo "[INFO] Cloning Dotfiles"
if [ -d "$DOTFILES" ]; then if [ -d "$DOTFILES" ]; then
echo "[INFO] Dotfiles already cloned" echo "[INFO] Dotfiles already cloned"
elif [ command -v git ]; then elif command -v git >/dev/null 2>&1; then
git clone https://github.com/js0ny/dotfiles.git "$DOTFILES" --depth 1 git clone https://github.com/js0ny/dotfiles.git "$DOTFILES" --depth 1
else else
echo "[ERROR] Git is not installed" echo "[ERROR] Git is not installed"
@ -92,7 +92,8 @@ source $DOTFILES/tools/bash/profile
source $DOTFILES/tools/bash/bashrc source $DOTFILES/tools/bash/bashrc
source $DOTFILES/tools/bash/bash_aliases source $DOTFILES/tools/bash/bash_aliases
if [ command -v zsh ]; then if command -v zsh >/dev/null 2>&1; then
read -p "[ACTION] Do you want to setup zsh? (Y/n) " choice read -p "[ACTION] Do you want to setup zsh? (Y/n) " choice
case "$choice" in case "$choice" in
n|N) n|N)

View file

@ -1,318 +1,307 @@
# $DOTFILES/common/lazygit.yaml
# Date: 2024-12-22
# Author: js0ny
# Location:
# *nix: ~/.config/lazygit/config.yml
# Windows: %APPDATA%\lazygit\config.yml
# Linking:
# ln -sf ~/.dotfiles/common/lazygit.yaml ~/.config/lazygit/config.yml
yaml-language-server: $schema=https://raw.githubusercontent.com/jesseduffield/lazygit/master/schema/config.json yaml-language-server: $schema=https://raw.githubusercontent.com/jesseduffield/lazygit/master/schema/config.json
# Config relating to the Lazygit UI # Config relating to the Lazygit UI
gui: gui:
# The number of lines you scroll by when scrolling the main window # The number of lines you scroll by when scrolling the main window
scrollHeight: 2 scrollHeight: 2
# If true, allow scrolling past the bottom of the content in the main window # If true, allow scrolling past the bottom of the content in the main window
scrollPastBottom: true scrollPastBottom: true
# See https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md#scroll-off-margin # See https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md#scroll-off-margin
scrollOffMargin: 2 scrollOffMargin: 2
# One of: 'margin' (default) | 'jump' # One of: 'margin' (default) | 'jump'
scrollOffBehavior: margin scrollOffBehavior: margin
# If true, capture mouse events. # If true, capture mouse events.
# When mouse events are captured, it's a little harder to select text: e.g. requiring you to hold the option key when on macOS. # When mouse events are captured, it's a little harder to select text: e.g. requiring you to hold the option key when on macOS.
mouseEvents: true mouseEvents: true
# If true, do not show a warning when discarding changes in the staging view. # If true, do not show a warning when discarding changes in the staging view.
skipDiscardChangeWarning: false skipDiscardChangeWarning: false
# If true, do not show warning when applying/popping the stash # If true, do not show warning when applying/popping the stash
skipStashWarning: false skipStashWarning: false
# If true, do not show a warning when attempting to commit without any staged files; instead stage all unstaged files. # If true, do not show a warning when attempting to commit without any staged files; instead stage all unstaged files.
skipNoStagedFilesWarning: false skipNoStagedFilesWarning: false
# If true, do not show a warning when rewording a commit via an external editor # If true, do not show a warning when rewording a commit via an external editor
skipRewordInEditorWarning: false skipRewordInEditorWarning: false
# 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. # 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.
# Number from 0 to 1.0. # Number from 0 to 1.0.
sidePanelWidth: 0.3333 sidePanelWidth: 0.3333
# If true, increase the height of the focused side window; creating an accordion effect. # If true, increase the height of the focused side window; creating an accordion effect.
expandFocusedSidePanel: false expandFocusedSidePanel: false
# The weight of the expanded side panel, relative to the other panels. 2 means # The weight of the expanded side panel, relative to the other panels. 2 means
# twice as tall as the other panels. Only relevant if `expandFocusedSidePanel` is true. # twice as tall as the other panels. Only relevant if `expandFocusedSidePanel` is true.
expandedSidePanelWeight: 2 expandedSidePanelWeight: 2
# 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. # 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.
# Options are: # Options are:
# - 'horizontal': split the window horizontally # - 'horizontal': split the window horizontally
# - 'vertical': split the window vertically # - 'vertical': split the window vertically
# - 'flexible': (default) split the window horizontally if the window is wide enough, otherwise split vertically # - 'flexible': (default) split the window horizontally if the window is wide enough, otherwise split vertically
mainPanelSplitMode: flexible mainPanelSplitMode: flexible
# How the window is split when in half screen mode (i.e. after hitting '+' once). # How the window is split when in half screen mode (i.e. after hitting '+' once).
# Possible values: # Possible values:
# - 'left': split the window horizontally (side panel on the left, main view on the right) # - 'left': split the window horizontally (side panel on the left, main view on the right)
# - 'top': split the window vertically (side panel on top, main view below) # - 'top': split the window vertically (side panel on top, main view below)
enlargedSideViewLocation: left enlargedSideViewLocation: left
# One of 'auto' (default) | 'en' | 'zh-CN' | 'zh-TW' | 'pl' | 'nl' | 'ja' | 'ko' | 'ru' # One of 'auto' (default) | 'en' | 'zh-CN' | 'zh-TW' | 'pl' | 'nl' | 'ja' | 'ko' | 'ru'
language: auto language: auto
# Format used when displaying time e.g. commit time. # Format used when displaying time e.g. commit time.
# Uses Go's time format syntax: https://pkg.go.dev/time#Time.Format # Uses Go's time format syntax: https://pkg.go.dev/time#Time.Format
timeFormat: 02 Jan 06 timeFormat: 02 Jan 06
# Format used when displaying time if the time is less than 24 hours ago. # Format used when displaying time if the time is less than 24 hours ago.
# Uses Go's time format syntax: https://pkg.go.dev/time#Time.Format # Uses Go's time format syntax: https://pkg.go.dev/time#Time.Format
shortTimeFormat: 3:04PM shortTimeFormat: 3:04PM
# Config relating to colors and styles. # Config relating to colors and styles.
# See https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md#color-attributes # See https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md#color-attributes
theme: theme:
activeBorderColor: activeBorderColor:
- "#b4befe" - "#b4befe"
- bold - bold
inactiveBorderColor: inactiveBorderColor:
- "#a6adc8" - "#a6adc8"
optionsTextColor: optionsTextColor:
- "#89b4fa" - "#89b4fa"
selectedLineBgColor: selectedLineBgColor:
- "#313244" - "#313244"
cherryPickedCommitBgColor: cherryPickedCommitBgColor:
- "#45475a" - "#45475a"
cherryPickedCommitFgColor: cherryPickedCommitFgColor:
- "#b4befe" - "#b4befe"
unstagedChangesColor: unstagedChangesColor:
- "#f38ba8" - "#f38ba8"
defaultFgColor: defaultFgColor:
- "#cdd6f4" - "#cdd6f4"
searchingActiveBorderColor: searchingActiveBorderColor:
- "#f9e2af" - "#f9e2af"
authorColors:
authorColors: "*": "#b4befe"
"*": "#b4befe" # Background color of selected line when view doesn't have focus.
# Background color of selected line when view doesn't have focus. inactiveViewSelectedLineBgColor:
inactiveViewSelectedLineBgColor: - bold
- bold # Foreground color of marked base commit (for rebase)
# Foreground color of marked base commit (for rebase) markedBaseCommitFgColor:
markedBaseCommitFgColor: - blue
- blue # Background color of marked base commit (for rebase)
# Background color of marked base commit (for rebase) markedBaseCommitBgColor:
markedBaseCommitBgColor: - yellow
- yellow # Config relating to the commit length indicator
# Config relating to the commit length indicator commitLength:
commitLength: # If true, show an indicator of commit message length
# If true, show an indicator of commit message length show: true
show: true # If true, show the '5 of 20' footer at the bottom of list views
# If true, show the '5 of 20' footer at the bottom of list views showListFooter: true
showListFooter: true # If true, display the files in the file views as a tree. If false, display the files as a flat list.
# If true, display the files in the file views as a tree. If false, display the files as a flat list. # This can be toggled from within Lazygit with the '~' key, but that will not change the default.
# This can be toggled from within Lazygit with the '~' key, but that will not change the default. showFileTree: true
showFileTree: true # If true, show the number of lines changed per file in the Files view
# If true, show the number of lines changed per file in the Files view showNumstatInFilesView: false
showNumstatInFilesView: false # If true, show a random tip in the command log when Lazygit starts
# If true, show a random tip in the command log when Lazygit starts showRandomTip: true
showRandomTip: true # If true, show the command log
# If true, show the command log showCommandLog: true
showCommandLog: true # 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.
# 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. showBottomLine: true
showBottomLine: true # If true, show jump-to-window keybindings in window titles.
# If true, show jump-to-window keybindings in window titles. showPanelJumps: true
showPanelJumps: true # Deprecated: use nerdFontsVersion instead
# Deprecated: use nerdFontsVersion instead showIcons: false
showIcons: false # Nerd fonts version to use.
# Nerd fonts version to use. # One of: '2' | '3' | empty string (default)
# One of: '2' | '3' | empty string (default) # If empty, do not show icons.
# If empty, do not show icons. nerdFontsVersion: "3"
nerdFontsVersion: "3" # If true (default), file icons are shown in the file views. Only relevant if NerdFontsVersion is not empty.
# If true (default), file icons are shown in the file views. Only relevant if NerdFontsVersion is not empty. showFileIcons: true
showFileIcons: true # Length of author name in (non-expanded) commits view. 2 means show initials only.
# Length of author name in (non-expanded) commits view. 2 means show initials only. commitAuthorShortLength: 2
commitAuthorShortLength: 2 # Length of author name in expanded commits view. 2 means show initials only.
# Length of author name in expanded commits view. 2 means show initials only. commitAuthorLongLength: 17
commitAuthorLongLength: 17 # Length of commit hash in commits view. 0 shows '*' if NF icons aren't on.
# Length of commit hash in commits view. 0 shows '*' if NF icons aren't on. commitHashLength: 8
commitHashLength: 8 # If true, show commit hashes alongside branch names in the branches view.
# If true, show commit hashes alongside branch names in the branches view. showBranchCommitHash: false
showBranchCommitHash: false # Whether to show the divergence from the base branch in the branches view.
# Whether to show the divergence from the base branch in the branches view. # One of: 'none' | 'onlyArrow' | 'arrowAndNumber'
# One of: 'none' | 'onlyArrow' | 'arrowAndNumber' showDivergenceFromBaseBranch: none
showDivergenceFromBaseBranch: none # Height of the command log view
# Height of the command log view commandLogSize: 8
commandLogSize: 8 # Whether to split the main window when viewing file changes.
# Whether to split the main window when viewing file changes. # One of: 'auto' | 'always'
# One of: 'auto' | 'always' # If 'auto', only split the main window when a file has both staged and unstaged changes
# If 'auto', only split the main window when a file has both staged and unstaged changes splitDiff: auto
splitDiff: auto # Default size for focused window. Window size can be changed from within Lazygit with '+' and '_' (but this won't change the default).
# Default size for focused window. Window size can be changed from within Lazygit with '+' and '_' (but this won't change the default). # One of: 'normal' (default) | 'half' | 'full'
# One of: 'normal' (default) | 'half' | 'full' screenMode: normal
screenMode: normal # Window border style.
# Window border style. # One of 'rounded' (default) | 'single' | 'double' | 'hidden'
# One of 'rounded' (default) | 'single' | 'double' | 'hidden' border: rounded
border: rounded # If true, show a seriously epic explosion animation when nuking the working tree.
# If true, show a seriously epic explosion animation when nuking the working tree. animateExplosion: true
animateExplosion: true # Whether to stack UI components on top of each other.
# Whether to stack UI components on top of each other. # One of 'auto' (default) | 'always' | 'never'
# One of 'auto' (default) | 'always' | 'never' portraitMode: auto
portraitMode: auto # How things are filtered when typing '/'.
# How things are filtered when typing '/'. # One of 'substring' (default) | 'fuzzy'
# One of 'substring' (default) | 'fuzzy' filterMode: substring
filterMode: substring # Config relating to the spinner.
# Config relating to the spinner. spinner:
spinner: # The frames of the spinner animation.
# The frames of the spinner animation. frames:
frames: - "|"
- "|" - /
- / - "-"
- "-" - \
- \ # The "speed" of the spinner in milliseconds.
# The "speed" of the spinner in milliseconds. rate: 50
rate: 50 # Status panel view.
# Status panel view. # One of 'dashboard' (default) | 'allBranchesLog'
# One of 'dashboard' (default) | 'allBranchesLog' statusPanelView: dashboard
statusPanelView: dashboard # If true, jump to the Files panel after popping a stash
# If true, jump to the Files panel after popping a stash switchToFilesAfterStashPop: true
switchToFilesAfterStashPop: true # If true, jump to the Files panel after applying a stash
# If true, jump to the Files panel after applying a stash switchToFilesAfterStashApply: true
switchToFilesAfterStashApply: true # If true, when using the panel jump keys (default 1 through 5) and target panel is already active, go to next tab instead
# If true, when using the panel jump keys (default 1 through 5) and target panel is already active, go to next tab instead switchTabsWithPanelJumpKeys: false
switchTabsWithPanelJumpKeys: false
# Config relating to git # Config relating to git
git: git:
# See https://github.com/jesseduffield/lazygit/blob/master/docs/Custom_Pagers.md # See https://github.com/jesseduffield/lazygit/blob/master/docs/Custom_Pagers.md
paging: paging:
# 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' # 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'
colorArg: always colorArg: always
# e.g. # e.g.
# diff-so-fancy # diff-so-fancy
# delta --dark --paging=never # delta --dark --paging=never
# ydiff -p cat -s --wrap --width={{columnWidth}} # ydiff -p cat -s --wrap --width={{columnWidth}}
pager: "delta --dark --paging=never" pager: "delta --dark --paging=never"
# 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). # 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).
useConfig: false useConfig: false
# e.g. 'difft --color=always' # e.g. 'difft --color=always'
externalDiffCommand: "" externalDiffCommand: ""
# Config relating to committing # Config relating to committing
commit: commit:
# If true, pass '--signoff' flag when committing # If true, pass '--signoff' flag when committing
signOff: false signOff: false
# Automatic WYSIWYG wrapping of the commit message as you type # Automatic WYSIWYG wrapping of the commit message as you type
autoWrapCommitMessage: true autoWrapCommitMessage: true
# If autoWrapCommitMessage is true, the width to wrap to # If autoWrapCommitMessage is true, the width to wrap to
autoWrapWidth: 72 autoWrapWidth: 72
# Config relating to merging # Config relating to merging
merging: merging:
# If true, run merges in a subprocess so that if a commit message is required, Lazygit will not hang # If true, run merges in a subprocess so that if a commit message is required, Lazygit will not hang
# Only applicable to unix users. # Only applicable to unix users.
manualCommit: false manualCommit: false
# Extra args passed to `git merge`, e.g. --no-ff # Extra args passed to `git merge`, e.g. --no-ff
args: "" args: ""
# The commit message to use for a squash merge commit. Can contain "{{selectedRef}}" and "{{currentBranch}}" placeholders. # The commit message to use for a squash merge commit. Can contain "{{selectedRef}}" and "{{currentBranch}}" placeholders.
squashMergeMessage: Squash merge {{selectedRef}} into {{currentBranch}} squashMergeMessage: Squash merge {{selectedRef}} into {{currentBranch}}
# list of branches that are considered 'main' branches, used when displaying commits # list of branches that are considered 'main' branches, used when displaying commits
mainBranches: mainBranches:
- master - master
- main - main
# 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' # 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'
skipHookPrefix: WIP skipHookPrefix: WIP
# If true, periodically fetch from remote # If true, periodically fetch from remote
autoFetch: true autoFetch: true
# If true, periodically refresh files and submodules # If true, periodically refresh files and submodules
autoRefresh: true autoRefresh: true
# If true, pass the --all arg to git fetch # If true, pass the --all arg to git fetch
fetchAll: true fetchAll: true
# If true, lazygit will automatically stage files that used to have merge # If true, lazygit will automatically stage files that used to have merge
# conflicts but no longer do; and it will also ask you if you want to # conflicts but no longer do; and it will also ask you if you want to
# continue a merge or rebase if you've resolved all conflicts. If false, it # continue a merge or rebase if you've resolved all conflicts. If false, it
# won't do either of these things. # won't do either of these things.
autoStageResolvedConflicts: true autoStageResolvedConflicts: true
# Command used when displaying the current branch git log in the main window # Command used when displaying the current branch git log in the main window
branchLogCmd: git log --graph --color=always --abbrev-commit --decorate --date=relative --pretty=medium {{branchName}} -- branchLogCmd: git log --graph --color=always --abbrev-commit --decorate --date=relative --pretty=medium {{branchName}} --
# Command used to display git log of all branches in the main window. # Command used to display git log of all branches in the main window.
# Deprecated: Use `allBranchesLogCmds` instead. # Deprecated: Use `allBranchesLogCmds` instead.
allBranchesLogCmd: git log --graph --all --color=always --abbrev-commit --decorate --date=relative --pretty=medium allBranchesLogCmd: git log --graph --all --color=always --abbrev-commit --decorate --date=relative --pretty=medium
# If true, do not spawn a separate process when using GPG # If true, do not spawn a separate process when using GPG
overrideGpg: false overrideGpg: false
# If true, do not allow force pushes # If true, do not allow force pushes
disableForcePushing: false disableForcePushing: false
# See https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md#predefined-commit-message-prefix # See https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md#predefined-commit-message-prefix
commitPrefix: commitPrefix:
# pattern to match on. E.g. for 'feature/AB-123' to match on the AB-123 use "^\\w+\\/(\\w+-\\w+).*" - # pattern to match on. E.g. for 'feature/AB-123' to match on the AB-123 use "^\\w+\\/(\\w+-\\w+).*"
pattern: "" pattern: ""
# Replace directive. E.g. for 'feature/AB-123' to start the commit message with 'AB-123 ' use "[$1] " # Replace directive. E.g. for 'feature/AB-123' to start the commit message with 'AB-123 ' use "[$1] "
replace: "" replace: ""
# See https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md#predefined-branch-name-prefix # See https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md#predefined-branch-name-prefix
branchPrefix: "" branchPrefix: ""
# If true, parse emoji strings in commit messages e.g. render :rocket: as 🚀 # If true, parse emoji strings in commit messages e.g. render :rocket: as 🚀
# (This should really be under 'gui', not 'git') # (This should really be under 'gui', not 'git')
parseEmoji: false parseEmoji: false
# Config for showing the log in the commits view # Config for showing the log in the commits view
log: log:
# One of: 'date-order' | 'author-date-order' | 'topo-order' | 'default' # One of: 'date-order' | 'author-date-order' | 'topo-order' | 'default'
# 'topo-order' makes it easier to read the git log graph, but commits may not # 'topo-order' makes it easier to read the git log graph, but commits may not
# appear chronologically. See https://git-scm.com/docs/ # appear chronologically. See https://git-scm.com/docs/
# #
# Deprecated: Configure this with `Log menu -> Commit sort order` (<c-l> in the commits window by default). # Deprecated: Configure this with `Log menu -> Commit sort order` (<c-l> in the commits window by default).
order: topo-order order: topo-order
# This determines whether the git graph is rendered in the commits panel # This determines whether the git graph is rendered in the commits panel
# One of 'always' | 'never' | 'when-maximised' # One of 'always' | 'never' | 'when-maximised'
# #
# Deprecated: Configure this with `Log menu -> Show git graph` (<c-l> in the commits window by default). # Deprecated: Configure this with `Log menu -> Show git graph` (<c-l> in the commits window by default).
showGraph: always showGraph: always
# displays the whole git graph by default in the commits view (equivalent to passing the `--all` argument to `git log`) # displays the whole git graph by default in the commits view (equivalent to passing the `--all` argument to `git log`)
showWholeGraph: false showWholeGraph: false
# When copying commit hashes to the clipboard, truncate them to this # When copying commit hashes to the clipboard, truncate them to this
# length. Set to 40 to disable truncation. # length. Set to 40 to disable truncation.
truncateCopiedCommitHashesTo: 12 truncateCopiedCommitHashesTo: 12
# Periodic update checks # Periodic update checks
update: update:
# One of: 'prompt' (default) | 'background' | 'never' # One of: 'prompt' (default) | 'background' | 'never'
method: prompt method: prompt
# Period in days between update checks # Period in days between update checks
days: 14 days: 14
# Background refreshes # Background refreshes
refresher: refresher:
# File/submodule refresh interval in seconds. # File/submodule refresh interval in seconds.
# Auto-refresh can be disabled via option 'git.autoRefresh'. # Auto-refresh can be disabled via option 'git.autoRefresh'.
refreshInterval: 10 refreshInterval: 10
# Re-fetch interval in seconds. # Re-fetch interval in seconds.
# Auto-fetch can be disabled via option 'git.autoFetch'. # Auto-fetch can be disabled via option 'git.autoFetch'.
fetchInterval: 60 fetchInterval: 60
# If true, show a confirmation popup before quitting Lazygit # If true, show a confirmation popup before quitting Lazygit
confirmOnQuit: false confirmOnQuit: false
# If true, exit Lazygit when the user presses escape in a context where there is nothing to cancel/close # If true, exit Lazygit when the user presses escape in a context where there is nothing to cancel/close
quitOnTopLevelReturn: false quitOnTopLevelReturn: false
# Config relating to things outside of Lazygit like how files are opened, copying to clipboard, etc # Config relating to things outside of Lazygit like how files are opened, copying to clipboard, etc
os: os:
# Command for editing a file. Should contain "{{filename}}". # Command for editing a file. Should contain "{{filename}}".
edit: "" edit: ""
# Command for editing a file at a given line number. Should contain # Command for editing a file at a given line number. Should contain
# "{{filename}}", and may optionally contain "{{line}}". # "{{filename}}", and may optionally contain "{{line}}".
editAtLine: "" editAtLine: ""
# Same as EditAtLine, except that the command needs to wait until the # Same as EditAtLine, except that the command needs to wait until the
# window is closed. # window is closed.
editAtLineAndWait: "" editAtLineAndWait: ""
# For opening a directory in an editor # For opening a directory in an editor
openDirInEditor: "" openDirInEditor: ""
# A built-in preset that sets all of the above settings. Supported presets # A built-in preset that sets all of the above settings. Supported presets
# are defined in the getPreset function in editor_presets.go. # are defined in the getPreset function in editor_presets.go.
editPreset: "nvim" editPreset: "nvim"
# Command for opening a file, as if the file is double-clicked. Should # Command for opening a file, as if the file is double-clicked. Should
# contain "{{filename}}", but doesn't support "{{line}}". # contain "{{filename}}", but doesn't support "{{line}}".
open: "" open: ""
# Command for opening a link. Should contain "{{link}}". # Command for opening a link. Should contain "{{link}}".
openLink: "" openLink: ""
# EditCommand is the command for editing a file. # EditCommand is the command for editing a file.
# Deprecated: use Edit instead. Note that semantics are different: # Deprecated: use Edit instead. Note that semantics are different:
# EditCommand is just the command itself, whereas Edit contains a # EditCommand is just the command itself, whereas Edit contains a
# "{{filename}}" variable. # "{{filename}}" variable.
editCommand: "" editCommand: ""
# EditCommandTemplate is the command template for editing a file # EditCommandTemplate is the command template for editing a file
# Deprecated: use EditAtLine instead. # Deprecated: use EditAtLine instead.
editCommandTemplate: "" editCommandTemplate: ""
# OpenCommand is the command for opening a file # OpenCommand is the command for opening a file
# Deprecated: use Open instead. # Deprecated: use Open instead.
openCommand: "" openCommand: ""
# OpenLinkCommand is the command for opening a link # OpenLinkCommand is the command for opening a link
# Deprecated: use OpenLink instead. # Deprecated: use OpenLink instead.
openLinkCommand: "" openLinkCommand: ""
# CopyToClipboardCmd is the command for copying to clipboard. # CopyToClipboardCmd is the command for copying to clipboard.
# See https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md#custom-command-for-copying-to-and-pasting-from-clipboard # See https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md#custom-command-for-copying-to-and-pasting-from-clipboard
copyToClipboardCmd: "" copyToClipboardCmd: ""
# ReadFromClipboardCmd is the command for reading the clipboard. # ReadFromClipboardCmd is the command for reading the clipboard.
# See https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md#custom-command-for-copying-to-and-pasting-from-clipboard # See https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md#custom-command-for-copying-to-and-pasting-from-clipboard
readFromClipboardCmd: "" readFromClipboardCmd: ""
# If true, don't display introductory popups upon opening Lazygit. # If true, don't display introductory popups upon opening Lazygit.
disableStartupPopups: false disableStartupPopups: false
# What to do when opening Lazygit outside of a git repo. # What to do when opening Lazygit outside of a git repo.
@ -325,164 +314,164 @@ notARepository: prompt
promptToReturnFromSubprocess: true promptToReturnFromSubprocess: true
# Keybindings # Keybindings
keybinding: keybinding:
universal: universal:
quit: q quit: q
quit-alt1: <c-c> quit-alt1: <c-c>
return: <esc> return: <esc>
quitWithoutChangingDirectory: Q quitWithoutChangingDirectory: Q
togglePanel: <tab> togglePanel: <tab>
prevItem: <up> prevItem: <up>
nextItem: <down> nextItem: <down>
prevItem-alt: e prevItem-alt: e
nextItem-alt: "n" nextItem-alt: "n"
prevPage: "," prevPage: ","
nextPage: . nextPage: .
scrollLeft: H scrollLeft: H
scrollRight: L scrollRight: L
gotoTop: < gotoTop: <
gotoBottom: ">" gotoBottom: ">"
toggleRangeSelect: v toggleRangeSelect: v
rangeSelectDown: <s-down> rangeSelectDown: <s-down>
rangeSelectUp: <s-up> rangeSelectUp: <s-up>
prevBlock: <left> prevBlock: <left>
nextBlock: <right> nextBlock: <right>
prevBlock-alt: h prevBlock-alt: h
nextBlock-alt: i nextBlock-alt: i
nextBlock-alt2: <tab> nextBlock-alt2: <tab>
prevBlock-alt2: <backtab> prevBlock-alt2: <backtab>
jumpToBlock: jumpToBlock:
- "1" - "1"
- "2" - "2"
- "3" - "3"
- "4" - "4"
- "5" - "5"
nextMatch: "k" nextMatch: "k"
prevMatch: "K" prevMatch: "K"
startSearch: / startSearch: /
optionMenu: <disabled> optionMenu: <disabled>
optionMenu-alt1: "?" optionMenu-alt1: "?"
select: <space> select: <space>
goInto: <enter> goInto: <enter>
confirm: <enter> confirm: <enter>
confirmInEditor: <a-enter> confirmInEditor: <a-enter>
remove: d remove: d
new: "n" new: "n"
edit: l edit: l
openFile: o openFile: o
scrollUpMain: <pgup> scrollUpMain: <pgup>
scrollDownMain: <pgdown> scrollDownMain: <pgdown>
scrollUpMain-alt1: E scrollUpMain-alt1: E
scrollDownMain-alt1: "N" scrollDownMain-alt1: "N"
scrollUpMain-alt2: <c-u> scrollUpMain-alt2: <c-u>
scrollDownMain-alt2: <c-d> scrollDownMain-alt2: <c-d>
executeShellCommand: ":" executeShellCommand: ":"
createRebaseOptionsMenu: m createRebaseOptionsMenu: m
# 'Files' appended for legacy reasons # 'Files' appended for legacy reasons
pushFiles: P pushFiles: P
# 'Files' appended for legacy reasons # 'Files' appended for legacy reasons
pullFiles: p pullFiles: p
refresh: R refresh: R
createPatchOptionsMenu: <c-p> createPatchOptionsMenu: <c-p>
nextTab: "]" nextTab: "]"
prevTab: "[" prevTab: "["
nextScreenMode: + nextScreenMode: +
prevScreenMode: _ prevScreenMode: _
undo: z undo: z
redo: <c-z> redo: <c-z>
filteringMenu: <c-s> filteringMenu: <c-s>
diffingMenu: W diffingMenu: W
diffingMenu-alt: <c-e> diffingMenu-alt: <c-e>
copyToClipboard: <c-o> copyToClipboard: <c-o>
openRecentRepos: <c-r> openRecentRepos: <c-r>
submitEditorText: <enter> submitEditorText: <enter>
extrasMenu: "@" extrasMenu: "@"
toggleWhitespaceInDiffView: <c-w> toggleWhitespaceInDiffView: <c-w>
increaseContextInDiffView: "}" increaseContextInDiffView: "}"
decreaseContextInDiffView: "{" decreaseContextInDiffView: "{"
increaseRenameSimilarityThreshold: ) increaseRenameSimilarityThreshold: )
decreaseRenameSimilarityThreshold: ( decreaseRenameSimilarityThreshold: (
openDiffTool: <c-t> openDiffTool: <c-t>
status: status:
checkForUpdate: u checkForUpdate: u
recentRepos: <space> recentRepos: <space>
allBranchesLogGraph: a allBranchesLogGraph: a
files: files:
commitChanges: c commitChanges: c
commitChangesWithoutHook: w commitChangesWithoutHook: w
amendLastCommit: A amendLastCommit: A
commitChangesWithEditor: C commitChangesWithEditor: C
findBaseCommitForFixup: <c-f> findBaseCommitForFixup: <c-f>
confirmDiscard: x confirmDiscard: x
ignoreFile: i ignoreFile: i
refreshFiles: r refreshFiles: r
stashAllChanges: s stashAllChanges: s
viewStashOptions: S viewStashOptions: S
toggleStagedAll: a toggleStagedAll: a
viewResetOptions: D viewResetOptions: D
fetch: f fetch: f
toggleTreeView: "t" toggleTreeView: "t"
openMergeTool: M openMergeTool: M
openStatusFilter: <c-b> openStatusFilter: <c-b>
copyFileInfoToClipboard: "y" copyFileInfoToClipboard: "y"
branches: branches:
createPullRequest: o createPullRequest: o
viewPullRequestOptions: O viewPullRequestOptions: O
copyPullRequestURL: <c-y> copyPullRequestURL: <c-y>
checkoutBranchByName: c checkoutBranchByName: c
forceCheckoutBranch: F forceCheckoutBranch: F
rebaseBranch: r rebaseBranch: r
renameBranch: R renameBranch: R
mergeIntoCurrentBranch: M mergeIntoCurrentBranch: M
viewGitFlowOptions: l viewGitFlowOptions: l
fastForward: f fastForward: f
createTag: T createTag: T
pushTag: P pushTag: P
setUpstream: u setUpstream: u
fetchRemote: f fetchRemote: f
sortOrder: s sortOrder: s
worktrees: worktrees:
viewWorktreeOptions: w viewWorktreeOptions: w
commits: commits:
squashDown: s squashDown: s
renameCommit: r renameCommit: r
renameCommitWithEditor: R renameCommitWithEditor: R
viewResetOptions: g viewResetOptions: g
markCommitAsFixup: f markCommitAsFixup: f
createFixupCommit: F createFixupCommit: F
squashAboveCommits: S squashAboveCommits: S
moveDownCommit: <c-j> moveDownCommit: <c-j>
moveUpCommit: <c-k> moveUpCommit: <c-k>
amendToCommit: A amendToCommit: A
resetCommitAuthor: a resetCommitAuthor: a
pickCommit: p pickCommit: p
revertCommit: t revertCommit: t
cherryPickCopy: C cherryPickCopy: C
pasteCommits: V pasteCommits: V
markCommitAsBaseForRebase: B markCommitAsBaseForRebase: B
tagCommit: T tagCommit: T
checkoutCommit: <space> checkoutCommit: <space>
resetCherryPick: <c-R> resetCherryPick: <c-R>
copyCommitAttributeToClipboard: "y" copyCommitAttributeToClipboard: "y"
openLogMenu: <c-l> openLogMenu: <c-l>
openInBrowser: o openInBrowser: o
viewBisectOptions: b viewBisectOptions: b
startInteractiveRebase: I startInteractiveRebase: I
amendAttribute: amendAttribute:
resetAuthor: a resetAuthor: a
setAuthor: A setAuthor: A
addCoAuthor: c addCoAuthor: c
stash: stash:
popStash: g popStash: g
renameStash: r renameStash: r
commitFiles: commitFiles:
checkoutCommitFile: c checkoutCommitFile: c
main: main:
toggleSelectHunk: a toggleSelectHunk: a
pickBothHunks: b pickBothHunks: b
editSelectHunk: E editSelectHunk: E
submodules: submodules:
init: I init: I
update: u update: u
bulkMenu: b bulkMenu: b
commitMessage: commitMessage:
commitMenu: <c-o> commitMenu: <c-o>

View file

@ -25,7 +25,7 @@ alias ollama="ollama.exe"
open() { open() {
local target=$1 local target=$1
if command -v "$FILE_EXPLORER" > /dev/null; then if command -v "$FILE_EXPLORER" >/dev/null 2>&1; then
"$FILE_EXPLORER" "$target" "$FILE_EXPLORER" "$target"
else else
command open "$target" command open "$target"

View file

@ -14,29 +14,29 @@ done
# Update package managers # # Update package managers #
# Homebrew, macOS # Homebrew, macOS
if command -v brew > /dev/null; then if command -v brew >/dev/null 2>&1; then
brew update brew update
brew upgrade brew upgrade
fi fi
# Arch # Arch
if command -v pacman > /dev/null; then if command -v pacman >/dev/null 2>&1; then
sudo pacman -Syu sudo pacman -Syu
fi fi
# Debian # Debian
if command -v apt > /dev/null; then if command -v apt >/dev/null 2>&1; then
sudo apt update sudo apt update
sudo apt upgrade sudo apt upgrade
fi fi
# Fedora # Fedora
if command -v dnf > /dev/null; then if command -v dnf >/dev/null 2>&1; then
sudo dnf update sudo dnf update
fi fi
# WSL # WSL
if command -v winget.exe > /dev/null; then if command -v winget.exe >/dev/null 2>&1; then
winget.exe upgrade winget.exe upgrade
fi fi

View file

@ -29,7 +29,7 @@ alias g=lazygit
# lsd - modern ls # lsd - modern ls
if command -v lsd > /dev/null; then if command -v lsd >/dev/null 2>&1; then
alias ls='lsd' alias ls='lsd'
alias l='lsd -lah' alias l='lsd -lah'
alias ll='lsd -l' alias ll='lsd -l'
@ -65,22 +65,22 @@ mtv(){
alias update="source $DOTFILES/scripts/update.zsh" alias update="source $DOTFILES/scripts/update.zsh"
if command -v pacman > /dev/null; then if command -v pacman >/dev/null 2>&1; then
alias pac="sudo pacman" alias pac="sudo pacman"
alias paci="sudo pacman -S" alias paci="sudo pacman -S"
alias pacr="sudo pacman -R" alias pacr="sudo pacman -R"
alias pacu="sudo pacman -Syu" alias pacu="sudo pacman -Syu"
alias pacl="pacman -Q" alias pacl="pacman -Q"
if command -v paru > /dev/null; then if command -v paru >/dev/null 2>&1; then
alias pacs="paru -Ss" alias pacs="paru -Ss"
elif command -v yay > /dev/null; then elif command -v yay >/dev/null 2>&1; then
alias pacs="yay -Ss" alias pacs="yay -Ss"
else else
alias pacs="pacman -Ss" alias pacs="pacman -Ss"
fi fi
fi fi
if command -v apt > /dev/null; then if command -v apt >/dev/null 2>&1; then
alias apt="sudo apt" alias apt="sudo apt"
alias apti="sudo apt install" alias apti="sudo apt install"
alias aptr="sudo apt remove" alias aptr="sudo apt remove"
@ -89,7 +89,7 @@ if command -v apt > /dev/null; then
alias aptl="apt list --installed" alias aptl="apt list --installed"
fi fi
if command -v brew > /dev/null; then if command -v brew >/dev/null 2>&1; then
alias brewi="brew install" alias brewi="brew install"
alias brewr="brew uninstall" alias brewr="brew uninstall"
alias brewu="brew update && brew upgrade" alias brewu="brew update && brew upgrade"

View file

@ -29,7 +29,7 @@ if [ "$(uname)" = "Darwin" ]; then
fi fi
if command -v zoxide > /dev/null ; then if command -v zoxide >/dev/null 2>&1; then
eval "$(zoxide init zsh)" eval "$(zoxide init zsh)"
# Relative navigation # # Relative navigation #
alias ..="z .." alias ..="z .."