112 lines
2.9 KiB
Text
112 lines
2.9 KiB
Text
# .bashrc
|
|
|
|
###########################
|
|
# Essential Shell Stuff #
|
|
###########################
|
|
|
|
export PATH="$HOME/.local/bin:$PATH"
|
|
export PATH="$HOME/.cargo/bin:$PATH"
|
|
set +h
|
|
[[ $- == *i* ]] && bind -f ~/.inputrc
|
|
|
|
shopt -s histappend
|
|
HISTCONTROL=ignoreboth
|
|
HISTSIZE=32768
|
|
HISTFILESIZE="${HISTSIZE}"
|
|
|
|
if [[ ! -v BASH_COMPLETION_VERSINFO && -f /usr/share/bash-completion/bash_completion ]]; then
|
|
source /usr/share/bash-completion/bash_completion
|
|
fi
|
|
|
|
export SUDO_EDITOR="$EDITOR"
|
|
export SYSTEMD_EDITOR="$EDITOR"
|
|
export BAT_THEME=ansi
|
|
|
|
force_color_prompt=yes
|
|
color_prompt=yes
|
|
|
|
if command -v mise &> /dev/null; then
|
|
eval "$(mise activate bash)"
|
|
fi
|
|
|
|
if command -v starship &> /dev/null; then
|
|
eval "$(starship init bash)"
|
|
fi
|
|
|
|
if command -v zoxide &> /dev/null; then
|
|
eval "$(zoxide init bash)"
|
|
fi
|
|
|
|
if command -v fzf &> /dev/null; then
|
|
if [[ -f /usr/share/fzf/completion.bash ]]; then
|
|
source /usr/share/fzf/completion.bash
|
|
fi
|
|
if [[ -f /usr/share/fzf/key-bindings.bash ]]; then
|
|
source /usr/share/fzf/key-bindings.bash
|
|
fi
|
|
fi
|
|
|
|
###########################
|
|
# Filesystem Navigation #
|
|
###########################
|
|
|
|
alias ls='eza -lh --group-directories-first --icons=auto'
|
|
alias lsa='ls -a'
|
|
alias lt='eza --tree --level=2 --long --icons --git'
|
|
alias lta='lt -a'
|
|
alias ff="fzf --preview 'bat --style=numbers --color=always {}'"
|
|
alias cd="zd"
|
|
zd() {
|
|
if [ $# -eq 0 ]; then
|
|
builtin cd ~ && return
|
|
elif [ -d "$1" ]; then
|
|
builtin cd "$1"
|
|
else
|
|
z "$@" && printf "\U000F17A9 " && pwd || echo "Error: Directory not found"
|
|
fi
|
|
}
|
|
open() {
|
|
xdg-open "$@" >/dev/null 2>&1 &
|
|
}
|
|
|
|
alias ..='cd ..'
|
|
alias ...='cd ../..'
|
|
alias ....='cd ../../..'
|
|
alias .....='cd ../../../../'
|
|
|
|
if [ -f "$HOME/.config/user-dirs.dirs" ]; then
|
|
source "$HOME/.config/user-dirs.dirs"
|
|
fi
|
|
|
|
alias dcim="cd ~/dcim"
|
|
alias docs="cd ${XDG_DOCUMENTS_DIR:-$HOME/Documents}"
|
|
alias notes="cd ${XDG_DOCUMENTS_DIR:-$HOME/Documents}/lib && ls"
|
|
alias dl="cd ${XDG_DOWNLOAD_DIR:-$HOME/Downloads}"
|
|
alias dt="cd ${XDG_DESKTOP_DIR:-$HOME/Desktop}"
|
|
alias music="cd ${XDG_MUSIC_DIR:-$HOME/Music}"
|
|
alias pics="cd ${XDG_PICTURES_DIR:-$HOME/Pictures}"
|
|
alias vids="cd ${XDG_VIDEOS_DIR:-$HOME/Videos}"
|
|
|
|
repo() {
|
|
local SRC_DIRECTORY="${1:-$HOME/src}"
|
|
local repo=$(
|
|
find "${SRC_DIRECTORY}" \
|
|
-mindepth 1 \
|
|
-maxdepth 3 \
|
|
-type d \
|
|
-exec test -d "{}/.git" \; -print \
|
|
| sed "s|${SRC_DIRECTORY}/||" \
|
|
| fzf \
|
|
--preview "([ -f $SRC_DIRECTORY/{}/README.md ] && bat --style=plain --color=always $SRC_DIRECTORY/{}/README.md || echo 'No README'; echo; git -C $SRC_DIRECTORY/{} status --short --branch)" \
|
|
--preview-window=up:60%) \
|
|
|| return
|
|
cd "${SRC_DIRECTORY}/$repo" || { echo "Failed to cd"; return; }
|
|
}
|
|
|
|
###########################
|
|
# Miscellaneous #
|
|
###########################
|
|
|
|
compress() { tar -czf "${1%/}.tar.gz" "${1%/}"; }
|
|
alias decompress="tar -xzf"
|
|
|