dotfiles/sh/bash/.bashrc

168 lines
4.6 KiB
Bash
Raw Normal View History

#!/usr/bin/env bash
#
# bryson's bashrc
#
### aliases ###
alias sudo="doas"
# typos
alias l='ls'
alias sl='ls'
# always run with args
alias grep='grep --color=auto'
alias fgrep='fgrep --color=auto'
alias egrep='egrep --color=auto'
alias ls='ls --color=auto'
alias la='ls -a'
alias ll='ls -lh'
alias lla='ls -lha'
alias cp='cp -iv'
alias mv='mv -iv'
alias rm='rm -vI'
alias diff='diff --color=auto'
alias g++='g++ --std=c++20'
alias vim='vim -p'
alias gs='gs -dNOSAFER'
alias emacsclient='emacsclient -cn'
# cd shortcuts
alias ..='cd ..'
alias ...='cd ../..'
alias ....='cd ../../..'
alias b='cd -'
# copy an entire file
alias copy='xclip -sel c <'
# binary substitutions
# alias ed='fzf --height=15 --layout=reverse | sed "s/^/\"/g;s/$/\"/g" | xargs -ro vim'
# common combinations
alias dj='python manage.py'
alias smci='sudo make clean install'
alias smi='sudo make install'
alias lib='xrandr --output HDMI-A-0 --auto --output eDP --off && xset r rate 300 50 && feh --bg-fill ~/Pictures/Wallpapers/solid-gruvbox-2.png && xmodmap ~/.Xmodmap'
alias laptop='xrandr --output HDMI-A-0 --off --output eDP --auto && feh --bg-fill ~/Pictures/Wallpapers/solid-gruvbox-2.png'
alias mirror='xrandr --output HDMI-A-0 --auto && feh --bg-fill ~/Pictures/Wallpapers/solid-gruvbox-2.png && xmodmap ~/.Xmodmap'
alias hgrep='history | grep'
alias keys='xset r rate 300 50'
alias gits='git status'
alias mac="rm -rf __MACOSX/; rm \$(find . -name '.DS_Store')"
# fixes
alias fixwifi='sudo rc-service wpa_supplicant restart'
alias fixaudio='pacmd set-default-sink alsa_output.usb-0c76_USB_PnP_Audio_Device-00.analog-stereo'
alias fixjava='export _JAVA_AWT_WM_NONREPARENTING=1 && export AWT_TOOLKIT=MToolkit && wmname LG3D'
alias fixkeb='xmodmap ~/.Xmodmap ; xset r rate 200 80 '
# auto elevate
alias mount='sudo mount'
alias umount='sudo umount'
# other garbage
alias server="python3 /home/bryson/git/webserver/server.py"
### colors ###
# capitals are bold
# 'l' is 'light'
# 'd' is 'dark'
black='\e[0;30m'
BLACK='\e[1;30m'
dgray='\e[0;90m'
DGRAY='\e[1;90m'
red='\e[0;31m'
RED='\e[1;31m'
lred='\e[0;91m'
LRED='\e[1;91m'
green='\e[0;32m'
GREEN='\e[1;32m'
lgreen='\e[0;92m'
LGREEN='\e[1;92m'
yellow='\e[0;33m'
YELLOW='\e[1;33m'
lyellow='\e[0;93m'
LYELLOW='\e[1;93m'
blue='\e[0;34m'
BLUE='\e[1;34m'
lblue='\e[0;94m'
LBLUE='\e[1;94m'
magenta='\e[0;35m'
MAGENTA='\e[1;35m'
lmagenta='\e[0;95m'
LMAGENTA='\e[1;95m'
cyan='\e[0;36m'
CYAN='\e[1;36m'
lcyan='\e[0;96m'
LCYAN='\e[1;96m'
lgray='\e[0;37m'
LGRAY='\e[1;37m'
NC='\e[0m' # No Color
### functions galore! ###
# upload item to webserver
function upload() {
scp $1 paul:/home/PUBLIC/upload && echo https://brysonsteck.xyz/pub/upload/$(echo $1 | rev | cut -d '/' -f 1 | rev)
}
# return exit code of last program if not 0
function exit_code() {
local ERROR="$?"
if [[ ERROR -ne 0 ]]; then
# echo -n ''"$dgray"'\]/\['"$RED"'\]'"$ERROR"'\['"$dgray"'\]\\'
echo -n '\['"$dgray"'\]<\['"$RED"'\]'"$ERROR"'\['"$dgray"'\]> '
# else
# # echo -n ''"$dgray"'\]/\['"$LBLUE"'\]'"$ERROR"'\['"$dgray"'\]\\'
# echo -n '\['"$RED"'\]'"$ERROR"' '
fi
}
# get current git branch and status
# http://www.opinionatedprogrammer.com/2011/01/colorful-bash-prompt-reflecting-git-status/
function _git_prompt() {
local git_status="`git status -unormal 2>&1`"
if ! [[ "$git_status" =~ Not\ a\ git\ repo ]]; then
if [[ "$git_status" =~ nothing\ to\ commit ]]; then
local ansi=""
local color="$lcyan"
elif [[ "$git_status" =~ nothing\ added\ to\ commit\ but\ untracked\ files\ present ]]; then
local ansi="!"
local color="$lred"
else
local ansi="*"
local color="$lyellow"
fi
if [[ "$git_status" =~ On\ branch\ ([^[:space:]]+) ]]; then
branch=${BASH_REMATCH[1]}
else
# Detached HEAD. (branch=HEAD is a faster alternative.)
branch="`git describe --all --contains --abbrev=4 HEAD 2> /dev/null ||
echo local`"
fi
if ! [[ "$branch" =~ local ]]; then
# echo -n '\['"$color"'\] ('"$ansi"''"$branch"') '
echo -n '\['"$dgray"'\](\['"$color"'\]'"$branch"''"$ansi"'\['"$dgray"'\])'
fi
fi
}
export -f exit_code
export -f _git_prompt
### shell prompt ###
# bryson@hostname [/current/path] {12:00:00} <255> (master)
# $
export _PS1="\[$LCYAN\]\u\[$dgray\]@\[$LGREEN\]\h \[$dgray\][\[$YELLOW\]\w\[$dgray\]] {\[$LBLUE\]\@\[$dgray\]} "
# define x titlebar
TITLEBAR='\[\033]0;\u@\h \w\]'
# apply prompt and functions
# ignore titlebar if xterm, likely don't need a title anyway
if [[ "$TERM" =~ xterm-256color ]]; then
export PROMPT_COMMAND='export PS1="${_PS1}$(exit_code)$(_git_prompt)\n\[$NC\]\$ ";echo'
else
export PROMPT_COMMAND='export PS1="$TITLEBAR${_PS1}$(exit_code)$(_git_prompt)\n\[$LGRAY\]\$\[$NC\] ";echo'
fi