dotfiles/dotfiles/lib/bash/prompt.sh

81 lines
1.7 KiB
Bash

# 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
BoldYellow='\e[1;33m' # Yellow
Gray="\[\033[1;30m\]"
function current_directory() {
pwd | sed "s:$HOME:~:"
}
function git_prompt_info() {
if test -z $(git branch-or-sha);
then
echo ""
else
echo " $(separator "on") $(git branch-or-sha)$(git_status_character)"
fi
}
function git_status_character() {
if git dirty;
then
print_with_color "✘" "$Red"
else
print_with_color "✔" "$Green"
fi
}
function command_line_character() {
if ! test -z $(git branch-or-sha);
then
echo "±"
else
echo "○"
fi
}
function prompt_basic_colors() {
export USERNAME_COLOR="$Green"
export SEPARATOR_COLOR="$Black"
export HOSTNAME_COLOR="$Blue"
export CURRENT_DIRECTORY_COLOR="$BoldYellow"
export SEPARATOR_COLOR="$Gray"
}
function print_with_color() {
echo "$2$1\e[0m"
}
function separator() {
print_with_color "$1" "$SEPARATOR_COLOR"
}
prompt_basic_colors
function set_bash_prompt() {
PS1="╭─$(print_with_color "$(whoami)" "$USERNAME_COLOR") $(separator "at") $(print_with_color "`hostname -s`" "$HOSTNAME_COLOR") $(separator "in") $(print_with_color "`current_directory`" "$CURRENT_DIRECTORY_COLOR")$(git_prompt_info)
╰─$(command_line_character) "
}
# export PROMPT_COMMAND=set_bash_prompt
PS2='(%_) '
case "$TERM" in
dumb)
export PS1='> '
;;
esac
function set_powerline_prompt {
source "$(python_module_path powerline)/bindings/bash/powerline.sh"
}