1
0
Fork 0
ostree-native-containers/etc/profile.d/bash-color-prompt.sh
ver4a e650817c5d
All checks were successful
/ build-gnome (push) Successful in 17m40s
/ build-kde (push) Successful in 24m27s
fix: Force customized prompt to always apply
The script was expecting one of two default prompts to be set, so it
wouldn't override any custom ones. But the default prompts changed in
F42, this patch removes the check these prompts and makes the script
always override it.
2025-04-16 16:36:38 +02:00

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