Compare commits

..

2 Commits

Author SHA1 Message Date
Ray Elliott 67b2f6ed25 refactor prompt colors for improved visibility
Updated color definitions in bashrc and gitstatus-custom.sh
to enhance clarity of the prompt display, using bright white
for branch names and modified/untracked statuses.
2025-09-30 20:28:56 +01:00
Ray Elliott 37dce8fa0b refactor gitstatus prompt colors for clarity
Updated color usage in the gitstatus prompt to minimize distractions
by removing color from remote tracking and push status indicators.
2025-09-30 20:16:39 +01:00
2 changed files with 67 additions and 46 deletions

87
bashrc
View File

@ -1,5 +1,28 @@
# Color definitions
_WHITE='\033[1;37m' # White _WHITE='\033[1;37m' # White
_NC='\033[0m' # No Color _NC='\033[0m' # Get the current day of the week, day of the month, and year
day_of_week=$(date "+%A")
day_of_month=$(date "+%d")
month_name=$(date "+%B")
year=$(date "+%Y")
# Determine the day suffix (th, nd, rd)
case "$day_of_month" in
1[0-9]) day_suffix="th";;
*1) day_suffix="st";;
*2) day_suffix="nd";;
*3) day_suffix="rd";;
*) day_suffix="th";;
esac
_RED='\033[0;31m' # Red
_GREEN='\033[01;32m' # Bright Green
_YELLOW='\033[0;33m' # Yellow
_BLUE='\033[1;34m' # Bright Blue
_BRIGHT_GREEN='\033[1;32m' # Bright Green (for positive)
_BRIGHT_RED='\033[1;31m' # Bright Red (for negative)
_BRIGHT_WHITE='\033[1;37m' # Bright White
_DIM_RED='\033[91m' # Bright Red (for TODO files)
export SHELL_CONFIG="$SHELL_CONFIG:.bashrc" export SHELL_CONFIG="$SHELL_CONFIG:.bashrc"
# #
@ -62,17 +85,6 @@ function show_date() {
# Split the selected adjective into the adjective and classification parts # Split the selected adjective into the adjective and classification parts
IFS=':' read -r adjective classification <<< "$selected_adjective" IFS=':' read -r adjective classification <<< "$selected_adjective"
# Determine the color code based on the classification
case "$classification" in
"positive") text_color="\033[1;32m";;
"negative") text_color="\033[1;31m";;
*) text_color="";; # Default to no colour
esac
# ANSI escape codes for reset
reset_color='\033[0m'
hl_color='\033[1;34m'
# Get the current day of the week, day of the month, and year # Get the current day of the week, day of the month, and year
day_of_week=$(date "+%A") day_of_week=$(date "+%A")
day_of_month=$(date "+%d") day_of_month=$(date "+%d")
@ -88,8 +100,15 @@ function show_date() {
*) day_suffix="th";; *) day_suffix="th";;
esac esac
# Determine the color based on the classification
case "$classification" in
"positive") text_color="$_BRIGHT_GREEN";;
"negative") text_color="$_BRIGHT_RED";;
*) text_color="";;
esac
# Create the full date format with colored parts and the selected adjective # Create the full date format with colored parts and the selected adjective
full_date="Pray, be informed, on this ${text_color}${adjective}${reset_color} day,\n${hl_color}${day_of_week}${reset_color} the ${hl_color}${day_of_month}${day_suffix}${reset_color} day of ${hl_color}${month_name}${reset_color}, in the year of our Lord ${hl_color}${year}${reset_color}!" full_date="Pray, be informed, on this ${text_color}${adjective}${_NC} day,\n${_BLUE}${day_of_week}${_NC} the ${_BLUE}${day_of_month}${day_suffix}${_NC} day of ${_BLUE}${month_name}${_NC}, in the year of our Lord ${_BLUE}${year}${_NC}!"
# Print the full date # Print the full date
echo -e "$full_date" echo -e "$full_date"
@ -100,13 +119,17 @@ function show_date() {
# If not running interactively, don't do anything # If not running interactively, don't do anything
[[ $- != *i* ]] && return [[ $- != *i* ]] && return
# ============================================================================
# SHELL CONFIGURATION
# ============================================================================
export HISTCONTROL=ignoreboth:erasedups export HISTCONTROL=ignoreboth:erasedups
# Load custom gitstatus configuration # Load custom gitstatus configuration
[ -f "$HOME/.config/bash/gitstatus-custom.sh" ] && . "$HOME/.config/bash/gitstatus-custom.sh" [ -f "$HOME/.config/bash/gitstatus-custom.sh" ] && . "$HOME/.config/bash/gitstatus-custom.sh"
# Set PS1 with time, user@host, directory on first line, git status on second line, prompt on third line # Set PS1 with time, user@host, directory on first line, git status on second line, prompt on third line
PS1='\t \[\033[01;32m\]\u@\h\[\033[00m\] \[\033[01;34m\]\w\[\033[00m\]\n${GITSTATUS_PROMPT:+ $GITSTATUS_PROMPT\n}\[\033[01;$((31+!$?))m\]\$\[\033[00m\] \[\e]0;\u@\h: \w\a\]' PS1='\t \[\033[01;32m\]\u@\h\[\033[00m\] \[\033[1;34m\]\w\[\033[00m\]\n${GITSTATUS_PROMPT:+ $GITSTATUS_PROMPT\n}\[\033[01;$((31+!$?))m\]\$\[\033[00m\] \[\e]0;\u@\h: \w\a\]'
# If there are multiple matches for completion, Tab should cycle through them # If there are multiple matches for completion, Tab should cycle through them
bind TAB:menu-complete bind TAB:menu-complete
@ -138,45 +161,45 @@ echo -e " ${_WHITE}lftp cheat vimv 'flameshot gui' rclone mid3v2 zathura tessera
echo "" echo ""
if [ ${_mem_available%.*} -lt 5 ] ; then if [ ${_mem_available%.*} -lt 5 ] ; then
echo -ne "Memory available: \033[0;33m" echo -ne "Memory available: ${_YELLOW}"
[ ${_mem_available%.*} -lt 3 ] && echo -ne "\033[0;31m" [ ${_mem_available%.*} -lt 3 ] && echo -ne "${_RED}"
echo -n "${_mem_available}" echo -n "${_mem_available}"
echo -e "GB\033[0m" echo -e "GB${_NC}"
fi fi
if [ $_updates_available -gt 0 ] ; then if [ $_updates_available -gt 0 ] ; then
update_color="\033[1;37m" # default white update_color="$_BRIGHT_WHITE" # default white
if [ $_updates_available -gt 29 ] ; then if [ $_updates_available -gt 29 ] ; then
update_color="\033[0;31m" # red update_color="$_RED" # red
elif [ $_updates_available -gt 15 ] ; then elif [ $_updates_available -gt 15 ] ; then
update_color="\033[0;33m" # yellow update_color="$_YELLOW" # yellow
fi fi
echo -ne "Updates available: ${update_color}${_updates_available}\033[0m" echo -ne "Updates available: ${update_color}${_updates_available}${_NC}"
echo -ne " [ update with: ${update_color}update\033[0m ]" echo -ne " [ update with: ${update_color}update${_NC} ]"
echo "" echo ""
fi fi
_orphans_available="$(pacman -Qdtq 2>/dev/null | wc -l)" _orphans_available="$(pacman -Qdtq 2>/dev/null | wc -l)"
if [ $_orphans_available -gt 0 ] ; then if [ $_orphans_available -gt 0 ] ; then
echo -ne "Orphaned packages: \033[1;37m" echo -ne "Orphaned packages: $_BRIGHT_WHITE"
orphan_color="\033[1;37m" orphan_color="$_BRIGHT_WHITE"
if [ $_orphans_available -gt 9 ] ; then if [ $_orphans_available -gt 9 ] ; then
orphan_color="\033[0;31m" orphan_color="$_RED"
elif [ $_orphans_available -gt 4 ] ; then elif [ $_orphans_available -gt 4 ] ; then
orphan_color="\033[0;33m" orphan_color="$_YELLOW"
fi fi
echo -ne "${orphan_color}${_orphans_available}\033[0m" echo -ne "${orphan_color}${_orphans_available}${_NC}"
echo -ne " [ remove with: ${orphan_color}sudo pacman -Rns \$(pacman -Qdtq)\033[0m ]" echo -ne " [ remove with: ${orphan_color}sudo pacman -Rns \$(pacman -Qdtq)${_NC} ]"
echo "" echo ""
fi fi
echo "" echo ""
echo -e "Remember \"\033[1;34mTODO.md\033[0m\" and \"\033[1;34mautonote.md\033[0m\" files have content automatically displayed." echo -e "Remember \"${_BLUE}TODO.md${_NC}\" and \"${_BLUE}autonote.md${_NC}\" files have content automatically displayed."
echo -e "Edit these with \033[1;34met\033[0m and \033[1;34mea\033[0m" echo -e "Edit these with ${_BLUE}et${_NC} and ${_BLUE}ea${_NC}"
echo "" echo ""
. "$HOME/.config/bash/cheat.bash" . "$HOME/.config/bash/cheat.bash"
@ -193,7 +216,7 @@ alias backup='sudo borgmatic create --verbosity 1 --files'
function check_todo() { function check_todo() {
if [ -f "TODO.md" ]; then if [ -f "TODO.md" ]; then
echo echo
echo -e "\e[91mTODO.md\e[0m" echo -e "${_DIM_RED}TODO.md${_NC}"
echo "---------------------------" echo "---------------------------"
mdcat TODO.md mdcat TODO.md
echo "---------------------------" echo "---------------------------"
@ -204,7 +227,7 @@ fi
function check_autonote() { function check_autonote() {
if [ -f ".autonote.md" ]; then if [ -f ".autonote.md" ]; then
echo echo
echo -e "\e[91mautonote.md\e[0m" echo -e "${_DIM_RED}autonote.md${_NC}"
echo "---------------------------" echo "---------------------------"
mdcat .autonote.md mdcat .autonote.md
echo "---------------------------" echo "---------------------------"

View File

@ -13,9 +13,7 @@ function my_gitstatus_prompt_update() {
[[ "$VCS_STATUS_RESULT" == ok-sync ]] || return 0 # not a git repo [[ "$VCS_STATUS_RESULT" == ok-sync ]] || return 0 # not a git repo
local reset=$'\001\e[0m\002' # no color local reset=$'\001\e[0m\002' # no color
local green=$'\001\e[38;5;076m\002' # green - clean branch name local bright_white=$'\001\e[1;37m\002' # bright white - branch name and modified/untracked
local blue=$'\001\e[38;5;014m\002' # blue - informational (untracked)
local yellow=$'\001\e[38;5;011m\002' # yellow - action pending (staged, behind/ahead)
local red=$'\001\e[38;5;196m\002' # red - urgent attention (conflicts, merge) local red=$'\001\e[38;5;196m\002' # red - urgent attention (conflicts, merge)
local p local p
@ -34,27 +32,27 @@ function my_gitstatus_prompt_update() {
# Truncate long branch names and tags # Truncate long branch names and tags
(( ${#where} > 32 )) && where="${where:0:12}${where: -12}" (( ${#where} > 32 )) && where="${where:0:12}${where: -12}"
p+="${green}${where}" p+="${bright_white}${where}"
# Remote tracking status (yellow - action pending) # Remote tracking status (no color - less distracting)
(( VCS_STATUS_COMMITS_BEHIND )) && p+=" ${yellow}behind:${VCS_STATUS_COMMITS_BEHIND}" (( VCS_STATUS_COMMITS_BEHIND )) && p+=" ${reset}behind:${VCS_STATUS_COMMITS_BEHIND}"
(( VCS_STATUS_COMMITS_AHEAD && !VCS_STATUS_COMMITS_BEHIND )) && p+=" " (( VCS_STATUS_COMMITS_AHEAD && !VCS_STATUS_COMMITS_BEHIND )) && p+=" "
(( VCS_STATUS_COMMITS_AHEAD )) && p+="${yellow}ahead:${VCS_STATUS_COMMITS_AHEAD}" (( VCS_STATUS_COMMITS_AHEAD )) && p+="${reset}ahead:${VCS_STATUS_COMMITS_AHEAD}"
# Push remote status (yellow - action pending) # Push remote status (no color - less distracting)
(( VCS_STATUS_PUSH_COMMITS_BEHIND )) && p+=" ${yellow}push-behind:${VCS_STATUS_PUSH_COMMITS_BEHIND}" (( VCS_STATUS_PUSH_COMMITS_BEHIND )) && p+=" ${reset}push-behind:${VCS_STATUS_PUSH_COMMITS_BEHIND}"
(( VCS_STATUS_PUSH_COMMITS_AHEAD && !VCS_STATUS_PUSH_COMMITS_BEHIND )) && p+=" " (( VCS_STATUS_PUSH_COMMITS_AHEAD && !VCS_STATUS_PUSH_COMMITS_BEHIND )) && p+=" "
(( VCS_STATUS_PUSH_COMMITS_AHEAD )) && p+="${yellow}push-ahead:${VCS_STATUS_PUSH_COMMITS_AHEAD}" (( VCS_STATUS_PUSH_COMMITS_AHEAD )) && p+="${reset}push-ahead:${VCS_STATUS_PUSH_COMMITS_AHEAD}"
# CUSTOM: Stashes with "stash:" prefix instead of "*" # CUSTOM: Stashes with "stash:" prefix instead of "*"
(( VCS_STATUS_STASHES )) && p+=" ${reset}stashed:${VCS_STATUS_STASHES}" (( VCS_STATUS_STASHES )) && p+=" ${reset}stashed:${VCS_STATUS_STASHES}"
# Repository state and file counts (descriptive labels) # Repository state and file counts (minimal colors)
[[ -n "$VCS_STATUS_ACTION" ]] && p+=" ${red}${VCS_STATUS_ACTION}" [[ -n "$VCS_STATUS_ACTION" ]] && p+=" ${red}${VCS_STATUS_ACTION}"
(( VCS_STATUS_NUM_CONFLICTED )) && p+=" ${red}conflicts:${VCS_STATUS_NUM_CONFLICTED}" (( VCS_STATUS_NUM_CONFLICTED )) && p+=" ${red}conflicts:${VCS_STATUS_NUM_CONFLICTED}"
(( VCS_STATUS_NUM_STAGED )) && p+=" ${yellow}staged:${VCS_STATUS_NUM_STAGED}" (( VCS_STATUS_NUM_STAGED )) && p+=" ${reset}staged:${VCS_STATUS_NUM_STAGED}"
(( VCS_STATUS_NUM_UNSTAGED )) && p+=" ${yellow}modified:${VCS_STATUS_NUM_UNSTAGED}" (( VCS_STATUS_NUM_UNSTAGED )) && p+=" ${bright_white}modified:${VCS_STATUS_NUM_UNSTAGED}"
(( VCS_STATUS_NUM_UNTRACKED )) && p+=" ${blue}untracked:${VCS_STATUS_NUM_UNTRACKED}" (( VCS_STATUS_NUM_UNTRACKED )) && p+=" ${bright_white}untracked:${VCS_STATUS_NUM_UNTRACKED}"
GITSTATUS_PROMPT="${p}${reset}" GITSTATUS_PROMPT="${p}${reset}"
} }