1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
|
# ========================= Omarchy ZSH ========================= #
# If not running interactively, don't do anything
[[ $- != *i* ]] && return
# Load zsh options, keybindings, and completion
[[ -f /usr/share/omarchy-zsh/shell/zoptions ]] && source /usr/share/omarchy-zsh/shell/zoptions
# Load shared shell configuration (aliases, functions, environment, tool init)
[[ -f /usr/share/omarchy-zsh/shell/all ]] && source /usr/share/omarchy-zsh/shell/all
# ========================= Environment Variables ========================== #
export EDITOR=nvim
export VISUAL=nvim
export PAGER='bat'
export BAT_THEME="Catppuccin Mocha"
# =============================== Custom Plugins =============================== #
# Autosuggestions
source ~/.local/share/zsh/plugins/zsh-autosuggestions/zsh-autosuggestions.zsh
# Colored Man Pages
source ~/.local/share/zsh/plugins/colored-man-pages.plugin.zsh
# =============================== Custom Completions =============================== #
source ~/.local/share/zsh/extra/zellij-completions.zsh
source ~/.local/share/zsh/extra/atuin.zsh
# ======================== ZSH Options ========================= #
setopt autocd
setopt notify
setopt numericglobsort
setopt promptsubst
# ======================== ZSH History ========================= #
unset HISTFILE
unsetopt share_history
unsetopt append_history
unsetopt inc_append_history
unsetopt extended_history
# =============================== Aliases =============================== #
# --------------- Git Shortcuts --------------- #
alias gst='git status' # Show git status
alias bgr='git branch' # List branches
alias gcm='git commit -m' # Commit with message
alias gammend='git commit --amend' # Amend last commit
alias gamendnm='git commit --amend --no-edit' # Amend last commit without changing message
alias glog='git log' # Show git log
alias gdff='git diff' # Show git diff
alias gpull='git pull' # Pull latest changes
alias gfetch='git fetch' # Fetch latest changes
alias gpush='git push' # Push changes
alias gadd='git add' # Add files to staging
alias gcl='git clone' # Clone a repository
alias guncommit='git reset --soft HEAD~1' # Undo last commit but keep changes
alias gcheckout='git checkout -b' # Git Checkout branch
alias github="cd $HOME/Documents/Github" # Go to Github Directory
# --------------- Tig Shortcuts ---------------
alias t='tig' # Start tig
alias tb='tig blame' # Start tig blame
alias tst='tig status' # Start tig status
alias tlog='tig log' # Start tig log
alias tdf='tig diff' # Start tig diff
# --------------- File & Directory Navigation ---------------
alias ..='cd ..' # Go up one directory
alias ...='cd ../..' # Go up two directories
alias ....='cd ../../..' # # Go up three directories
mkcd() { mkdir -p "$1" && cd "$1"} # Create a directory and navigate into it
alias edit-here='code .' # Open current directory in VS Code
alias here='xdg-open .' # Open current directory in file explorer
# --------------- File Operations ---------------
alias l='eza -lh --icons=auto --group-directories-first' # List files with human-readable sizes and directories first
alias la='eza -lah --icons=auto --group-directories-first' # List all files with details and color
alias ll='eza -lh --icons=always --group-directories-first' # Long list with exa showing directory sizes
alias lf='eza -lh --icons=always --only-files' # List only files using exa
alias lh='eza -lha --icons=always | grep "^\."' # List only hidden files
alias back='cd -' # Go back to previous directory
alias lt='eza --tree --level=2 --long --icons --git' # List Tree view
alias lta='eza --tree --level=2 --long --icons --git -a' # List Tree view including hidden files
alias tree='eza --tree' # List files in a tree structure
alias lgrep='ls -lah | grep' # Search files in current directory with ls and grep
# --------------- Process & System Control ---------------
alias cls='clear' # Clear the console
alias edit-profile='code ~/.zshrc' # Edit Profile
alias zshrc='nvim ~/.zshrc' # Edit Profile
edit() { code "$1" } # Open files in VS Code
# --------------- Hashing ---------------
alias md5="md5sum" # Alias md5 to md5sum for consistency across systems
alias sha1="sha1sum" # Alias sha1 to sha1sum for consistency across systems
alias sha256="sha256sum" # Alias sha256 to sha256sum for consistency
# --------------- External Tools ---------------
alias ji='zi' # Alias ji to zoxide's ji function for fuzzy directory navigation
alias cat='bat' # Use bat instead of cat for better file viewing with syntax highlighting and paging
alias help='tldr --color always' # Use tldr with color support
alias lg='lazygit' # Launch LazyGit
alias z='zellij' # Launch Zellij
alias lazyzellij='lzj' # Zellij Session Manager
alias top='btop' # Launch btop
alias htop='btop' # Launch btop
alias neofetch='fastfetch' # Launch FastFetch
alias gitfetch='onefetch' # Use onefetch for git repository information
# --------------- Miscellaneous ---------------
alias grep='grep --color=auto' # Highlight matching text in grep
alias rm='rm -i' # Prompt before deleting files
alias mkdir='mkdir -p' # Create parent directories as needed
alias ports='ss -tulwn' # Show listening ports
alias dfh='df -h' # Human-readable disk usage
alias dus='du -sh *' # Summarize folder sizes
alias mem='free -h' # Memory usage
alias cpuinfo='lscpu' # CPU info
alias nano='nvim' # Use Neovim instead of nano
alias vim='nvim' # Use Neovim instead of vim
alias vi='nvim' # Use Neovim instead of vi
alias emacs='nvim' # Use Neovim instead of emacs
alias myip='curl ipinfo.io/ip' # Get public IP address
alias hb='hastebin' # Upload file to hastebin
# Print stsyem path variables
path(){ local i=1 p; for p in "${(@)path}"; do printf "\e[38;5;75m%2d\e[0m \e[38;5;114m%s\e[0m\n" "$i" "$p"; ((i++)); done; }
# =============================== fnm =============================== #
autoload -U add-zsh-hook
function load_node_version() {
local dir="$PWD"
local version_file=""
while [[ "$dir" != "/" ]]; do
if [[ -f "$dir/.nvmrc" ]]; then
version_file="$dir/.nvmrc"
break
elif [[ -f "$dir/.node-version" ]]; then
version_file="$dir/.node-version"
break
fi
dir="${dir:h}"
done
if [[ -n "$version_file" ]]; then
eval "$(fnm env --shell zsh)"
fnm use --install-if-missing
else
export PATH="${PATH//\/run\/user\/1000\/fnm_multishells[^:]##:/}"
fi
}
add-zsh-hook chpwd load_node_version
load_node_version
# =============================== keybindings =============================== #
# Open My Zellij Session Manager
zij-widget() {
echo
zij
echo
echo
zle reset-prompt
}
zle -N zij-widget
bindkey -M emacs '^[z' zij-widget
# Open My Tmux Session Manager
tij-widget() {
echo
tij
echo
echo
zle reset-prompt
}
zle -N tij-widget
bindkey -M emacs '^[t' tij-widget
# Open Hastebin
hb-widget() {
zle -I
hb
zle reset-prompt
}
zle -N hb-widget
bindkey -M emacs '^[b' hb-widget
|