# fish config ## Variables set PATH $PATH $HOME/.local/bin $HOME/.mix $HOME/.mix/escripts $HOME/.cargo/bin set DOTFILES $HOME/.dotfiles set NOTES $HOME/Documents/Sync/Notes/MyVault set TERMINAL 'alacritty' set TERM 'xterm' set EDITOR 'nano' ## Environment setup # Apply .profile: use this to put fish compatible .profile stuff in if test -f ~/.fish_profile source ~/.fish_profile end # Hide welcome message set fish_greeting set VIRTUAL_ENV_DISABLE_PROMPT "1" set -x MANPAGER "sh -c 'col -bx | bat -l man -p'" ## Functions function backup --argument filename cp $filename $filename.bak end ## Useful aliases # Reload fish config alias r='clear && source ~/.config/fish/config.fish' # Nicer ls if nothing els is available alias ls="ls" alias ll="ls -lh" alias la="ls -A" alias lt="ls -ald .*" # Replace ls with exa if test -e /usr/bin/exa alias ls='exa -al --color=always --group-directories-first --icons' # preferred listing alias la='exa -a --color=always --group-directories-first --icons' # all files and dirs alias ll='exa -l --color=always --group-directories-first --icons' # long format alias lt='exa -aT --color=always --group-directories-first --icons' # tree listing alias l.='exa -ald --color=always --group-directories-first --icons .*' # show only dotfiles end # Add apt aliases for updating / upgrading if available if test -e (whereis apt) alias up="sudo apt update && sudo apt list --upgradable" alias ug="sudo apt upgrade" end # Elixir / phoenix aliases alias phx="iex -S mix phx.server" # Systemd alias alias start="sudo systemctl start" alias restart="sudo systemctl restart" alias stop="sudo systemctl stop" alias enable="sudo systemctl enable" alias disable="sudo systemctl disable" alias sta="sudo systemctl status" ## Helpers # Generate SSH key alias sshkey='ssh-keygen -t ed25519 -f $HOME/.ssh/id_ed25519 -C "(whoami)@(hostname)-(date +'%y%m%d')"' # Get the error messages from journalctl alias jctl="journalctl -p 3 -xb" # Recent installed packages alias rip="expac --timefmt='%Y-%m-%d %T' '%l\t%n %v' | sort | tail -200 | nl" # Cleanup orphaned packages alias cleanup='sudo pacman -Rns (pacman -Qtdq)' if status is-interactive # Commands to run in interactive sessions can go here end ## Load asdf if available if test -e ~/.asdf/asdf.fish source ~/.asdf/asdf.fish end ## Run fastfetch if session is interactive if status --is-interactive && type -q fastfetch fastfetch --load-config neofetch end