167 lines
4.6 KiB
Bash
167 lines
4.6 KiB
Bash
#!/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
|