Skip to content

Instantly share code, notes, and snippets.

@weeble
Created Oct 27, 2021
Embed
What would you like to do?
Bash colour prompt ~/.bashrc.avail/90-color-prompt
#!/bin/bash
prompt_ansi() {
echo -e "\\[\033[$1\\]"
}
BLACK=0
RED=1
GREEN=2
YELLOW=3
BLUE=4
MAGENTA=5
CYAN=6
WHITE=7
FG=3
BG=4
RESET=0
BRIGHT=1
UNDERLINE=3
prompt_install() {
case "${PROMPT_COMMAND}" in
*show_fancy_prompt*)
# Already installed
;;
'')
# Empty
PROMPT_COMMAND=show_fancy_prompt
;;
*)
# Not empty
PROMPT_COMMAND="show_fancy_prompt;$PROMPT_COMMAND"
;;
esac
}
prompt_darkgreen () {
echo $(prompt_ansi 3${GREEN}m)$@$(prompt_ansi 0m)
}
prompt_darkyellow () {
echo $(prompt_ansi 3${YELLOW}m)$@$(prompt_ansi 0m)
}
prompt_green () {
echo $(prompt_ansi 9${GREEN}m)$@$(prompt_ansi 0m)
}
prompt_yellow () {
echo $(prompt_ansi 9${YELLOW}m)$@$(prompt_ansi 0m)
}
prompt_blue () {
echo $(prompt_ansi 9${BLUE}m)$@$(prompt_ansi 0m)
}
prompt_cyan () {
echo $(prompt_ansi 9${CYAN}m)$@$(prompt_ansi 0m)
}
prompt_white () {
echo $(prompt_ansi "${RESET};${BRIGHT}m")$@$(prompt_ansi 0m)
}
prompt_bold_white () {
echo $(prompt_ansi "${RESET};${BRIGHT}m")$@$(prompt_ansi 0m)
}
prompt_bold_red () {
echo $(prompt_ansi "9${RED};${BRIGHT}m")$@$(prompt_ansi 0m)
}
show_fancy_prompt() {
PROMPT_RET=$?
if [ $PROMPT_RET -eq 0 ]; then
PROMPT_ERRCODE=""
else
PROMPT_ERRCODE="!$(prompt_bold_red $PROMPT_RET)"
fi
local PROMPT_GLYPHS=
local AWS_GLYPH=
local PYTHON_GLYPH=
local JOBS_GLYPH=
[ -n "$AWS_ACCESS_KEY_ID" ] && AWS_GLYPH="$(prompt_darkyellow [aws])"
[ -n "$AWS_PROFILE" ] && AWS_GLYPH="$(prompt_darkyellow "[aws=$AWS_PROFILE]")"
[ -n "$VIRTUAL_ENV" ] && PYTHON_GLYPH="$(prompt_darkgreen [py])"
[ -n "$PYENV_VERSION" ] && PYTHON_GLYPH="$(prompt_darkgreen "[py=$PYENV_VERSION]")"
[[ $(jobs -p) ]] && JOBS_GLYPH="$(prompt_cyan "[j\j]")"
PROMPT_GLYPHS="$JOBS_GLYPH$PROMPT_GLYPHS$PYTHON_GLYPH$AWS_GLYPH"
$MY_PROMPT_COMMAND
}
update_ps1_long() {
PS1="$(prompt_yellow \\A) $(prompt_green \\u)@$(prompt_green \\h):$(prompt_blue \\w)$PROMPT_ERRCODE$(prompt_bold_white \\$) "
}
update_ps1_full() {
PS1="$PROMPT_GLYPHS$(prompt_green \\u)@$(prompt_green \\h):$(prompt_blue \\w)$PROMPT_ERRCODE$(prompt_bold_white \\$) "
}
update_ps1_full_line() {
PS1="$PROMPT_GLYPHS$(prompt_green \\u)@$(prompt_green \\h):$(prompt_blue \\w)\n$PROMPT_ERRCODE$(prompt_bold_white \\$) "
}
update_ps1_short() {
PS1="$(prompt_blue \\w)$PROMPT_ERRCODE$(prompt_bold_white \\$) "
}
update_ps1_tiny() {
PS1="$PROMPT_ERRCODE$(prompt_bold_white \\$) "
}
long-prompt() {
MY_PROMPT_COMMAND=update_ps1_long
}
prompt-long() { long-prompt; }
full-prompt() {
MY_PROMPT_COMMAND=update_ps1_full
}
prompt-full() { full-prompt; }
full-line-prompt() {
MY_PROMPT_COMMAND=update_ps1_full_line
}
prompt-full-line() { full-line-prompt; }
short-prompt() {
MY_PROMPT_COMMAND=update_ps1_short
}
prompt-short() { short-prompt; }
tiny-prompt() {
MY_PROMPT_COMMAND=update_ps1_tiny
}
prompt-tiny() { tiny-prompt; }
prompt_install
full-prompt
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment