-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path.bash_prompt
More file actions
executable file
·147 lines (138 loc) · 5.04 KB
/
.bash_prompt
File metadata and controls
executable file
·147 lines (138 loc) · 5.04 KB
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
#!/usr/local/bin/bash
#
# .bash_prompt
#
# @author Rodney Smith
#
export BASH_CONF=".bash_prompt"
# Shell prompt based on the Solarized Dark theme.
# Screenshot: http://i.imgur.com/EkEtphC.png
# Heavily inspired by @necolas’s prompt: https://github.com/necolas/dotfiles
# iTerm → Profiles → Text → use 13pt Monaco with 1.1 vertical spacing.
if [[ $COLORTERM = gnome-* && $TERM = xterm ]] && infocmp gnome-256color >/dev/null 2>&1; then
export TERM='gnome-256color';
elif infocmp xterm-256color >/dev/null 2>&1; then
export TERM='xterm-256color';
fi
prompt_git() {
local s='';
local branchName='';
# Check if the current directory is in a Git repository.
if [ $(git rev-parse --is-inside-work-tree &>/dev/null; echo "${?}") == '0' ]; then
# check if the current directory is in .git before running git checks
if [ "$(git rev-parse --is-inside-git-dir 2> /dev/null)" == 'false' ]; then
# Ensure the index is up to date.
git update-index --really-refresh -q &>/dev/null;
# Check for uncommitted changes in the index.
if ! $(git diff --quiet --ignore-submodules --cached); then
s+='+';
fi
# Check for unstaged changes.
if ! $(git diff-files --quiet --ignore-submodules --); then
s+='!';
fi
# Check for untracked files.
if [ -n "$(git ls-files --others --exclude-standard)" ]; then
s+='?';
fi
# Check for stashed files.
if $(git rev-parse --verify refs/stash &>/dev/null); then
s+='$';
fi
fi
# Get the short symbolic ref.
# If HEAD isn’t a symbolic ref, get the short SHA for the latest commit
# Otherwise, just give up.
branchName="$(git symbolic-ref --quiet --short HEAD 2> /dev/null || \
git rev-parse --short HEAD 2> /dev/null || \
echo '(unknown)')";
[ -n "${s}" ] && s=" [${s}]";
echo -e "${1}${branchName}${2}${s}";
else
return;
fi
}
## Solarized colors, taken from http://git.io/solarized-colors.
#SOLARIZED HEX 16/8 TERMCOL XTERM/HEX L*A*B RGB HSB
#--------- ------- ---- ------- ----------- ---------- ----------- -----------
#base03 #002b36 8/4 brblack 234 #1c1c1c 15 -12 -12 0 43 54 193 100 21
#base02 #073642 0/4 black 235 #262626 20 -12 -12 7 54 66 192 90 26
#base01 #586e75 10/7 brgreen 240 #585858 45 -07 -07 88 110 117 194 25 46
#base00 #657b83 11/7 bryellow 241 #626262 50 -07 -07 101 123 131 195 23 51
#base0 #839496 12/6 brblue 244 #808080 60 -06 -03 131 148 150 186 13 59
#base1 #93a1a1 14/4 brcyan 245 #8a8a8a 65 -05 -02 147 161 161 180 9 63
#base2 #eee8d5 7/7 white 254 #e4e4e4 92 -00 10 238 232 213 44 11 93
#base3 #fdf6e3 15/7 brwhite 230 #ffffd7 97 00 10 253 246 227 44 10 99
#yellow #b58900 3/3 yellow 136 #af8700 60 10 65 181 137 0 45 100 71
#orange #cb4b16 9/3 brred 166 #d75f00 50 50 55 203 75 22 18 89 80
#red #d30102 1/1 red 124 #af0000 45 70 60 211 1 2 0 99 83
#magenta #d33682 5/5 magenta 125 #af005f 50 65 -05 211 54 130 331 74 83
#violet #6c71c4 13/5 brmagenta 61 #5f5faf 50 15 -45 108 113 196 237 45 77
#blue #268bd2 4/4 blue 33 #0087ff 55 -10 -45 38 139 210 205 82 82
#cyan #2aa198 6/6 cyan 37 #00afaf 60 -35 -05 42 161 152 175 74 63
#green #859900 2/2 green 64 #5f8700 60 -20 65 133 153 0 68 100 60
# Colors
#Black 0;30 Bold Black 1;30
#Red 0;31 Bold Red 1;31
#Green 0;32 Bold Green 1;32
#Yellow 0;33 Bold Yellow 1;33
#Blue 0;34 Bold Blue 1;34
#Purple 0;35 Bold Purple 1;35
#Cyan 0;36 Bold Cyan 1;36
#White 0;37 Bold White 1;37
if tput setaf 1 &> /dev/null; then
tput sgr0; # reset colors
bold=$(tput bold);
reset=$(tput sgr0);
# Solarized colors, taken from http://git.io/solarized-colors.
black=$(tput setaf 0);
blue=$(tput setaf 153);
green=$(tput setaf 71);
orange=$(tput setaf 166);
red=$(tput setaf 167);
white=$(tput setaf 15);
yellow=$(tput setaf 228);
else
bold='';
reset="\e[0m";
black="\e[0;30m";
blue="\e[0;34m";
green="\e[0;32m";
orange="\e[0;33m";
red="\e[0;31m";
cyan="\e[0;36m";
white="\e[1;37m";
yellow="\e[1;33m";
ltblue="\e[1;34m";
ltgreen="\e[1;32m";
ltcyan="\e[1;36m";
ltred="\e[1;31m";
purple="\e[0;35m";
ltpurple="\e[1;35m";
fi
# Highlight the user name when logged in as root.
if [[ "${USER}" == "root" ]]; then
userStyle="${red}";
else
userStyle="${cyan}";
fi
# Highlight the hostname when connected via SSH.
if [[ "${SSH_TTY}" ]]; then
hostStyle="${bold}${red}";
else
hostStyle="${orange}";
fi
# Set the terminal title to the current working directory.
PS1="\[\033]0;\w\007\]";
PS1+="\[${bold}\]\n"; # newline
PS1+="\[${userStyle}\]\u"; # username
PS1+="\[${white}\] at ";
PS1+="\[${hostStyle}\]\h"; # host
PS1+="\[${white}\] in ";
PS1+="\[${yellow}\]\W"; # working directory
PS1+="\$(prompt_git \"\[${white}\] on \[${blue}\]\" \"\[${blue}\]\")"; # Git repository details
PS1+="\n";
PS1+="\[${white}\]\$ \[${reset}\]"; # `$` (and reset color)
export PS1
PS2="\[${yellow}\]→ \[${reset}\]";
export PS2