Note: ajout à la fin concernant le TrueColor.
J'ai récemment appris l'existence de 256 couleurs dans la console. À chaque fois que je cherche des infos sur les couleurs je tombe toujours sur les trucs basiques.
Mais récemment j'ai vu un peu trop de couleurs sur un screen. Ce qui m'a dirigé sur un dépôt contenant un $LS_COLORS particulièrement fourni.
En fait, il s'avère qu'en rajoutant extended dans la recherche "color shell" on puisse trouver quelque(s) ressource(s). J'aurais bien voulu y penser la semaine dernière, ça m'aurait évité de comprendre par tâtonnement...
Comme le lien ci-dessus est très bien expliqué je ne fais ici qu'un condensé. Je passe également sous silence les 8 et 16 couleurs.
Utilisation
<Esc>[FormatColorm
Le caractère <Esc> est obtenu avec les séquences suivantes:
- \e
- \033
- \x1B
(Pour bash et echo, utiliser l'option -e pour interpréter les séquences backslashés.)
FormatColor correspond à la couleur de texte, de fond ou l'effet. Plusieurs peuvent être mis en les séparant par des ';'. L'ordre n'a pas d'importance.
Couleur | Texte | Fond |
---|---|---|
Noir | 30 | 40 |
Rouge | 31 | 41 |
Vert | 32 | 42 |
Jaune | 33 | 43 |
Bleu | 34 | 44 |
Magenta | 35 | 45 |
Cyan | 36 | 46 |
Gris clair | 37 | 47 |
Les couleurs précédentes peuvent être configurées sur certains shells.
Effet | Code | Code annulation |
---|---|---|
normal | 0 | |
gras | 1 | 21 |
italique | 3 | 23 |
souligné | 4 | 24 |
clignotant | 5 | 25 |
inversé | 7 | 27 |
Couleur | Texte | Fond |
---|---|---|
Gris foncé | 90 | 40 |
Rouge clair | 91 | 101 |
Vert clair | 92 | 102 |
Jaune clair | 93 | 103 |
Bleu clair | 94 | 104 |
Magenta clair | 95 | 105 |
Cyan clair | 96 | 106 |
Blanc | 97 | 107 |
Couleur étendue avec X allant de 0 à 255 inclus:
- Texte: 38;5;X
- Fond: 48;5;X
Par contre, outre le fait que les couleurs étendues ne fonctionnent pas partout, elles peuvent allègrement pourrir le rendu. Pour retrouver un rendu normal: `tput reset`. À essayer sur les tty, c'est marrant ^^.
Le bout de code ci-dessous permet de visualiser la palette de couleur.
for m in 38 48 ; do
n=0
for l in {0..31} ; do
for c in {0..7} ; do
echo -ne "\033[$m;5;$n;1m$n\e[0m\t"
((++n))
done
echo
done
done
TrueColor
La console supporte aussi les couleurs hexadécimal.
\e[48;2;$r;$g;${b}m
pour le fond\e[38;2;$r;$g;${b}m
pour le texte
$r, $g et $b sont des valeurs allants de 0 à 255. Encore une fois, les effets comme gras, italique, etc, peuvent être ajoutés (echo -e '\e[38;2;205;110;0;3mplop'
pour un texte couleur cuivre et italique).
1 commentaire:
Récemment j'ai justement ajouté dans WeeChat le support des couleurs "ANSI" pour le résultat de commandes externes exécutées avec /exec (uniquement dans la version de dev).
La fonction de conversion peut convertir vers les couleurs internes WeeChat, ou bien les couleurs IRC (pour envoyer à quelqu'un via IRC).
Sinon WeeChat supporte 256 couleurs depuis plusieurs années, et c'est plus sympa que les 8 ou 16 couleurs de base du terminal :)
Enregistrer un commentaire