sudo apt update
sudo apt install zsh curl gitSet Zsh as default shell:
chsh -s $(which zsh)Restart your terminal.
Zinit is used as a fast and lightweight plugin manager that loads Zsh plugins asynchronously to significantly reduce shell startup time.
bash -c "$(curl -fsSL https://raw.githubusercontent.com/zdharma-continuum/zinit/HEAD/scripts/install.sh)"Starship is used as a fast, cross-shell prompt that provides a minimal, customizable, and performant terminal prompt.
curl -sS https://starship.rs/install.sh | shbrew install starshipOpen .zshrc.
nvim ~/.zshrcReplace contents with:
# ---------- Zinit ----------
export ZINIT_HOME="$HOME/.local/share/zinit/zinit.git"
if [[ -r "$ZINIT_HOME/zinit.zsh" ]]; then
source "$ZINIT_HOME/zinit.zsh"
fi
# ---------- Prompt ----------
export STARSHIP_LOG=error
eval "$(starship init zsh)"
# ---------- Completion ----------
autoload -Uz compinit
# Use a cached completion dump
mkdir -p "${XDG_CACHE_HOME:-$HOME/.cache}"
compinit -d "${XDG_CACHE_HOME:-$HOME/.cache}/zcompdump"
# Better completion UX
zstyle ':completion:*' menu select
zstyle ':completion:*' rehash true
zstyle ':completion:*' verbose yes
# Case-insensitive + partial matching
zstyle ':completion:*' matcher-list \
'm:{a-z}={A-Za-z}' \
'r:|=*' \
'l:|=* r:|=*'
# Group matches
zstyle ':completion:*' group-name ''
# Group descriptions
zstyle ':completion:*:descriptions' format '%F{yellow}%d%f'
# Colored completion menus
zstyle ':completion:*' list-colors ''
# Better process completion
zstyle ':completion:*:*:*:*:processes' command \
'ps -u $USER -o pid,user,comm -w -w'
# ---------- Plugins ----------
# Fish-style suggestions
zinit light zsh-users/zsh-autosuggestions
# Syntax highlighting (must be last)
zinit light zsh-users/zsh-syntax-highlighting
# ---------- History ----------
HISTFILE="$HOME/.zsh_history"
HISTSIZE=5000
SAVEHIST=5000
setopt APPEND_HISTORY
setopt SHARE_HISTORY
setopt HIST_IGNORE_ALL_DUPS
setopt HIST_REDUCE_BLANKS
setopt HIST_IGNORE_SPACE
setopt EXTENDED_HISTORY
# ---------- Shell ----------
setopt AUTO_CD
setopt INTERACTIVE_COMMENTS
setopt AUTO_PUSHD
setopt PUSHD_IGNORE_DUPS
setopt PUSHD_SILENT
# ---------- Lazy NVM ----------
export NVM_DIR="$HOME/.nvm"
load-nvm() {
unset -f node npm npx nvm
[[ -s "$NVM_DIR/nvm.sh" ]] && source "$NVM_DIR/nvm.sh"
}
for cmd in node npm npx nvm; do
eval "$cmd() {
load-nvm
command $cmd \"\$@\"
}"
done
# Local bin
export PATH="$HOME/.local/bin:$PATH"Reload shell:
source ~/.zshrcmacos-icon = retro
window-padding-x = 1
window-padding-y = 1
copy-on-select = clipboard
window-theme = dark
clipboard-read = allow
theme = Brogrammer
background = #131313
foreground = #d6dbe5
selection-background = #1f1f1f
selection-foreground = #d6dbe5
cursor-color = #b9b9b9
cursor-text = #101010
palette = 0=#1f1f1f
palette = 1=#f81118
palette = 2=#2dc55e
palette = 3=#ecba0f
palette = 4=#2a84d2
palette = 5=#4e5ab7
palette = 6=#1081d6
palette = 7=#d6dbe5
palette = 8=#d6dbe5
palette = 9=#de352e
palette = 10=#1dd361
palette = 11=#f3bd09
palette = 12=#1081d6
palette = 13=#5350b9
palette = 14=#0f7ddb
palette = 15=#ffffff

Damn, Super Fast and smooth! Thank you!