Skip to content

Instantly share code, notes, and snippets.

@bear454
Created January 11, 2016 20:05
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save bear454/31627635e74c1b0df7fe to your computer and use it in GitHub Desktop.
Save bear454/31627635e74c1b0df7fe to your computer and use it in GitHub Desktop.
My bash prompt
#!/bin/bash
# Configure Colors:
# Reset
Color_Off='\[\e[0m\]' # Text Reset
# Regular Colors
Black='\[\e[0;30m\]' # Black
Red='\[\e[0;31m\]' # Red
Green='\[\e[0;32m\]' # Green
Yellow='\[\e[0;33m\]' # Yellow
Blue='\[\e[0;34m\]' # Blue
Purple='\[\e[0;35m\]' # Purple
Cyan='\[\e[0;36m\]' # Cyan
White='\[\e[0;37m\]' # White
# Bold
BBlack='\[\e[1;30m\]' # Black
BRed='\[\e[1;31m\]' # Red
BGreen='\[\e[1;32m\]' # Green
BYellow='\[\e[1;33m\]' # Yellow
BBlue='\[\e[1;34m\]' # Blue
BPurple='\[\e[1;35m\]' # Purple
BCyan='\[\e[1;36m\]' # Cyan
BWhite='\[\e[1;37m\]' # White
# Underline
UBlack='\[\e[4;30m\]' # Black
URed='\[\e[4;31m\]' # Red
UGreen='\[\e[4;32m\]' # Green
UYellow='\[\e[4;33m\]' # Yellow
UBlue='\[\e[4;34m\]' # Blue
UPurple='\[\e[4;35m\]' # Purple
UCyan='\[\e[4;36m\]' # Cyan
UWhite='\[\e[4;37m\]' # White
# Background
On_Black='\[\e[40m\]' # Black
On_Red='\[\e[41m\]' # Red
On_Green='\[\e[42m\]' # Green
On_Yellow='\[\e[43m\]' # Yellow
On_Blue='\[\e[44m\]' # Blue
On_Purple='\[\e[45m\]' # Purple
On_Cyan='\[\e[46m\]' # Cyan
On_White='\[\e[47m\]' # White
# High Intensity
IBlack='\[\e[0;90m\]' # Black
IRed='\[\e[0;91m\]' # Red
IGreen='\[\e[0;92m\]' # Green
IYellow='\[\e[0;93m\]' # Yellow
IBlue='\[\e[0;94m\]' # Blue
IPurple='\[\e[0;95m\]' # Purple
ICyan='\[\e[0;96m\]' # Cyan
IWhite='\[\e[0;97m\]' # White
# Bold High Intensity
BIBlack='\[\e[1;90m\]' # Black
BIRed='\[\e[1;91m\]' # Red
BIGreen='\[\e[1;92m\]' # Green
BIYellow='\[\e[1;93m\]' # Yellow
BIBlue='\[\e[1;94m\]' # Blue
BIPurple='\[\e[1;95m\]' # Purple
BICyan='\[\e[1;96m\]' # Cyan
BIWhite='\[\e[1;97m\]' # White
# High Intensity backgrounds
On_IBlack='\[\e[0;100m\]' # Black
On_IRed='\[\e[0;101m\]' # Red
On_IGreen='\[\e[0;102m\]' # Green
On_IYellow='\[\e[0;103m\]' # Yellow
On_IBlue='\[\e[0;104m\]' # Blue
On_IPurple='\[\e[0;105m\]' # Purple
On_ICyan='\[\e[0;106m\]' # Cyan
On_IWhite='\[\e[0;107m\]' # White
COLOR_FRAME=${White}
OPEN="("
CLOSE=")"
OPEN_C="${COLOR_FRAME}${OPEN}"
CLOSE_C="${COLOR_FRAME}${CLOSE}"
#blank the VCS prompt initially
VCS_PROMPT=""
VCS_PROMPT_C=""
# Git branch for VCS Prompt
GIT_BRANCH=`git branch 2>&1 | grep \* | cut -d ' ' -f 2`
if [[ -n "$GIT_BRANCH" ]]; then
VCS_PROMPT="${OPEN} git:${GIT_BRANCH} ${CLOSE}"
VCS_PROMPT_C="${OPEN_C}${Blue} git:${GIT_BRANCH} ${CLOSE_C}"
fi
#OBS info for VCS Prompt
OBS_INFO=`osc info 2>&1`
if [[ $? == 0 ]]; then
OBS_INSTANCE=`osc info | grep 'API URL' | cut -d ' ' -f 3`
if [[ "$OBS_INSTANCE" == "https://api.suse.de" ]]; then
OBS_ID='IBS'
else
OBS_ID='OBS'
fi
OBS_REV=`osc info | grep 'Revision' | cut -d ' ' -f 2`
VCS_PROMPT="${OPEN} ${OBS_ID}:r${OBS_REV} ${CLOSE}"
VCS_PROMPT_C="${OPEN_C}${Blue} ${OBS_ID}:r${OBS_REV} ${CLOSE_C}"
fi
# User@Hostname
USER_BLOCK="${OPEN} $(whoami)@$(hostname -s) ${CLOSE}"
USER_BLOCK_C="${OPEN_C} ${BCyan}$(whoami)${Cyan}@$(hostname -s) ${CLOSE_C}"
# path - maybe abbreviated
PWD=`pwd 2>&1 | sed s#/home/jmason/#~/#`
MAX_SIZE=$(($COLUMNS-9-${#VCS_PROMPT}-${#USER_BLOCK}))
if [ ${#PWD} -gt $MAX_SIZE ]; then
SHORT_PATH="${OPEN} …${PWD: -$MAX_SIZE}/ ${CLOSE}"
SHORT_PATH_C="${OPEN_C}${Blue} …${PWD: -$MAX_SIZE}/ ${CLOSE_C}"
else
SHORT_PATH="${OPEN} ${PWD}/ ${CLOSE}"
SHORT_PATH_C="${OPEN_C}${Blue} ${PWD}/ ${CLOSE_C}"
fi
# uncolored arrangement for calculating gaps
L1L="╭${SHORT_PATH}"
L1C="${VCS_PROMPT}"
L1R="${USER_BLOCK}"
#calculate gap length
GAP_LEN=$(($COLUMNS-${#L1L}-${#L1C}-${#L1R}))
if [[ $((GAP_LEN%2)) -eq 0 ]]; then
GAP_L=`printf '─%.0s' $(seq 1 $((GAP_LEN/2)))`
GAP_R=`printf '─%.0s' $(seq 1 $((GAP_LEN/2)))`
else
GAP_L=`printf '─%.0s' $(seq 1 $((GAP_LEN/2)))`
GAP_R=`printf '─%.0s' $(seq 0 $((GAP_LEN/2)))`
fi
# arrangement with colors
L1L="${FRAME_COLOR}╭${SHORT_PATH_C}"
L1C="${VCS_PROMPT_C}"
L1R="${USER_BLOCK_C}"
L2="╰$ ${Color_Off}"
export PS1="\n${COLOR_FRAME}${L1L}${GAP_L}${L1C}${GAP_R}${L1R}\n${COLOR_FRAME}${L2}"
@bear454
Copy link
Author

bear454 commented Jan 11, 2016

Screenshot:
screenshot from 2016-01-11 12-09-38

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment