From a1d511779f1f36ffb191630b9cba2b3211adc690 Mon Sep 17 00:00:00 2001 From: Dirk Alders Date: Tue, 1 Jul 2025 21:48:13 +0200 Subject: [PATCH] giti - promp color masking for zsh/bash --- giti | 132 ++++++++++++++++++++++++++++++++++++----------------------- 1 file changed, 81 insertions(+), 51 deletions(-) diff --git a/giti b/giti index 3b614e5..7dd95de 100755 --- a/giti +++ b/giti @@ -1,45 +1,6 @@ #!/bin/bash # -# DEFINITIONS ##################################################################################### -COLOR_BACKGROUND="\033[48;2;48;64;72m" # RGB BACKGROUND -COLOR_FOR_AS_BACKGROUND="\033[38;2;48;64;72m" # RGB FOREGROUND LIKE BACKGROUND - -COLOR_DARKGREEN="\033[0;32m" # PROMPT LINES -COLOR_NORMAL="\033[0m" # RESET - -SYMBOL_START="$COLOR_NORMAL$COLOR_FOR_AS_BACKGROUND\Ue0b2$COLOR_BACKGROUND " -SYMBOL_END="$COLOR_BACKGROUND $COLOR_NORMAL$COLOR_FOR_AS_BACKGROUND\Ue0b0" -SYMBOL_SPLIT=" " -SYMBOL_BRANCH="\xee\x82\xa0" -SYMBOL_NEW="…" -SYMBOL_AHEAD="↑" -SYMBOL_BEHIND="↓" -SYMBOL_CHANGED="✚" -SYMBOL_COMMITED="●" -SYMBOL_STASH="⚑" - -COLOR_BRANCH_CLEAN="\033[38;2;0;192;0m" -COLOR_BRANCH_CHANGED="\033[38;2;255;192;8m" -COLOR_BRANCH_OUTDATED="\033[38;2;152;152;152m" -COLOR_BRANCH_COMMIT="\033[38;2;208;168;224m" -COLOR_BRANCH_BRANCH="\033[38;2;140;208;240m" -COLOR_NEW="\033[38;2;224;48;8m" -COLOR_AHEAD="\033[38;2;192;192;192m" -COLOR_BEHIND="$COLOR_AHEAD" -COLOR_CHANGED="\033[38;2;224;128;8m" -COLOR_COMMITED="\033[38;2;8;224;160m" -COLOR_STASH="\033[38;2;0;32;224m" -COLOR_URL="\033[38;2;0;224;192m" - -BRANCH_VAL="unknown" -AHEAD_VAL="0" -BEHIND_VAL="0" -NEW_VAL="0" -CHANGED_VAL="0" -COMMITED_VAL="0" - - # COMMAND LINE ARGUMENTS ########################################################################## usage="Usage: $0 [-p | output for prompt] [-s | short output]" while getopts "hps" options; do @@ -55,6 +16,66 @@ while getopts "hps" options; do esac done +# DEFINITIONS ##################################################################################### +if [[ $PROMPT == "True" ]]; then + COLOR_BACKGROUND="%{\033[48;2;48;64;72m%}" # RGB BACKGROUND + COLOR_FOR_AS_BACKGROUND="%{\033[38;2;48;64;72m%}" # RGB FOREGROUND LIKE BACKGROUND + COLOR_DARKGREEN="%{\033[0;32m%}" # PROMPT LINES + COLOR_NORMAL="%{\033[0m%}" # RESET +else + COLOR_BACKGROUND="\033[48;2;48;64;72m" # RGB BACKGROUND + COLOR_FOR_AS_BACKGROUND="\033[38;2;48;64;72m" # RGB FOREGROUND LIKE BACKGROUND + COLOR_DARKGREEN="\033[0;32m" # PROMPT LINES + COLOR_NORMAL="\033[0m" # RESET +fi + +SYMBOL_START="$COLOR_NORMAL$COLOR_FOR_AS_BACKGROUND\xee\x82\xb2$COLOR_BACKGROUND " +SYMBOL_END="$COLOR_BACKGROUND $COLOR_NORMAL$COLOR_FOR_AS_BACKGROUND\xee\x82\xb0" +SYMBOL_SPLIT=" " +SYMBOL_BRANCH="\xee\x82\xa0" +SYMBOL_NEW="…" +SYMBOL_AHEAD="↑" +SYMBOL_BEHIND="↓" +SYMBOL_CHANGED="✚" +SYMBOL_COMMITED="●" +SYMBOL_STASH="⚑" + +if [[ $PROMPT == "True" ]]; then + COLOR_BRANCH_CLEAN="%{\033[38;2;0;192;0m%}" + COLOR_BRANCH_CHANGED="%{\033[38;2;255;192;8m%}" + COLOR_BRANCH_OUTDATED="%{\033[38;2;152;152;152m%}" + COLOR_BRANCH_COMMIT="%{\033[38;2;208;168;224m%}" + COLOR_BRANCH_BRANCH="%{\033[38;2;140;208;240m%}" + COLOR_NEW="%{\033[38;2;224;48;8m%}" + COLOR_AHEAD="%{\033[38;2;192;192;192m%}" + COLOR_BEHIND="$COLOR_AHEAD" + COLOR_CHANGED="%{\033[38;2;224;128;8m%}" + COLOR_COMMITED="%{\033[38;2;8;224;160m%}" + COLOR_STASH="%{\033[38;2;0;32;224m%}" + COLOR_URL="%{\033[38;2;0;224;192m%}" +else + COLOR_BRANCH_CLEAN="\033[38;2;0;192;0m" + COLOR_BRANCH_CHANGED="\033[38;2;255;192;8m" + COLOR_BRANCH_OUTDATED="\033[38;2;152;152;152m" + COLOR_BRANCH_COMMIT="\033[38;2;208;168;224m" + COLOR_BRANCH_BRANCH="\033[38;2;140;208;240m" + COLOR_NEW="\033[38;2;224;48;8m" + COLOR_AHEAD="\033[38;2;192;192;192m" + COLOR_BEHIND="$COLOR_AHEAD" + COLOR_CHANGED="\033[38;2;224;128;8m" + COLOR_COMMITED="\033[38;2;8;224;160m" + COLOR_STASH="\033[38;2;0;32;224m" + COLOR_URL="\033[38;2;0;224;192m" +fi + +BRANCH_VAL="unknown" +AHEAD_VAL="0" +BEHIND_VAL="0" +NEW_VAL="0" +CHANGED_VAL="0" +COMMITED_VAL="0" + + # GIT COMMANDS #################################################################################### GIT_URL="$(LANGUAGE='en_US.UTF-8 git' git config --get remote.origin.url 2> /dev/null)" GIT_STATUS="$(LANGUAGE='en_US.UTF-8 git' git status -sb 2> /dev/null)" @@ -150,26 +171,35 @@ if [[ $PROMPT == "True" ]]; then if [[ $SHORT == "True" ]]; then echo -ne " $SYMBOL_START$GIT_STATUS_SUMMARY$SYMBOL_END" else - echo -e "$COLOR_DARKGREEN├$SYMBOL_START$GIT_STATUS_SUMMARY $COLOR_NORMAL$COLOR_BACKGROUND- $COLOR_URL$GIT_URL$SYMBOL_END" + echo -ne "$COLOR_DARKGREEN├" + echo -ne "$SYMBOL_START" + echo -ne "$GIT_STATUS_SUMMARY " + echo -ne "$COLOR_NORMAL$COLOR_BACKGROUND- " + echo -ne "$COLOR_URL$GIT_URL" + echo -ne "$SYMBOL_END" if [[ $GIT_PROMPT_DETAILS == "on" && ! -z "$GIT_FILES" ]]; then while IFS= read -r line ;do FILES_STATUS=${line:0:2} FILES_STATUS_CHANGED=${FILES_STATUS:1:1} if [[ $FILES_STATUS_CHANGED != "?" && $FILES_STATUS_CHANGED != " " ]]; then - echo -e "$COLOR_DARKGREEN│ $COLOR_BRANCH$line" + echo -ne "\n\r$COLOR_DARKGREEN│ $COLOR_BRANCH$line" fi done <<< "$GIT_FILES" fi - echo -ne "$COLOR_NORMAL\b" + echo -ne "$COLOR_NORMAL\n\r" fi else - echo -e "$SYMBOL_START$GIT_STATUS_SUMMARY $COLOR_NORMAL$COLOR_BACKGROUND- $COLOR_URL$GIT_URL$SYMBOL_END" - if [[ ! -z "$GIT_FILES" ]]; then - while IFS= read -r line ;do - if [[ $line != "??"* ]]; then - echo -e " $COLOR_BRANCH$line" - fi - done <<< "$GIT_FILES" + if [[ $SHORT == "True" ]]; then + echo -ne " $SYMBOL_START$GIT_STATUS_SUMMARY$SYMBOL_END$COLOR_NORMAL" + else + echo -e "$SYMBOL_START$GIT_STATUS_SUMMARY $COLOR_NORMAL$COLOR_BACKGROUND- $COLOR_URL$GIT_URL$SYMBOL_END" + if [[ ! -z "$GIT_FILES" ]]; then + while IFS= read -r line ;do + if [[ $line != "??"* ]]; then + echo -e " $COLOR_BRANCH$line" + fi + done <<< "$GIT_FILES" + fi + echo -ne "$COLOR_NORMAL" fi - echo -ne "$COLOR_NORMAL" -fi +fi \ No newline at end of file