147 lines
3.9 KiB
Bash
147 lines
3.9 KiB
Bash
# see /usr/share/doc/bash-color-prompt/README.md
|
|
|
|
## to truncate \w dirpath set:
|
|
# PROMPT_DIRTRIM=3
|
|
|
|
# only for bash
|
|
if [ -n "${BASH_VERSION}" -a -z "${bash_prompt_color_disable}" ]; then
|
|
|
|
# enable only in interactive shell
|
|
case $- in
|
|
*i*) ;;
|
|
*) return;;
|
|
esac
|
|
|
|
# defines PS1 for color prompt
|
|
prompt_setup_color_ps1() {
|
|
local colorpre='\[\e['
|
|
local colorsuf='m\]'
|
|
local colorreset="${colorpre}0${colorsuf}"
|
|
PS1='${PROMPT_START@P}'"${colorpre}"'${PROMPT_COLOR}${PROMPT_HIGHLIGHT:+;$PROMPT_HIGHLIGHT}'"${colorsuf}"'${PROMPT_USERHOST@P}'"${colorreset}"'${PROMPT_SEPARATOR@P}'"${colorpre}"'${PROMPT_DIR_COLOR-${PROMPT_COLOR}}${PROMPT_HIGHLIGHT:+;$PROMPT_HIGHLIGHT}'"${colorsuf}"'${PROMPT_DIRECTORY@P}'"${colorreset}"'${PROMPT_END@P}\$'"${colorreset} "
|
|
}
|
|
|
|
# sets default color or $1 can override
|
|
prompt_color() {
|
|
if [ -n "${1:+1}" ]; then
|
|
PROMPT_COLOR="$1"
|
|
else
|
|
if [ "$USER" = "root" ]; then
|
|
PROMPT_COLOR="93;1"
|
|
else
|
|
PROMPT_COLOR="93"
|
|
fi
|
|
fi
|
|
}
|
|
|
|
# sets prompt highlighting
|
|
prompt_highlight() {
|
|
PROMPT_HIGHLIGHT=${1:-1}
|
|
}
|
|
|
|
prompt_default_highlight() {
|
|
if [ "$DESKTOP_SESSION" = "gnome" ]; then
|
|
prompt_highlight "${1:-1}"
|
|
else
|
|
unset PROMPT_HIGHLIGHT
|
|
fi
|
|
}
|
|
|
|
prompt_default_color() {
|
|
prompt_color "$1"
|
|
prompt_default_highlight
|
|
unset PROMPT_DIR_COLOR
|
|
}
|
|
|
|
prompt_dir_color() {
|
|
if [ -n "${1:+1}" ]; then
|
|
PROMPT_DIR_COLOR="$1"
|
|
else
|
|
unset PROMPT_DIR_COLOR
|
|
fi
|
|
}
|
|
|
|
# only activate for color terminals and if PS1 unchanged from bash or fedora defaults
|
|
if [ '(' "${TERM: -5}" = "color" -o "${TERM}" = "linux" ')' \
|
|
-o -n "${bash_prompt_color_force}" ]; then
|
|
prompt_color "$PROMPT_COLOR"
|
|
prompt_default_highlight "$PROMPT_HIGHLIGHT"
|
|
prompt_dir_color "$PROMPT_DIR_COLOR"
|
|
PROMPT_USERHOST="${PROMPT_USERHOST-${container:+⬢ }\u@\h}"
|
|
PROMPT_SEPARATOR="${PROMPT_SEPARATOR-:}"
|
|
PROMPT_DIRECTORY="${PROMPT_DIRECTORY-\w}"
|
|
prompt_setup_color_ps1
|
|
fi
|
|
|
|
# sets default prompt format
|
|
prompt_default_format() {
|
|
PROMPT_USERHOST='\u@\h'
|
|
PROMPT_SEPARATOR=':'
|
|
PROMPT_DIRECTORY='\w'
|
|
PROMPT_START=''
|
|
PROMPT_END=''
|
|
}
|
|
|
|
# sets default prompt color and format
|
|
prompt_default() {
|
|
prompt_default_color "$1"
|
|
prompt_default_format
|
|
}
|
|
|
|
# sets color to OS ANSI_COLOR
|
|
# $1 is appended to the (foreground) color
|
|
prompt_os_color() {
|
|
if [ -z "$ANSI_COLOR" ]; then
|
|
eval local $(grep ANSI_COLOR /etc/os-release)
|
|
fi
|
|
PROMPT_COLOR="$ANSI_COLOR${1:+;$1}"
|
|
}
|
|
|
|
prompt_container() {
|
|
if [ -n "$container" ]; then
|
|
eval local $(grep "\(^ID=\|VERSION_ID\|VARIANT_ID\)" /etc/os-release)
|
|
PROMPT_USERHOST="⬢ $ID-$VARIANT_ID$VERSION_ID"
|
|
else
|
|
if [ "$HOSTNAME" = "fedora" -a "$1" = "$USER" ]; then
|
|
unset PROMPT_USERHOST
|
|
fi
|
|
fi
|
|
}
|
|
|
|
# unsets colors
|
|
prompt_no_color() {
|
|
unset PROMPT_COLOR
|
|
unset PROMPT_DIR_COLOR
|
|
}
|
|
|
|
# unsets highlighting
|
|
prompt_no_highlight() {
|
|
unset PROMPT_HIGHLIGHT
|
|
}
|
|
|
|
# unsets color and highlighting
|
|
prompt_plain() {
|
|
prompt_no_color
|
|
prompt_no_highlight
|
|
}
|
|
|
|
# sets traditional Red Hat prompt style format
|
|
prompt_traditional_format() {
|
|
PROMPT_USERHOST='\u@\h'
|
|
PROMPT_SEPARATOR=' '
|
|
PROMPT_DIRECTORY='\W'
|
|
PROMPT_START='['
|
|
PROMPT_END=']'
|
|
}
|
|
|
|
# sets traditional Red Hat prompt style without color
|
|
prompt_traditional() {
|
|
prompt_plain
|
|
prompt_traditional_format
|
|
}
|
|
|
|
# revert to traditional Red Hat prompt
|
|
prompt_reset_traditional_ps1() {
|
|
PS1="[\u@\h \W]\\$ "
|
|
}
|
|
|
|
fi
|