79 lines
2.4 KiB
Bash
79 lines
2.4 KiB
Bash
#!/usr/bin/env bash
|
|
# copied from https://gitweb.gentoo.org/repo/gentoo.git/tree/app-shells/bash
|
|
|
|
if [[ ${NO_COLOR} ]]; then
|
|
# Respect the user's wish not to use color. See https://no-color.org/.
|
|
gentoo_color=0
|
|
elif [[ ${COLORTERM@a} == *x* && ${COLORTERM} == @(24bit|truecolor) ]]; then
|
|
# The COLORTERM environment variable can reasonably be trusted here.
|
|
# See https://github.com/termstandard/colors for further information.
|
|
gentoo_color=1
|
|
else
|
|
# Check TERM against a whitelist covering a majority of popular
|
|
# terminal emulators and virtual console implementations known to
|
|
# support color. If no matching entry is found, try to use tput(1) to
|
|
# determine whether color is supported.
|
|
case ${TERM} in
|
|
*color* |\
|
|
*direct* |\
|
|
*ghostty |\
|
|
[Ekx]term* |\
|
|
alacritty |\
|
|
aterm |\
|
|
contour |\
|
|
dtterm |\
|
|
foot* |\
|
|
jfbterm |\
|
|
linux |\
|
|
mlterm |\
|
|
rxvt* |\
|
|
screen* |\
|
|
tmux* |\
|
|
wsvt25* ) gentoo_color=1 ;;
|
|
* ) gentoo_color=$(tput colors 2>/dev/null)
|
|
esac
|
|
fi
|
|
|
|
# For direxpand to be missing indicates that bash is lacking readline support.
|
|
prompt_exit_code() {
|
|
local -r exit_code=$?
|
|
if [[ ${exit_code} -ne 0 ]]; then
|
|
printf "%s " "${exit_code}"
|
|
fi
|
|
}
|
|
|
|
if (( gentoo_color <= 0 )) || ( ! shopt -u direxpand 2>/dev/null ); then
|
|
# Define a prompt without color.
|
|
PS1='\u@\h \w \$ '
|
|
elif (( EUID == 0 )); then
|
|
# If root, omit the username and print the hostname in red.
|
|
PS1='\[\e[01;31m\]\h\[\e[01;34m\] \[\e[01;31m\]$(prompt_exit_code)\[\e[01;34m\]\w \$\[\e[00m\] '
|
|
else
|
|
# Otherwise, print the username and hostname in green.
|
|
PS1='\[\e[01;32m\]\u@\h\[\e[01;34m\] \[\e[01;31m\]$(prompt_exit_code)\[\e[01;34m\]\w \$\[\e[00m\] '
|
|
fi
|
|
|
|
if (( gentoo_color > 0 )); then
|
|
# Colorize the output of diff(1), grep(1) and a few coreutils utilities.
|
|
# However, do so only where no alias/function by the given name exists.
|
|
for _ in diff dir grep ls vdir; do
|
|
if [[ $(type -t "$_") == file ]]; then
|
|
alias "$_=$_ --color=auto"
|
|
fi
|
|
done
|
|
|
|
# Enable colors for ls(1) and some other utilities that respect the
|
|
# LS_COLORS variable. Prefer ~/.dir_colors, per bug #64489.
|
|
if hash dircolors 2>/dev/null; then
|
|
if [[ -f ~/.dir_colors ]]; then
|
|
eval "$(COLORTERM=1 dircolors -b -- ~/.dir_colors)"
|
|
elif [[ -f /etc/DIR_COLORS ]]; then
|
|
eval "$(COLORTERM=1 dircolors -b /etc/DIR_COLORS)"
|
|
else
|
|
eval "$(COLORTERM=1 dircolors -b)"
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
unset -v gentoo_color
|