summaryrefslogtreecommitdiff
path: root/app-shells/bash/files/bashrc.d/10-gentoo-color.bash
diff options
context:
space:
mode:
Diffstat (limited to 'app-shells/bash/files/bashrc.d/10-gentoo-color.bash')
-rw-r--r--app-shells/bash/files/bashrc.d/10-gentoo-color.bash67
1 files changed, 67 insertions, 0 deletions
diff --git a/app-shells/bash/files/bashrc.d/10-gentoo-color.bash b/app-shells/bash/files/bashrc.d/10-gentoo-color.bash
new file mode 100644
index 000000000000..5a6df5690c08
--- /dev/null
+++ b/app-shells/bash/files/bashrc.d/10-gentoo-color.bash
@@ -0,0 +1,67 @@
+# /etc/bash/bashrc.d/10-gentoo-color.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
+elif unset -v COLORTERM; ! gentoo_color=$(tput colors 2>/dev/null); then
+ # Either ncurses is not installed or no terminfo database could be
+ # found. Fall back to a whitelist which covers the majority of terminal
+ # emulators and virtual console implementations known to support color
+ # and which remain (somewhat) popular. This will rarely happen, so the
+ # list need not be exhaustive.
+ case ${TERM} in
+ *color* |\
+ *direct* |\
+ [Ekx]term* |\
+ alacritty |\
+ aterm |\
+ dtterm |\
+ foot* |\
+ jfbterm |\
+ linux |\
+ mlterm |\
+ rxvt* |\
+ screen* |\
+ tmux* |\
+ wsvt25* ) gentoo_color=1
+ esac
+elif (( gentoo_color == 16777216 )); then
+ # Truecolor support is available. Advertise it.
+ export COLORTERM=truecolor
+fi
+
+if (( gentoo_color <= 0 )); 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\] \w \$\[\e[00m\] '
+else
+ # Otherwise, print the username and hostname in green.
+ PS1='\[\e[01;32m\]\u@\h\[\e[01;34m\] \w \$\[\e[00m\] '
+fi
+
+if (( gentoo_color > 0 )); then
+ # Colorize the output of grep and several coreutils utilities.
+ for _ in diff dir egrep fgrep grep ls vdir; do
+ alias "$_=$_ --color=auto"
+ 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 "$(dircolors -b -- ~/.dir_colors)"
+ elif [[ -f /etc/DIR_COLORS ]]; then
+ eval "$(dircolors -b /etc/DIR_COLORS)"
+ else
+ eval "$(dircolors -b)"
+ fi
+ fi
+fi
+
+unset -v gentoo_color