The problem with checking $TERM is you end up having to add every new
terminal type that is capable. In addition to foot, I know of kitty,
alacritty, wezterm, and there are likely more.
The comments around this section of skel.bashrc are unclear, talking
about setting a "fancy prompt (non-color)" then setting color_prompt=yes.
Given this, I propose to use a color prompt on any terminal that is
capable of it, with the uncomment override back to a plain prompt. Using
tput for detection basically means having ncurses-bin as a Recommends,
so we may want a better way of doing this detection.
Patch attached.
--- /etc/skel/.bashrc 2020-02-25 06:44:22.000000000 -0500
+++ .bashrc 2023-09-08 09:51:44.086826241 -0400
@@ -35,33 +35,23 @@
debian_chroot=$(cat /etc/debian_chroot)
fi
-# set a fancy prompt (non-color, unless we know we "want" color)
-case "$TERM" in
- xterm-color|*-256color) color_prompt=yes;;
-esac
-
-# uncomment for a colored prompt, if the terminal has the capability; turned
-# off by default to not distract the user: the focus in a terminal window
-# should be on the output of commands, not on the prompt
-#force_color_prompt=yes
-
-if [ -n "$force_color_prompt" ]; then
- if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then
- # We have color support; assume it's compliant with Ecma-48
- # (ISO/IEC-6429). (Lack of such support is extremely rare, and such
- # a case would tend to support setf rather than setaf.)
- color_prompt=yes
- else
- color_prompt=
- fi
+# Determine if terminal is color capable
+if [ -x /usr/bin/tput ] && [ $(tput colors) -ge 8 ];
+then
+ color_prompt=yes
+else
+ color_prompt=
fi
+# Uncomment to force plain prompt
+#color_prompt=no
+
if [ "$color_prompt" = yes ]; then
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
else
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi
-unset color_prompt force_color_prompt
+unset color_prompt
# If this is an xterm set the title to user@host:dir
case "$TERM" in