lima icon indicating copy to clipboard operation
lima copied to clipboard

Only set the prompt color on a dark terminal background

Open afbjorklund opened this issue 3 years ago • 6 comments

The lima color has usability issues in light theme

Closes #485

afbjorklund avatar Dec 16 '21 19:12 afbjorklund

I thought I had already written this for the previous PR, but cannot find the comment again:

I feel using patch to make so many complex changes to .bashrc is the wrong approach, and not maintenance friendly (updating the patch will be error-prone if/when the upstream source is going to change).

I would rather see this change appended as a single block at the end of .bashrc, or maybe even in a separate file, so it is just called from it. We should not modify the upstream logic, but just determine the conditions under which we want to modify the prompt, and then just overwrite the setting that has already been setup earlier. That way our logic should become much simpler (I hope).

I also feel that we are trying to support too many different configurations.

jandubois avatar Dec 17 '21 08:12 jandubois

I think the plan was to have the patch fail, if/when the original ever changes...

There is a unset color_prompt force_color_prompt which makes it harder.

# set variable identifying the chroot you work in (used in the prompt below)
if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then
    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
fi

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

# If this is an xterm set the title to user@host:dir
case "$TERM" in
xterm*|rxvt*)
    PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
    ;;
*)
    ;;
esac

Didn't change anything regarding chroot or xterm, only the color of the prompt.

The main changes were: 1) adding 256 + truecolor 2) opting out in light theme

afbjorklund avatar Dec 17 '21 09:12 afbjorklund

I also feel that we are trying to support too many different configurations.

Currently there are 4 terminal color profiles: Ascii, ANSI, ANSI256, TrueColor

https://github.com/muesli/termenv#query-terminal-support

Originally it only used color=true/false, and "green" works with either theme.

afbjorklund avatar Dec 17 '21 09:12 afbjorklund

Could revert the lima color, and go back to changing the prompt instead...

That [LIMA] would make it work in monochrome as well: https://github.com/lima-vm/lima/pull/433#issuecomment-978881137

afbjorklund avatar Dec 17 '21 10:12 afbjorklund

Who uses light themes anyway ;-)

afbjorklund avatar Jan 13 '22 20:01 afbjorklund

New cyan color works in both.

afbjorklund avatar Mar 27 '22 08:03 afbjorklund