Nerd Fonts pour la console

Les polices Nerd fonts vont nous permettre de modifier l’affichage de la ligne de commande :

Pour arriver à ce résultat on va simplement modifier les couleurs de ce squelette de texte :

On peut récupérer les caractères spéciaux de cette façons :

echo -e "\uE0B0" #glyphe flèche 
echo -e "\uE0A0" #glyphe branche git

Liste des autres glyphes

On va utiliser ces séquences d’échappement :

\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)

WHITE=";2;255;255;255m"
DARK_GREEN=";2;21;99;60m"
LIGHT_GREEN=";2;40;186;113m"

PS1="\[\e[1m\e[38$WHITE\e[48$DARK_GREEN\] \u@\h "
PS1="$PS1\[\e[38$DARK_GREEN\e[48$LIGHT_GREEN\]\[\e[38$WHITE\] \w "
PS1="$PS1\[\e[0m\e[38$LIGHT_GREEN\] \[\e[1m\e[38$LIGHT_GREEN\]\$ \[\e[0m\]"

Pour ajouter le support git :

Il faut un exécutable qui indique si on se trouve dans un repo git. On peut en faire un rapidement en python :

#!/usr/bin/env python3

import sys
from pygit2 import Repository

try :
    Repository(".")
except :
    sys.exit(1)

sys.exit(0)

Un autre pour afficher le nom de la branche

#!/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\]"
1 « J'aime »