89 votes

Imprimer un motif de test de 256 couleurs dans le terminal

Comment imprimer un motif de test de 256 couleurs dans mon terminal ?

Je veux vérifier que mon terminal supporte correctement les 256 couleurs.

130voto

Tom Hale Points 2880

Modèle de test à 256 couleurs

Pour obtenir l'image ci-dessous, utilisez :

curl -s https://gist.githubusercontent.com/HaleTom/89ffe32783f89f403bba96bd7bcd1263/raw/ | bash

Modèle de test à 256 couleurs

Le code bash/zsh du gist est propre et compatible avec shellcheck, et prend également en charge "Regardez maman, pas de sous-processus !".


Alternativement, pour un petit script en bash :

for i in {0..255} ; do
    printf "\x1b[48;5;%sm%3d\e[0m " "$i" "$i"
    if (( i == 15 )) || (( i > 15 )) && (( (i-15) % 6 == 0 )); then
        printf "\n";
    fi
done

Pour une solution totale en excès, le script le plus complet est terminal-colors, avec 572 lignes de code et plusieurs formats de sortie.

Vous pouvez également afficher un modèle de test en vraies couleurs (24 bits).

40voto

Zanna Points 65764

J'ai trouvé un joli script Python sur GitHub écrit par Justin Abrahms qui imprime également les codes hexadécimaux des couleurs.

Téléchargez le script dans le répertoire de travail actuel

wget https://gist.githubusercontent.com/justinabrahms/1047767/raw/a79218b6ca8c1c04856968d2d202510a4f7ec215/colortest.py

Donnez-lui la permission d'exécution

chmod +x colortest.py

Exécutez-le :

./colortest.py

Voici le script complet en cas de liens brisés :

#!/usr/bin/env python
# Adapté en Python depuis http://www.vim.org/scripts/script.php?script_id=1349

print "Les indices de couleur devraient être dessinés en texte gras de la même couleur."
print

colored = [0] + [0x5f + 40 * n for n in range(0, 5)]
colored_palette = [
    "%02x/%02x/%02x" % (r, g, b) 
    for r in colored
    for g in colored
    for b in colored
]

grayscale = [0x08 + 10 * n for n in range(0, 24)]
grayscale_palette = [
    "%02x/%02x/%02x" % (a, a, a)
    for a in grayscale 
]

normal = "\033[38;5;%sm" 
bold = "\033[1;38;5;%sm"
reset = "\033[0m"

for (i, color) in enumerate(colored_palette + grayscale_palette, 16):
    index = (bold + "%4s" + reset) % (i, str(i) + ':')
    hex   = (normal + "%s" + reset) % (i, color)
    newline = '\n' if i % 6 == 3 else ''
    print index, hex, newline,

16voto

JRT Points 97

Alors que ce n'est pas vraiment un "modèle de test", j'ai xterm-color-chooser :

capture d'écran

9voto

egmont Points 7095

Un autre script, écrit par moi, est situé dans le référentiel VTE : https://git.gnome.org/browse/vte/plain/perf/256test.sh?h=vte-0-38.

Il nécessite une fenêtre de 120 colonnes ou plus, mais arrange les couleurs du cube 6x6x6 de manière agréable et compacte. Les premiers chiffres des indices sont supprimés pour des raisons de compacité, vous pouvez facilement les deviner. Les barres verticales vous permettent d'examiner le RGB exact de la couleur du premier plan sans que l'antialiasing ne se déclenche (comme c'est le cas avec les chiffres).

Le haut de la sortie (non montré dans la capture d'écran ci-dessous) démontre la folie qui entoure l'ambiguïté entre gras et lumineux, à savoir que la séquence d'échappement de la mise en gras combinée avec une des séquences d'échappement des 8 couleurs héritées pour le premier plan bascule également vers la couleur équivalente lumineuse, tandis qu'avec le nouveau style (256 couleurs) ce n'est plus le cas, même pour les 8 premières couleurs. Du moins c'est ainsi que xterm et VTE (Terminal GNOME etc.) se comportent.

Cette capture d'écran montre environ la moitié de la sortie :

Résultat de 256test.sh dans le Terminal GNOME

8voto

hansaplast Points 203

Peut-être superflu mais j'ai écrit une version qui affiche les 256 couleurs en utilisant l'arrière-plan avec une détection automatique de la largeur de la coquille pour que les couleurs soient plus facilement visibles.

https://gist.github.com/WoLpH/8b6f697ecc06318004728b8c0127d9b3

démonstration du test de 256 couleurs

#!/usr/bin/env python
from __future__ import print_function

import os
import shutil
import subprocess

def get_width(default=80):
    '''Tente de détecter la largeur de la console et défaut à 80'''
    try:
        columns, rows = shutil.get_terminal_size()
    except AttributeError:
        try:
            _, columns = subprocess.check_output(['stty', 'size']).split()
        except OSError:
            columns = os.environ.get('COLUMNS', default)

    columns = int(columns) - 77
    # Comme nous avons 6 colonnes avec 1 espace de chaque côté, nous pouvons incrémenter la taille pour chaque 12 colonnes supplémentaires
    return max(0, columns / 12)

# Basé sur https://gist.github.com/justinabrahms/1047767
colored = [0] + list(range(95, 256, 40))
colored_palette = [
    (r, g, b)
    for r in colored
    for g in colored
    for b in colored
]

grayscale_palette = [(g, g, g) for g in range(8, 240, 10)]

esc = '\033['
# Séquence de réinitialisation de toutes les couleurs
reset = esc + '0m'
# Couleur normale
normal = esc + '38;5;{i}m'
# Couleur grasse
bold = esc + '1;' + normal
# Couleur de fond
background = esc + '48;5;{i}m'

pattern = (
    '{normal}{background}{padding:^{width}}{i:^3d} '  # rembourrer l'arrière-plan
    '{r:02X}/{g:02X}/{b:02X}'  # afficher le code hex rgb
    '{padding:^{width}}'  # rembourrer l'arrière-plan de l'autre côté
    '{reset}'  # réinitialiser à nouveau
)

base_context = dict(reset=reset, padding='', width=get_width())

for i, (r, g, b) in enumerate(colored_palette + grayscale_palette, 16):
    context = dict(i=i, r=r, g=g, b=b, color=r + g + b, **base_context)
    context.update(bold=bold.format(**context))
    context.update(background=background.format(**context))

    # Changer la couleur du texte de noir à blanc lorsqu'il pourrait devenir illisible
    if max(r, g, b) > 0xCC:
        context.update(normal=normal.format(i=0))
    else:
        context.update(normal=normal.format(i=255))

    print(pattern.format(**context), end='')

    # Afficher des sauts de ligne au besoin
    if i % 6 == 3:
        print()
    else:
        print(' ', end='')

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X