## ____ __ ## / __ \_________ _/ /_____ ## / / / / ___/ __ `/ //_/ _ \ ## / /_/ / / / /_/ / ,< / __/ Clay Gomera (Drake) ## /_____/_/ \__,_/_/|_|\___/ My custom bash config ## ### EXPORT export TERM="xterm-256color" # getting proper colors export HISTCONTROL=ignoredups:erasedups # no duplicate entries export EDITOR="nvim" # $EDITOR use neovim export READER="zathura" export TERMINAL="alacritty" export BROWSER="qutebrowser" export WM="dwm" export XDG_DATA_HOME=${XDG_DATA_HOME:="$HOME/.local/share"} export XDG_CACHE_HOME=${XDG_CACHE_HOME:="$HOME/.cache"} export XDG_CONFIG_HOME=${XDG_CONFIG_HOME:="$HOME/.config"} # Use bash-completion, if available [[ $PS1 && -f /usr/share/bash-completion/bash_completion ]] && \ . /usr/share/bash-completion/bash_completion # If not running interactively, don't do anything [[ $- != *i* ]] && return ### SET VI MODE ### # Comment this line out to enable default emacs-like bindings set -o vi bind -m vi-command 'Control-l: clear-screen' bind -m vi-insert 'Control-l: clear-screen' ### PATH if [ -d "$HOME/.bin" ] ; then PATH="$HOME/.bin:$PATH" fi if [ -d "$HOME/.local/bin" ] ; then PATH="$HOME/.local/bin:$PATH" fi if [ -d "$HOME/Applications" ] ; then PATH="$HOME/Applications:$PATH" fi ### CHANGE TITLE OF TERMINALS case ${TERM} in xterm*|rxvt*|Eterm*|aterm|kterm|gnome*|alacritty|st|konsole*) PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME%%.*}:${PWD/#$HOME/\~}\007"' ;; screen*) PROMPT_COMMAND='echo -ne "\033_${USER}@${HOSTNAME%%.*}:${PWD/#$HOME/\~}\033\\"' ;; esac ### SHOPT shopt -s autocd # change to named directory shopt -s cdspell # autocorrects cd misspellings shopt -s cmdhist # save multi-line commands in history as single line shopt -s dotglob shopt -s histappend # do not overwrite history shopt -s expand_aliases # expand aliases shopt -s checkwinsize # checks term size when bash regains control #ignore upper and lowercase when TAB completion bind "set completion-ignore-case on" ### ARCHIVE EXTRACTION # usage: ex ex () { if [ -f "$1" ] ; then case $1 in *.tar.bz2) tar xjf $1 ;; *.tar.gz) tar xzf $1 ;; *.bz2) bunzip2 $1 ;; *.rar) unrar x $1 ;; *.gz) gunzip $1 ;; *.tar) tar xf $1 ;; *.tbz2) tar xjf $1 ;; *.tgz) tar xzf $1 ;; *.zip) unzip $1 ;; *.Z) uncompress $1;; *.7z) 7z x $1 ;; *.deb) ar x $1 ;; *.tar.xz) tar xf $1 ;; *.tar.zst) unzstd $1 ;; *) echo "'$1' cannot be extracted via ex()" ;; esac else echo "'$1' is not a valid file" fi } ### ALIASES # navigation up () { local d="" local limit="$1" # Default to limit of 1 if [ -z "$limit" ] || [ "$limit" -le 0 ]; then limit=1 fi for ((i=1;i<=limit;i++)); do d="../$d" done # perform cd. Show error if cd fails if ! cd "$d"; then echo "Couldn't go up $limit dirs."; fi } alias ..='cd ..' alias .2='cd ../..' alias .3='cd ../../..' alias .4='cd ../../../..' alias .5='cd ../../../../..' # bat as cat alias cat='bat' # editors alias vim='nvim' # Changing "ls" to "exa" alias ls='exa -al --color=always --group-directories-first' # my preferred listing alias la='exa -a --color=always --group-directories-first' # all files and dirs alias ll='exa -l --color=always --group-directories-first' # long format alias lt='exa -aT --color=always --group-directories-first' # tree listing alias l.='exa -a | egrep "^\."' # xbps alias xb-up='sudo xbps-install -Su && xcheckrestart' # Refresh pkglist & update standard pkgs alias xb-get='sudo xbps-install -S' # Install a package alias xb-rmv='sudo xbps-remove -R' # Remove a package with all its dependencies alias xb-rmv-sec='sudo xbps-remove' # Remove a package with all its dependencies (secure way) alias xb-qry='sudo xbps-query' # Repo query alias xb-cln='sudo xbps-remove -o && sudo xbps-remove -O' # remove orphaned packages # Colorize grep output (good for log files) alias grep='grep --color=auto' alias egrep='egrep --color=auto' alias fgrep='fgrep --color=auto' # confirm before overwriting something alias rm='rm -i' alias mv='mv -i' alias cp='cp -i' # git alias addup='git add -u' alias addall='git add .' alias branch='git branch' alias checkout='git checkout' alias clone='git clone' alias commit='git commit -m' alias fetch='git fetch' alias pull='git pull origin' alias push='git push origin' alias stat='git status' # 'status' is protected name so using 'stat' instead alias tag='git tag' alias newtag='git tag -a' # adding flags alias df='df -h' # human-readable sizes alias free='free -m' # show sizes in MB alias newsboat='newsboat -u ~/.config/newsboat/urls' # start newsboat with my urls file # ani-cli alias ani='ani-cli' alias ani-q='ani-cli -q' # to select video quality # ytfzf alias yt='ytfzf -f -t' alias yt-m='ytfzf -m' # notflix alias nt='notflix' # mount and unmount drives alias mnt='sudo mount' alias umnt='sudo umount' # mixers alias mx='pulsemixer' alias amx='alsamixer' # music player alias mk='mocp' # power management alias po='loginctl poweroff' alias sp='loginctl suspend' alias rb='loginctl reboot' # file manager alias fm='./.config/vifm/scripts/vifmrun' alias vifm='./.config/vifm/scripts/vifmrun' # ps alias psa="ps auxf" alias psgrep="ps aux | grep -v grep | grep -i -e VSZ -e" alias psmem='ps auxf | sort -nr -k 4' alias pscpu='ps auxf | sort -nr -k 3' # get error messages from journalctl alias jctl="journalctl -p 3 -xb" # youtube-dl alias yta-aac="youtube-dl --extract-audio --audio-format aac " alias yta-best="youtube-dl --extract-audio --audio-format best " alias yta-flac="youtube-dl --extract-audio --audio-format flac " alias yta-m4a="youtube-dl --extract-audio --audio-format m4a " alias yta-mp3="youtube-dl --extract-audio --audio-format mp3 " alias yta-opus="youtube-dl --extract-audio --audio-format opus " alias yta-vorbis="youtube-dl --extract-audio --audio-format vorbis " alias yta-wav="youtube-dl --extract-audio --audio-format wav " alias ytv-best="youtube-dl -f bestvideo+bestaudio " # Network Manager and bluetooth alias netstats='nmcli dev' alias wfi='nmtui-connect' alias wfi-scan='nmcli dev wifi list' alias wfi-edit='nmtui-edit' alias wfi-on='nmcli radio wifi on' alias wfi-off='nmcli radio wifi off' alias blt='bluetoothctl' ### SETTING THE STARSHIP PROMPT ### eval "$(starship init bash)"