Created
March 30, 2017 00:33
-
-
Save hartsick/793020e6dc7f55b3d15a25030880b6b9 to your computer and use it in GitHub Desktop.
Custom bash-it theme based on Binary Anomaly
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env bash | |
# Set term to 256color mode, if 256color is not supported, colors won't work properly | |
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 | |
# Detect whether a rebbot is required | |
function show_reboot_required() { | |
if [ ! -z "$_bf_prompt_reboot_info" ]; then | |
if [ -f /var/run/reboot-required ]; then | |
printf "Reboot required!" | |
fi | |
fi | |
} | |
# Set different host color for local and remote sessions | |
function set_host_color() { | |
# Detect if connection is through SSH | |
if [[ ! -z $SSH_CLIENT ]]; then | |
printf "${lime_yellow}" | |
else | |
printf "${light_orange}" | |
fi | |
} | |
# Set different username color for users and root | |
function set_user_color() { | |
case $(id -u) in | |
0) | |
printf "${red}" | |
;; | |
*) | |
printf "${cyan}" | |
;; | |
esac | |
} | |
scm_prompt() { | |
CHAR=$(scm_char) | |
if [ $CHAR = $SCM_NONE_CHAR ] | |
then | |
return | |
else | |
echo "[$(scm_char) $(scm_prompt_info)]" | |
fi | |
} | |
# Define custom colors we need | |
# non-printable bytes in PS1 need to be contained within \[ \]. | |
# Otherwise, bash will count them in the length of the prompt | |
function set_custom_colors() { | |
dark_grey="\[$(tput setaf 8)\]" | |
light_grey="\[$(tput setaf 248)\]" | |
light_orange="\[$(tput setaf 172)\]" | |
bright_yellow="\[$(tput setaf 220)\]" | |
lime_yellow="\[$(tput setaf 190)\]" | |
aqua_green="\[$(tput setaf 47)\]" | |
dark_blue="\[$(tput setaf 21)\]" | |
powder_blue="\[$(tput setaf 153)\]" | |
} | |
__ps_time() { | |
echo "$(clock_prompt)${normal}\n" | |
} | |
function prompt_command() { | |
ps_reboot="${bright_yellow}$(show_reboot_required)${normal}\n" | |
ps_username="$(set_user_color)\u${normal}" | |
ps_uh_separator="${dark_blue}@${normal}" | |
ps_hostname="$(set_host_color)\h${normal}" | |
ps_path="${yellow}\w${normal}" | |
ps_scm_prompt="${light_grey}$(scm_prompt)" | |
ps_user_mark="${normal} ${normal}" | |
ps_user_input="${normal}" | |
# Set prompt | |
PS1="$ps_reboot$(__ps_time)$ps_username$ps_uh_separator$ps_hostname $ps_path $ps_scm_prompt$ps_user_mark$ps_user_input" | |
} | |
# Initialize custom colors | |
set_custom_colors | |
THEME_CLOCK_COLOR=${THEME_CLOCK_COLOR:-"$dark_grey"} | |
# scm theming | |
SCM_THEME_PROMPT_PREFIX="" | |
SCM_THEME_PROMPT_SUFFIX="" | |
SCM_THEME_PROMPT_DIRTY=" ${bold_red}✗${light_grey}" | |
SCM_THEME_PROMPT_CLEAN=" ${aqua_green}✓${light_grey}" | |
SCM_GIT_CHAR="${aqua_green}±${light_grey}" | |
SCM_SVN_CHAR="${bold_cyan}⑆${light_grey}" | |
SCM_HG_CHAR="${bold_red}☿${light_grey}" | |
safe_append_prompt_command prompt_command |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment