blob: 48599a581b7e94929b7754560ca3487cfafff07b (
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
|
# Dynamic PS1 using terminal palette colors only
function update_ps1 {
local exit_code=$?
# Color exit code: green if 0, red otherwise
if [[ $exit_code -eq 0 ]]; then
local exit_display="\[\e[1;32m\]$exit_code\[\e[0m\]" # bright green
else
local exit_display="\[\e[1;31m\]$exit_code\[\e[0m\]" # bright red
fi
# Symbol always bright white
local symbol="\[\e[1;37m\]\$\[\e[0m\]"
# Brackets in bright white
local open_bracket="\[\e[1;37m\][\[\e[0m\]"
local close_bracket="\[\e[1;37m\]]\[\e[0m\]"
# User: red for root, cyan otherwise
if [ $(id -u) -eq 0 ]; then
local user="\[\e[1;31m\]\u\[\e[0m\]"
else
local user="\[\e[1;36m\]\u\[\e[0m\]"
fi
# Current folder: yellow
local folder="\[\e[1;33m\]\W\[\e[0m\]"
# Git status: green if up to date, red if ahead, yellow if dirty
local git_status=""
if git rev-parse --is-inside-work-tree &>/dev/null; then
if [[ -z $(git status --porcelain 2>/dev/null) ]]; then
git_status="\[\e[1;32m\](git)\[\e[0m\]" # clean
else
git_status="\[\e[1;31m\](git)\[\e[0m\]" # dirty
fi
fi
# Build the prompt
PS1="${open_bracket}${exit_display} ${user} ${folder}${git_status}${close_bracket}${symbol} "
}
# Update PS1 after every command
PROMPT_COMMAND='update_ps1'
|