# ============================================================================== # ENVIRONMENT VARIABLES # ============================================================================== # Disable fish greeting set -g fish_greeting set -g fish_prompt_pwd_dir_length 999 set -gx XDG_CONFIG_HOME $HOME/.config set -gx XDG_DATA_HOME $HOME/.local/share set -gx XDG_CACHE_HOME $HOME/.cache set -gx XDG_STATE_HOME $HOME/.local/state set -gx GOOGLE_API_KEY "no" set -gx GOOGLE_DEFAULT_CLIENT_ID "no" set -gx GOOGLE_DEFAULT_CLIENT_SECRET "no" # Core settings set -gx EDITOR "nvim" set -gx VISUAL "nvim" set -gx MANPAGER "nvim +Man!" set -gx BROWSER firefox # set -gx TERM xterm-256color set -gx COLORTERM truecolor set -gx LANG "en_US.UTF-8" set -gx LC_ALL "en_US.UTF-8" # Development set -gx DEBUG 1 set -gx GOPATH "$HOME/.go" set -gx GOCACHE "$HOME/.go/cache" set -gx GOROOT /usr/local/go set -gx PATH /usr/local/go/bin $GOPATH/bin $PATH # Direnv direnv hook fish | source # ============================================================================== # FZF configuration # ============================================================================== set -gx FZF_DEFAULT_OPTS " --height 40% --layout=reverse --border --ansi --preview-window=down:30% --bind 'ctrl-d:preview-page-down,ctrl-u:preview-page-up' --color=fg:#ffffff,header:#f38ba8,info:#cba6ac,pointer:#f5e0dc --color=marker:#f5e0dc,fg+:#cdd6f4,prompt:#cba6ac,hl+:#f38ba8" set -gx FZF_DEFAULT_COMMAND 'fdfind --exclude={.git,.cache,.xmake,.zig-cache,build,tmp,node_modules,elpa} --type f -H' # ============================================================================== # PATH CONFIGURATION # ============================================================================== # Fish's 'fish_add_path' is smart: it checks if the dir exists and prevents duplicates. fish_add_path /var/lib/flatpak/exports/bin fish_add_path /usr/local/bin fish_add_path /usr/local/go/bin fish_add_path $GOPATH/bin fish_add_path "$HOME/bin" fish_add_path "$HOME/.local/bin" fish_add_path "$HOME/.local/share/flatpak/exports/bin" fish_add_path "$HOME/.npm-global/bin" fish_add_path "$HOME/.odin/" # ============================================================================== # ALIASES & ABBREVIATIONS # ============================================================================== # List commands alias ls='ls -lh --color=auto --group-directories-first' alias ll='ls -lAh --color=auto --group-directories-first' alias la='ls -la --color=auto --group-directories-first' alias l='ls -CF --color=auto' alias tree='tree --dirsfirst -C' # Safety aliases alias rm='rm -I --preserve-root' alias mv='mv -i' alias cp='cp -i' alias ln='ln -i' # System information alias df='df -h' alias du='du -h' alias free='free -h' alias bat='bat --theme="ansi" --paging=never' # Application shortcuts alias vi='nvim' alias :q='exit' alias files='thunar .' alias fetch='pfetch' # Custom shortcuts alias reload='source ~/.config/fish/config.fish' alias dots='cd ~/.dotfiles && nvim' alias doti='bash ~/.dotfiles/install.sh -i' alias dotl='bash ~/.dotfiles/install.sh -l' alias myip='curl ipinfo.io/ip; echo ""' alias query='xbps-query -Rs' alias commits='git log origin/main..HEAD --oneline' ## Basic project picker using mini sessions and neovim function pp set project ( find ~/Projects -mindepth 1 -maxdepth 1 -type d | awk -F/ '{print $NF "\t" $0}' | fzf --with-nth=1 ) if test -z "$project" return end set project (echo $project | cut -f2) cd $project && clear end # ============================================================================== # PROMPT COLORS # ============================================================================== set -l user_color (set_color green) set -l host_color (set_color blue) set -l path_color (set_color cyan) # Fish's built-in git prompt configuration set -eg ___fish_git_prompt_char_stateseparator set -g __fish_git_prompt_show_informative_status 1 set -g __fish_git_prompt_color_branch magenta --bold set -g __fish_git_prompt_color_stagedstate yellow set -g __fish_git_prompt_color_invalidstate red set -g __fish_git_prompt_color_cleanstate green --bold set -g __fish_git_prompt_separator ' ' set -g __fish_git_prompt_char_dirtystate '+' set -g __fish_git_prompt_char_stagedstate '●' set -g __fish_git_prompt_char_untrackedfiles ''