diff --git a/bashrc.txt b/bashrc.txt new file mode 100644 index 00000000..4c423331 --- /dev/null +++ b/bashrc.txt @@ -0,0 +1,273 @@ +# +# ~/.bashrc +# +if [ $TERM == "xterm-256color" ] ; then + neofetch +fi +# create custom env variables: +export cproj="/home/brian/Documents/Code/web_tutorials/socket_io" +# custom BROWSER env for ddgr: +#export BROWSER=firefox-developer-edition +export BROWSER=links + +http_proxy=http://127.0.0.1:8118/ +HTTP_PROXY=$http_proxy +export http_proxy HTTP_PROXY + +#enable vi keybindings in terminal and terminal applications +set -o vi + +# but keep ctrl l as the clear screen command bind -m vi-command 'Control-l: clear-screen' +bind -m vi-insert 'Control-l: clear-screen' + +# clears the history completely upon loading bash +cat /dev/null > ~/.bash_history && history -c + +[[ $- != *i* ]] && return +colors() { + local fgc bgc vals seq0 + + printf "Color escapes are %s\n" '\e[${value};...;${value}m' + printf "Values 30..37 are \e[33mforeground colors\e[m\n" + printf "Values 40..47 are \e[43mbackground colors\e[m\n" + printf "Value 1 gives a \e[1mbold-faced look\e[m\n\n" + + # foreground colors + for fgc in {30..37}; do + # background colors + for bgc in {40..47}; do + fgc=${fgc#37} # white + bgc=${bgc#40} # black + + vals="${fgc:+$fgc;}${bgc}" + vals=${vals%%;} + + seq0="${vals:+\e[${vals}m}" + printf " %-9s" "${seq0:-(default)}" + printf " ${seq0}TEXT\e[m" + printf " \e[${vals:+${vals+$vals;}}1mBOLD\e[m" + done + echo; echo + done +} + +[ -r /usr/share/bash-completion/bash_completion ] && . /usr/share/bash-completion/bash_completion + +# Change the window title of X terminals +case ${TERM} in + xterm*|rxvt*|Eterm*|aterm|kterm|gnome*|interix|konsole*) + PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME%%.*}:${PWD/#$HOME/\~}\007" ' + + ;; + screen*) + PROMPT_COMMAND='echo -ne "\033_${USER}@${HOSTNAME%%.*}:${PWD/#$HOME/\~}\033\\" ' + ;; +esac + +use_color=true + +# Set colorful PS1 only on colorful terminals. +# dircolors --print-database uses its own built-in database +# instead of using /etc/DIR_COLORS. Try to use the external file +# first to take advantage of user additions. Use internal bash +# globbing instead of external grep binary. +safe_term=${TERM//[^[:alnum:]]/?} # sanitize TERM +match_lhs="" +[[ -f ~/.dir_colors ]] && match_lhs="${match_lhs}$(<~/.dir_colors)" +[[ -f /etc/DIR_COLORS ]] && match_lhs="${match_lhs}$(/dev/null \ + && match_lhs=$(dircolors --print-database) +[[ $'\n'${match_lhs} == *$'\n'"TERM "${safe_term}* ]] && use_color=true + +if ${use_color} ; then + # Enable colors for ls, etc. Prefer ~/.dir_colors #64489 + if type -P dircolors >/dev/null ; then + if [[ -f ~/.dir_colors ]] ; then + eval $(dircolors -b ~/.dir_colors) + elif [[ -f /etc/DIR_COLORS ]] ; then + eval $(dircolors -b /etc/DIR_COLORS) + fi + fi + + if [[ ${EUID} == 0 ]] ; then + PS2='\[\033[01;31m\][\h\[\033[01;36m\] \W\[\033[01;31m\]]\$\[\033[00m\] ' + else + PS1='\[\033[01;32m\][\u@\h\[\033[01;37m\] \W\[\033[01;32m\]]\$\[\033[00m\] ' + fi + + alias ls='ls --color=auto' + alias grep='grep --colour=auto' + alias egrep='egrep --colour=auto' + alias fgrep='fgrep --colour=auto' +else + if [[ ${EUID} == 0 ]] ; then + # show root@ when we don't have colors + PS1='\u@\h \W \$ ' + else + PS1='\u@\h \w \$ ' + fi +fi + +unset use_color safe_term match_lhs sh + +alias cp="cp -i" # confirm before overwriting something +alias df='df -h' # human-readable sizes +alias free='free -m' # show sizes in MB +alias np='nano -w PKGBUILD' +alias more=less + +xhost +local:root > /dev/null 2>&1 + +complete -cf sudo + +# Bash won't get SIGWINCH if another process is in the foreground. +# Enable checkwinsize so that bash will check the terminal size when +# it regains control. #65623 +# http://cnswww.cns.cwru.edu/~chet/bash/FAQ (E11) +shopt -s checkwinsize + +# No need to type cd when changing directories. +shopt -s autocd +# No need to have capitalization correct +shopt -s cdspell + +shopt -s expand_aliases + +# export QT_SELECT=4 + +# Enable history appending instead of overwriting. #139609 +shopt -s histappend + +# +# # ex - archive extractor +# # 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 ;; + *) echo "'$1' cannot be extracted via ex()" ;; + esac + else + echo "'$1' is not a valid file" + fi +} + +# Formats history command with dates/times +HISTTIMEFORMAT="%d/%m/%y %T " + +# Displays current git branch if there is any and also styles bash prompt +export PS1='\[\033[01;32m\][\u@\h\[\033[01;37m\] \W\[\033[01;32m\]]\$\033[01;37m\] $(git branch 2>/dev/null | grep '^*' | colrm 1 2)\n\033[01;32m└─▶ \033[37m' + +# Custom Bash Commands +alias .="cd" +alias home="xclear && cd /home/brian && clear && nf && history -c && hash -r" +alias docs="cd ~/Documents" +alias down="cd ~/Downloads" +alias pics="cd ~/Pictures" +alias music="cd ~/Music" +alias vids="cd ~/Videos" +alias notes="cd ~/Documents/notes" +alias scripts="cd ~/scripts" +alias config="cd ~/.config" +alias cache="cd ~/.cache" +alias Code="cd ~/Documents/Code" +alias cplus="cd ~/Documents/Code/cpp" +alias js="cd ~/Documents/Code/javascript" +alias py="cd ~/Documents/Code/python" +alias li="ls -l --color=auto" +alias ll="ls -liasSh --color=auto" +alias {lsdir,lsd}="ls -t -1" # list only the directories +alias {ex,esc}="exit" +alias {his,hist}="history" +alias mnt="doas mount /dev/sda1 /mnt/media/usb-drive" +alias umnt="doas umount /mnt/media/usb-drive" +alias bluepill="cmatrix -bm -C cyan" +alias redpill="cmatrix -bm -C red" +alias nf="neofetch" +alias btop="xfce4-terminal --geometry=284x53+0+0 -x btop" +alias chromium="chromium --incognito" +alias {firefox,ff}="firefox-developer-edition &" +alias {sq,sql,sqlite}="sqlcipher" +alias view="viewnior" +alias {json,jscrl,jsoncurl,jcrl}="jscurl" +alias word="wordgrinder" +alias spreadsheet="sc" +alias open="xdg-open" +alias pdf="pdftotext" +alias tree="tree -ad -L 3 --prune -C" +alias {nv,nvi}="nvim" +alias {mymux,memux,mmux}="tmux new-session \; send-keys 'nvim' C-m\; split-window -v -p 3\; send-keys '' C-m\; split-window -h -p 50\; send-keys 'ddgr' C-m\; select-pane -t 0\;" +alias {cproj,mproj,myproj}="cd '$cproj' && mmux" +alias tls="tmux ls" +alias ta="tmux a -t" +alias tkill="tmux kill-ses -t" +alias {mi,mic}="micro" +alias {mysql,maria,mdb}="mariadb" +alias {ss,wi,ssid}="doas iw wlan0 scan | grep SSID" +alias {ov,ovpn}="doas openvpn --config ~/.config/protonvpn/protonvpn_configs/us-free-02.protonvpn.com.udp.ovpn --auth-user-pass ~/.config/protonvpn/protonvpn.txt" # add &>/dev/null & to run in bg +alias {pvdown,pvpnd,pvd}="doas protonvpn d" +alias git-a="git add" +alias git-c="git commit -m" +alias git-p="git push" +alias git-l="git log" +alias xsel="xclip -sel clip" +alias catx="cat | xclip -sel clip" +alias xclear="echo '' | xclip && xclip -selection clipboard /dev/null" +alias pjson="json_pp | pygmentize -l json" # pipe expected json output through pjson to prettify it +alias ngrep="grep -v" +alias diff="diff -wy" +alias exifread="exiftool" +alias exifrm="exiftool -all=" +alias {html,html_pp}="hxnormalize -e" +alias {mop,market,stonks,stocks}="cd ~/aur_packages/mop && go run ./cmd/mop/main.go && cd" +alias {trans,translate}="gtktranslate" +alias ddgr="ddgr -n 25 --unsafe --proxy 127.0.0.1:8118" +alias {ddgo,ddg-onion}="links https://duckduckgogg42xjoc72x3sjasowoarfbgcmvfimaftt6twagswzczad.onion/" +alias {ddg,duck}="links https://duckduckgo.com/lite" +alias torch="links xmh57jrknzkhv6y3ls3ubitzfqnkrwxhopf5aygthi7d6rplyvk3noyd.onion/cgi-bin/omega/omega" +alias {hwiki,hiddenwiki}="links http://zqktlwiuavvvqqt4ybvgvi7tyo4hjl5xgfuvpdf6otjiycgwqbym2qad.onion/wiki/" +alias mpl="mplayer -fs" +alias {mloop,mploop}="mplayer -fs -loop 0" +alias {muse,musik,cmu}="cmus" +alias {hp,headphones}="pactl set-default-sink alsa_output.usb-FIIO_FiiO_USB_DAC-E10-01.analog-stereo" +alias {sp,speakers}="pactl set-default-sink alsa_output.pci-0000_0a_00.4.analog-stereo" +alias pulse="pamixer --set-volume" +alias {mu,mt,mute}="pamixer -t" +alias ytdl="youtube-dl" +alias ytdl-a="youtube-dl -x --audio-format mp3" +alias thinkorswim="~/thinkorswim/thinkorswim &" +alias {cl,cls}="clear" +alias shutdown="shutdown.sh" +alias reboot="reboot.sh" +alias log="xfce4-session-logout --logout:wq" +alias curltime="curl -w \"@$HOME/Documents/notes/curl-format.txt\" -o /dev/null -s" +alias weather="curl -s 'http://wttr.in' && inxi -w" +alias ipaddr="curl ifconfig.me ; echo ''" +alias killport="fuser -k" +alias rmorphans="doas pacman -Rs $(pacman -Qdtq)" +alias npm_upgrade="doas npm install -g npm@latest" +alias rm="newrm -vi" +alias {doasedit,sudoedit}="doas rnano" +alias shred="doas shred -uz" # shreds the file and overwrites it with 1s and 0s +alias indelible="doas chattr +i" # makes a file impossible to delete (except with sudo) + +export EDITOR=nvim +export PATH="$PATH:$GOPATH/bin:/home/brian/scripts:/home/brian/.local/bin" +export GREP_COLORS='ms=01;33' +[ -f ~/.fzf.bash ] && source ~/.fzf.bash + + +# BEGIN_KITTY_SHELL_INTEGRATION +if test -n "$KITTY_INSTALLATION_DIR" -a -e "$KITTY_INSTALLATION_DIR/shell-integration/bash/kitty.bash"; then source "$KITTY_INSTALLATION_DIR/shell-integration/bash/kitty.bash"; fi +# END_KITTY_SHELL_INTEGRATION