aboutsummaryrefslogtreecommitdiff
path: root/sh/bash/.bashrc
blob: 1315e51736b56cf4f6e3e06cb1615135b436003e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
#!/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