\e[1m #caractères gras
\e[38;2;R;V;Bm #couleur texte
\e[48;2;R;V;Bm #couleur arrière plan
\e[0m #réinitialiser ces modifications
\[...\] #pour que les séquences ne soient pas compter dans la longueur du texte
exemple de code à mettre dans le .bashrc (sans support pour le repo git)
#!/usr/bin/env python3
from pygit2 import Repository
branch = Repository(".").head.shorthand
print(branch)
On enregistre ces scripts sous git_repo & git_branch et on les rend exéutables avec chmod u+x, on les met dans le dossier ~/.local/bin qui doit apparaître dans echo $PATH .
Pour que ce soit plus lisible je sépare la partie git dans des fonctions bash, j’ajoute également deux variables pour suivre les passages d’une couleur à une autre :
WHITE=";2;255;255;255m"
GREY=";2;16;34;40m"
DARK_GREEN=";2;21;99;60m"
LIGHT_GREEN=";2;40;186;113m"
CURRENT_COLOR=$DARK_GREEN
NEXT_COLOR=$LIGHT_GREEN
function git_PS_COLOR_START() {
CURRENT_COLOR=$NEXT_COLOR
if git_repo; then
NEXT_COLOR=$GREY
echo -e "\e[38$CURRENT_COLOR\e[48$NEXT_COLOR"
else
echo -e "\e[0m\e[38$CURRENT_COLOR"
fi
}
function git_PS_TEXT() {
CURRENT_COLOR=$NEXTCOLOR
if git_repo; then
NEXT_COLOR=$GRAY
echo " $(git_branch) "
fi
}
function git_PS_COLOR_END() {
if git_repo; then
echo -e "\e[0m\e[38$GREY"
fi
}
function git_PS_ARROW() {
if git_repo; then
echo ""
fi
}
PS1="\[\e[1m\e[38$WHITE\e[48$CURRENT_COLOR\] \u@\h "
PS1="$PS1\[\e[38$CURRENT_COLOR\e[48$NEXT_COLOR\]\[\e[38$WHITE\] \w "
PS1="$PS1\[\$(git_PS_COLOR_START)\]\$(git_PS_TEXT)\[\$(git_PS_COLOR_END)\]\$(git_PS_ARROW) "
PS1="$PS1\[\e[1m\e[38$LIGHT_GREEN\]\$ \[\e[0m\]"