dotfiles/fish/config.fish

138 lines
4.3 KiB
Fish

# Only run in interactive sessions
if status is-interactive
# Prompt: Starship
if type -q starship
starship init fish | source
else
echo "Starship is not installed. Install it from https://starship.rs/"
end
# Flashing cursor
printf '\e[5 q'
# Bind Ctrl+U to clear the line backward
bind \cU backward-kill-line
end
# PATH setup
set -gx PYENV_ROOT "$HOME/.pyenv"
set -gx PATH $HOME/bin $HOME/.local/bin /usr/local/bin $HOME/go/bin $HOME/.cargo/bin $PYENV_ROOT/bin $HOME/.local/share/gem/ruby/3.4.0/bin $PATH
# Pyenv init
if type -q pyenv
pyenv init - | source
end
# Enable auto-correction
set -g fish_autocorrect true
# Aliases
alias nl 'nl -ba'
alias cat bat
alias bat 'bat --theme=gruvbox-dark'
alias find fd
alias fd 'fd -H'
#alias grep rg
alias pdf evince
alias ls 'eza -lah --grid -s modified --smart-group --group-directories-first'
alias l 'eza -ah --grid -s modified --smart-group --group-directories-first'
alias cp 'cp -riv'
alias mv 'mv -iv'
alias mkdir 'mkdir -pv'
alias less 'less -FSRXc'
# CAUSES PROBLEMS WITH git.fish autocomplection alias path 'echo $PATH | tr ":" "\n"'
alias myip 'curl ipinfo.io'
alias moan_myip='sh -c '\''X=$(echo "aHR0cHM6Ly93d3cubW9hbm15aXAuY29tLw==" | base64 -d); curl -s "$X" | grep -o "output/[0-9.]*.mp3" | sed "s|^|$X|" | xargs -n1 -I{} sh -c "wget -qO- \"{}\" | (mpg123 - || ffplay -nodisp -autoexit -)"'\''' # sh -c 'X=$(echo "aHR0cHM6Ly93d3cubW9hbm15aXAuY29tLw==" | base64 -d); curl -s "$X" | grep -o "output/[0-9.]*.mp3" | sed "s|^|$X|" | xargs -n1 -I{} sh -c "wget -qO- \"{}\" | (mpg123 - || ffplay -nodisp -autoexit -)"'
alias ss 'ss -tulpn'
alias pscpu 'ps -eo pid,ppid,cmd,%mem,%cpu,etime --sort=-%cpu | head -n 21'
alias psmem 'ps -eo pid,ppid,cmd,%mem,%cpu,etime --sort=-%mem | head -n 21'
alias c clear
alias weer weather
alias v nvim
alias rm 'rm -r'
alias httpx httpx-toolkit
alias copy wl-copy
alias android_files aft-mtp-cli
alias open_raid_drives 'sudo cryptsetup open /dev/md0 md0_crypt; and sudo mount /dev/mapper/md0_crypt /mnt/raid_storage'
# Weather function
function weather
if test "$argv[1]" = week
wthrr -f w $argv[2]
else if test -z "$argv[1]"
wthrr -f d
wthrr -f t
else
wthrr -f d $argv[1]
wthrr -f t $argv[1]
end
end
function extract
if test -f "$argv[1]"
set file "$argv[1]"
set filename (basename "$file")
set dirname (string replace -r '\.tar\.bz2$|\.tar\.gz$|\.tbz2$|\.tgz$|\.tar$|\.bz2$|\.gz$|\.zip$|\.Z$|\.7z$|\.xz$|\.rar$' '' "$filename")
mkdir -p "$dirname"
switch $file
case "*.tar.bz2"
tar xjf "$file" -C "$dirname"
case "*.tar.gz"
tar xzf "$file" -C "$dirname"
case "*.tbz2"
tar xjf "$file" -C "$dirname"
case "*.tgz"
tar xzf "$file" -C "$dirname"
case "*.tar"
tar xf "$file" -C "$dirname"
case "*.bz2"
bunzip2 -c "$file" >"$dirname/$dirname"
case "*.gz"
gunzip -c "$file" >"$dirname/$dirname"
case "*.zip"
unzip "$file" -d "$dirname"
case "*.Z"
uncompress -c "$file" >"$dirname/$dirname"
case "*.7z"
7z x "$file" -o"$dirname"
case "*.xz"
xz -dc "$file" >"$dirname/$dirname"
case "*.rar"
unrar x "$file" "$dirname"
case "*"
echo "'$file' cannot be extracted via extract()"
end
else
echo "'$argv[1]' is not a valid file"
end
end
# Arch Linux mirror ranking function
function mirrors
curl -s "https://archlinux.org/mirrorlist/?country=BE&country=DK&country=DE&country=IS&country=NL&protocol=https&ip_version=4&ip_version=6" |
sed -e 's/^#Server/Server/' -e '/^#/d' |
rankmirrors -n 10 - | sudo tee /etc/pacman.d/mirrorlist >/dev/null
end
#function !!
# eval (history --max=1)
#end
function __expand_bang_bang --on-event fish_preexec
# Get the current command line
set cmd (commandline)
# Get the last command from history
set last (history | head -n1)
# Replace !! with the last command
set new_cmd (string replace -r '!!' $last -- $cmd)
# Apply expansion if it changed
if test "$cmd" != "$new_cmd"
commandline -r $new_cmd
end
end