Sélecteur de couleurs ANSI 256 | Toute la palette xterm-256color sur un écran
Une grille plate qui affiche les 256 couleurs définies par xterm-256color : 16 couleurs système, le cube RGB 6×6×6 (216 cellules) et la rampe de 24 niveaux de gris. Cliquez une cellule ou tapez un index 0-255 et l'outil fournit l'échappement avant-plan \e[38;5;Nm, l'échappement arrière-plan \e[48;5;Nm, la forme bash $'...', la forme printf \033[...] et le reset \e[0m — chacun sur sa ligne avec son propre bouton copier, plus le hex et le RGB affichés à titre d'info. Conçu pour le moment précis où vous ajustez un colorscheme Neovim, un starship.toml, la status-line de tmux ou un thème oh-my-zsh, et où vous n'avez aucune envie de jongler entre un memento ouvert dans un autre onglet et un PNG de palette 256 couleurs.
💡 À propos de cet outil
La numérotation 256 couleurs n'est pas du tout mémorisable. Les index 0-15 sont les emplacements "système" que chaque émulateur peint à sa façon. 16-231 forment le cube RGB, où l'index vaut 16 + r·36 + g·6 + b avec chaque canal dans {0,1,2,3,4,5}. 232-255 est une rampe de gris à 8 + 10·N. Les maths sont simples une fois lues, mais en pratique — quand vous voulez "un bleu un peu plus sombre" ou "un vert un cran plus terne" — recalculer l'index à la main est la friction qui pousse beaucoup de monde à abandonner et à passer en hex truecolor.
Ce sélecteur étale les 256 cellules sur trois sections pour que vous choisissiez à l'œil. La cellule sélectionnée reçoit un contour #ec1380, et deux bandes d'aperçu montrent la couleur retenue : l'une comme texte sur fond sombre, l'autre comme fond plein avec un texte basculé en blanc ou noir selon la luminance WCAG, pour vérifier le contraste avant d'enregistrer la couleur dans le thème. Tapez un index et la grille se synchronise ; cliquez une cellule et le champ numérique saute à cette position. Hex, RGB et les quatre formes de séquence se rafraîchissent ensemble.
Chaque sortie est dans sa propre carte avec un bouton de copie. Utilisez $'\e[38;5;Nm' quand vous assignez à une variable bash ou construisez un PS1 (bash interprète le quoting ANSI-C). Utilisez \033[38;5;Nm dans les chaînes de format printf ou tout contexte POSIX sh. Laissez \e[38;5;Nm brut pour echo -e et assimilés. Le reset \e[0m est sur sa propre ligne pour que vous l'attrapiez sans scroller.
🧐 Questions fréquentes
Q. Pourquoi les index 0-15 ne ressemblent pas à ce que je vois dans mon terminal ?
Les emplacements 0-15 sont la palette "système" que chaque émulateur réécrit avec son thème. Solarized, Gruvbox, Tokyo Night et les schémas par défaut d'iTerm2 ou Windows Terminal peignent ces slots différemment. Le sélecteur affiche la valeur par défaut d'xterm, qui correspond à un xterm-256color brut mais pas à votre émulateur avec un thème chargé. Pour des couleurs portables entre thèmes, visez les index 16-231 (cube RGB) — ces slots sont figés.
Q. Quelle différence entre \e[38;5;Nm et \033[38;5;Nm ?
Les deux encodent le même octet d'échappement (0x1B). \e est une extension reconnue par le quoting ANSI-C de bash ($'...') et par zsh, tandis que \033 (octal) et \x1b (hex) sont des formes portables comprises par printf. Choisissez \e pour des scripts purement bash, \033 pour du shell portable, et \x1b pour les langages avec échappements de style C.
Q. Le truecolor 24 bits existe. Ai-je toujours besoin des index 256 ?
Oui, quand le truecolor n'est pas fiable. tmux antérieur à 2.2, screen, certains sauts ssh, et de vieux builds Cygwin éliminent la forme 24 bits et retombent sur l'ANSI de secours. Si votre thème doit rendre la même couleur sur un xterm-256color nu et sur une alacritty moderne, l'index 256 couleurs est le plus petit dénominateur commun. Le truecolor (\e[38;2;R;G;Bm) est pour les environnements où vous avez déjà vérifié COLORTERM=truecolor.
Q. Mon PS1 a l'air correct mais le curseur saute à la mauvaise colonne.
Bash utilise la longueur en octets pour mesurer le prompt et compte les séquences d'échappement comme visibles à moins de les envelopper dans \[ et \]. Utilisez PS1='\[\e[38;5;82m\]\u@\h\[\e[0m\] ' (notez les crochets autour de la séquence de couleur). zsh a le même problème et utilise %{...%}. starship gère cela pour vous, ce qui explique en grande partie son succès.
Q. Comment l'aperçu d'arrière-plan choisit-il un texte noir ou blanc ? Il utilise la luminance relative WCAG avec un seuil de 0,5. Les cellules dont la luminance linéarisée dépasse 0,5 reçoivent un texte noir ; les autres, un texte blanc. C'est une vérification rapide de lisibilité, pas une garantie colorimétrique — votre terminal réel rendra un peu différemment selon le GPU et le profil de l'écran.
Q. Que se passe-t-il si je tape 300 ou -5 dans l'index ?
Le sélecteur écrête à [0, 255]. Une entrée non numérique est ignorée silencieusement (le parse échoue et aucune mise à jour n'est déclenchée).
📚 Le saviez-vous
L'extension 256 couleurs est arrivée avec le patch #115 d'xterm, vers 1999, d'après les notes de Thomas Dickey. Avant cela, on disposait des 8 couleurs ANSI (\e[30m–\e[37m) et du set "bright" 90-97. La demande pour 256 venait surtout de la communauté emacs et Vim, qui voulait des colorschemes plus riches que ce que 16 emplacements permettaient ; tty-color-define d'emacs précède l'extension xterm de quelques années et a été la preuve de concept que les émulateurs ont fini par reprendre.
Les niveaux du cube [0, 95, 135, 175, 215, 255] paraissent étranges car ils ne sont pas équidistants. Une distribution équidistante 0-51-102-153-204-255 mappe mal la luminosité perçue en sRGB, donc le cube a été calibré pour offrir plus de résolution dans les ombres. La rampe de gris 232-255 est en revanche un 8 + 10·N régulier, et c'est pour cela que les status-lines tmux et les fonds atténués se regroupent autour de colour234–colour240. Le fait que l'on écrive colour et non color dans la config tmux est généralement attribué à l'origine britannique de Nicholas Marriott ; color est accepté comme alias pour la portabilité, et les deux orthographes fonctionnent encore aujourd'hui.
Pour aller plus loin, la référence canonique reste XTerm Control Sequences (Dickey, édition continue) et l'entrée xterm.terminfo de ncurses-term. La plupart des mementos de terminal qu'on trouve en ligne dérivent leurs numéros de ces deux fichiers.