diff --git a/profile.d/prompt.sh b/profile.d/prompt.sh index 55dbaf5..692674a 100644 --- a/profile.d/prompt.sh +++ b/profile.d/prompt.sh @@ -285,28 +285,30 @@ set_prompt() local _dir_fg="${PROMPT_COLOR_DIR_FG:-$ICyan}" # Begin with time (cursor-save is non-printing; all ANSI sequences wrapped - # in \[...\] so bash does not count them toward the visible line width) - PS1="\[\e[s\]\[${_time_fg}\]\[${_time_bg}\] [ \t ] \[${_bar_bg}\]" + # in \[...\] so bash does not count them toward the visible line width). + # Every fg colour is combined with its section bg in the same \[...\] block + # so that even "reset" colours (0;Xm) cannot strip the background. + PS1="\[\e[s\]\[${_time_fg}${_time_bg}\] [ \t ] \[${_bar_bg}\]" # Add exit status of the last command. # If it was successful, print a green check mark. Otherwise, print a red X. if [[ $Last_Command == 0 ]]; then - PS1+="\[${_ok_fg}\]\[${_bar_bg}\] [ \$Last_Command " - PS1+="\[${_ok_mark}\]${Checkmark} " + PS1+="\[${_ok_fg}${_bar_bg}\] [ \$Last_Command " + PS1+="\[${_ok_mark}${_bar_bg}\]${Checkmark} " else - PS1+="\[${_err_fg}\]\[${_err_bg}\] [ \$Last_Command " - PS1+="\[${_err_mark}\]${FancyX} " + PS1+="\[${_err_fg}${_err_bg}\] [ \$Last_Command " + PS1+="\[${_err_mark}${_err_bg}\]${FancyX} " fi - # Add the elapsed time + # Add the elapsed time, then close the status section and return to bar bg. timer_stop - PS1+="($timer_show)\[${_ok_fg}\] ] \[${_bar_bg}\] " + PS1+="($timer_show)\[${_ok_fg}${_bar_bg}\] ] " # If root, print the host in root colour. Otherwise use user colour. if [[ $EUID -eq 0 ]]; then - PS1+="\[${_root_fg}\]\\u\[${_user_fg}\]@\\h" + PS1+="\[${_root_fg}${_bar_bg}\]\\u\[${_user_fg}${_bar_bg}\]@\\h" else - PS1+="\[${_user_fg}\]\\u@\\h" + PS1+="\[${_user_fg}${_bar_bg}\]\\u@\\h" fi PS1+="\[\e[K\e[u\]\[$RESETCOL\]\n" # Print the working directory and prompt marker, then reset colour.