dotfiles/shell/bashrc
2024-12-24 17:14:19 -06:00

121 lines
3.1 KiB
Bash

#!/bin/bash
# $ printf '[ -f ~/.config/shell/bashrc ] && . ~/.config/shell/bashrc' | sudo tee -a /etc/bash.bashrc
case $- in
*i*) ;;
*) return;;
esac
if ! shopt -oq posix; then
[ -f /usr/share/bash-completion/bash_completion ] &&
. /usr/share/bash-completion/bash_completion
[ -f /etc/bash_completion ] &&
. /etc/bash_completion
fi
bind "set completion-ignore-case on"
shopt -s checkwinsize
shopt -s histappend
shopt -s cdspell
shopt -s autocd
set -o vi
HISTCONTROL=ignoreboth
HISTIZE=
HISTFILESIZE=
format_workdir() {
CODE="$?"
ROOT_DIR="$(git rev-parse --show-toplevel 2>/dev/null)"
[ -n "$ROOT_DIR" ] &&
ROOT_DIR="${ROOT_DIR##*/}" &&
printf '\033[34m%s\033[0m ' "$ROOT_DIR"
return "$CODE"
}
format_git_branch() {
CODE="$?"
GIT_BRANCH="$(git branch 2>/dev/null | sed '/\*/!d;s/^\*\s*//g;s/\s*$//g')"
[ -n "$GIT_BRANCH" ] && printf "\033[1m\033[35m%s\033[0m " "$GIT_BRANCH"
return "$CODE"
}
format_prompt() {
CODE="${1}"
if [ "${CODE}" != 0 ] ; then
printf '\033[31m\033[1m>\033[0m '
else
printf '\033[32m>\033[0m '
fi
}
PS1='\[\033[2m\]\A\[\033[0m\] \
$(format_workdir ${?})\
$(format_git_branch ${?})\
$(format_prompt ${?})\
'
! command -v sudo >/dev/null 2>&1 &&
alias sudo="doas" &&
complete -cf doas
alias \
src="cd $HOME/.local/src/ && ls" \
cfg="cd $HOME/.config/ && ls" \
tmp="cd $HOME/Desktop/temp/ && ls" \
dsk="cd $HOME/Desktop/ && ls" \
prj="cd $HOME/Desktop/projects && ls" \
doc="cd $HOME/Documents/ && ls" \
dow="cd $HOME/Downloads/ && ls" \
mus="cd $HOME/Music/ && ls" \
prt="cd $HOME/Pictures/Screenshots/ && ls" \
bkg="cd $HOME/Pictures/Backgrounds/ && ls" \
img="cd $HOME/Pictures/ && ls" \
vid="cd $HOME/Videos/ && ls" \
EZA_OPTS="--git --group-directories-first --icons --time-style=long-iso"
command -v exa >/dev/null 2>&1 &&
alias la="exa $EZA_OPTS -alghUum" &&
alias lt="exa $EZA_OPTS -T -L 2" &&
alias ll="exa $EZA_OPTS -alg" &&
alias ls="exa $EZA_OPTS -1"
command -v eza >/dev/null 2>&1 &&
alias la="eza $EZA_OPTS -alghUum" &&
alias lt="eza $EZA_OPTS -T -L 2" &&
alias ll="eza $EZA_OPTS -alg" &&
alias ls="eza $EZA_OPTS -1"
command -v trash >/dev/null 2>&1 && alias rm="trash"
alias \
fzf="fzf --cycle --reverse" \
diff="diff --color=auto" \
grep="grep --color=auto" \
calc="bc -l" \
cp="cp -iv" \
mv="mv -iv" \
vim="nvim" \
df-short="df -h | grep -v '\s/dev.*$\|\s/run.*$\|\s/boot.*$'" \
qr-png="qrencode -s 16 -o qr.png" \
qr="qrencode -t ansiutf8" \
clip="xsel -ib" \
em="emacsclient -c -a 'emacs' $@" \
wget="wget --hsts-file=$XDG_DATA_HOME/wget/wget-hsts" \
ssh="ssh ${SSH_CONFIG} " \
[ -f ~/.config/shell/kit ] && . ~/.config/shell/kit
for func in ~/.config/shell/functions/* ; do
[ -f "$func" ] && . $func
done
if [ "$(tty)" = "/dev/tty1" ] ; then
sleep 0.5
amixer &
exec startx
#exec sway
elif [ "$(tty)" = "/dev/tty2" ] ; then
sleep 0.5
exec /usr/lib/plasma-dbus-run-session-if-needed /usr/bin/startplasma-wayland
fi