# Exports export PATH=$HOME/bin:/usr/local/bin:$HOME/.local/bin/:$PATH export ZSH="$HOME/.oh-my-zsh" ZSH_THEME="powerlevel10k/powerlevel10k" POWERLEVEL9K_MODE="nerdfont-complete" plugins=(git zsh-autosuggestions zsh-syntax-highlighting) export ZSH_COMPDUMP=$ZSH/cache/completions/.zcompdump-$HOST source $ZSH/oh-my-zsh.sh # If rc.local exists, source it [ -f ~/.local/rc.local ] && source ~/.local/rc.local # User-defined Aliases and Functions [[ ! -f ~/.shell_functions ]] || source ~/.shell_functions [[ ! -f ~/.shell_aliases ]] || source ~/.shell_aliases # ZSH History Options # Reference: https://unix.stackexchange.com/questions/273861/unlimited-history-in-zsh HISTFILE="$HOME/.zsh_history" HISTSIZE=10000 SAVEHIST=10000 setopt BANG_HIST # Treat the '!' character specially during expansion. setopt EXTENDED_HISTORY # Write the history file in the ":start:elapsed;command" format. setopt INC_APPEND_HISTORY # Write to the history file immediately, not when the shell exits. setopt SHARE_HISTORY # Share history between all sessions. setopt HIST_EXPIRE_DUPS_FIRST # Expire duplicate entries first when trimming history. setopt HIST_IGNORE_DUPS # Don't record an entry that was just recorded again. setopt HIST_IGNORE_ALL_DUPS # Delete old recorded entry if new entry is a duplicate. setopt HIST_FIND_NO_DUPS # Do not display a line previously found. setopt HIST_IGNORE_SPACE # Don't record an entry starting with a space. setopt HIST_SAVE_NO_DUPS # Don't write duplicate entries in the history file. setopt HIST_REDUCE_BLANKS # Remove superfluous blanks before recording entry. setopt HIST_VERIFY # Don't execute immediately upon history expansion. setopt HIST_BEEP # Beep when accessing nonexistent history. # Display Random Quote if command -v curl >/dev/null 2>&1; then QUOTE=$(curl -s https://files.planethawleywood.com/quotes.txt) if [ -n "$QUOTE" ]; then if command -v shuf >/dev/null 2>&1; then QUOTE=$(echo "$QUOTE" | shuf -n 1) fi if command -v cowsay >/dev/null 2>&1; then if command -v lolcat >/dev/null 2>&1; then echo "$QUOTE" | cowsay -f tux | lolcat else echo "$QUOTE" | cowsay -f tux fi elif command -v lolcat >/dev/null 2>&1; then echo "$QUOTE" | lolcat else echo "$QUOTE" fi fi fi # Instant Prompt Preamble # Enable Powerlevel10k instant prompt. Should stay close to the top of ~/.zshrc. # Initialization code that may require console input (password prompts, [y/n] # confirmations, etc.) must go above this block; everything else may go below. if [[ -r "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" ]]; then source "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" fi # If .fzf.zsh exists, source it [ -f ~/.fzf.zsh ] && source ~/.fzf.zsh # If .p10k.zsh exists, source it [[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh # If .zshrc.$USER exists, source it [[ ! -f ~/.zshrc.$USER ]] || source ~/.zshrc.$USER # If autojump installed, source it [[ ! -f /usr/share/autojump/autojump.zsh ]] || source /usr/share/autojump/autojump.zsh