Imprimer un motif de test 256 couleurs dans le terminal

63

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

Je veux vérifier que mon terminal prend correctement en charge 256 couleurs.

Tom Hale
la source
tapez /cubesirssi ( source )
mirabilos

Réponses:

95

Mire 256 couleurs

Pour obtenir l'image ci-dessous, utilisez:

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

Mire 256 couleurs

Le gist bash/ zshcode est shellcheckpropre, et prend également en charge "Look Ma, pas de sous-processus!".


Alternativement, pour un bashquicky:

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 l'overkill total, le grand-père du lot est terminal-colorsun script de 572 lignes avec plusieurs formats de sortie .

Vous pouvez également imprimer un motif de test en couleurs vraies (24 bits) .

Tom Hale
la source
7
J'aime votre commentaire sur les niveaux de gris de la page des scripts GitHub - "#Pas 50, mais 24 nuances de gris"
Madison Cooper
1
Voici un autre test de couleur 24 bits: gist.github.com/lifepillar/09a44b8cf0f9397465614e622979107f
masterxilo
Pour courir terminal-colors, fairecurl -s https://raw.githubusercontent.com/eikenb/terminal-colors/master/terminal-colors | python
masterxilo
Qu'est-ce que @masterxilo terminal-colorset comment se compare-t-il aux options que j'ai proposées?
Tom Hale
à quoi ressemblerait le motif printf pour colorer le texte au lieu de l’arrière-plan?
ianstarz
35

J'ai trouvé un bon script Python pour cela sur GitHub écrit par Justin Abrahms, qui affiche également les codes hexadécimaux des couleurs.

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

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

lui donner la permission d'exécution

chmod +x colortest.py

Exécuter:

./colortest.py

Voici le script complet en cas de link-rot:

#!/usr/bin/env python
# Ported to Python from http://www.vim.org/scripts/script.php?script_id=1349

print "Color indexes should be drawn in bold text of the same color."
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, 
Zanna
la source
11

Bien que n'étant pas tout à fait un "motif de test", j'ai xterm-color-chooser :

capture d'écran

Grawity
la source
curl -s https://raw.githubusercontent.com/grawity/code/master/term/xterm-color-chooser | python3
masterxilo
7

Un autre script, écrit par moi, se trouve 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 dispose les couleurs du cube 6x6x6 de manière élégante et compacte. Les premiers chiffres des index sont supprimés pour des raisons de compacité, vous pouvez facilement les comprendre. Les barres verticales vous permettent d’examiner le RVB exact de la couleur de premier plan sans effectuer un repliement antialiasing (comme c’est le cas avec les chiffres).

La partie supérieure de la sortie (non illustrée dans la capture d'écran ci-dessous) montre la folie associée à l'ambiguïté audacieuse et brillante, à savoir que la séquence d'échappement d'audace combinée à l'une des séquences d'échappement de l'héritage 8 couleurs pour le premier plan passe également à la couleur de contrepartie brillante, alors qu'avec le nouveau style (compatible 256 couleurs), ce n'est plus le cas, même pour les 8 premières couleurs. Du moins, c’est ainsi que se comportent xterm et VTE (terminal GNOME, etc.).

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

Sortie de 256test.sh dans un terminal GNOME

Egmont
la source
2
curl -s -L https://git.gnome.org/browse/vte/plain/perf/256test.sh?h=vte-0-38 | bash
masterxilo
6

Peut-être superflu, mais j'ai écrit une version qui imprime les 256 couleurs à l'aide de l'arrière-plan avec détection automatique de la largeur de la coque afin que les couleurs soient plus facilement visibles.

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

Démo de test en 256 couleurs

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

import os
import shutil
import subprocess


def get_width(default=80):
    '''Attempt to detect console width and default to 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
    # Since we have 6 columns with 1 space on each side, we can increment the
    # size for every 12 extra columns
    return max(0, columns / 12)


# Loosely based on 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['
# Reset all colors sequence
reset = esc + '0m'
# Regular color
normal = esc + '38;5;{i}m'
# Bold color
bold = esc + '1;' + normal
# Background color
background = esc + '48;5;{i}m'

pattern = (
    '{normal}{background}{padding:^{width}}{i:^3d} '  # pad the background
    '{r:02X}/{g:02X}/{b:02X}'  # show the hex rgb code
    '{padding:^{width}}'  # pad the background on the other side
    '{reset}'  # reset again
)

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

    # Change text color from black to white when it might become unreadable
    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='')

    # Print newlines when needed
    if i % 6 == 3:
        print()
    else:
        print(' ', end='')
Wolph
la source
2
Si quelqu'un veut utiliser ce script dans une seule ligne, lancezcurl https://gist.githubusercontent.com/WoLpH/8b6f697ecc06318004728b8c0127d9b3/raw/250eb2e3f2acca1c51aa52adf611ec0380291e8a/colortest.py | python3
Tommaso Thea Cioni
Je suggèrecurl -s https://gist.githubusercontent.com/WoLpH/8b6f697ecc06318004728b8c0127d9b3/raw/colortest.py | python3
masterxilo
3

Un one-liner

Couleur de l'arrière plan

for i in {0..255}; do printf '\e[48;5;%dm%3d ' $i $i; (((i+3) % 18)) || printf '\e[0m\n'; done

couleur de premier plan

for i in {0..255}; do printf '\e[38;5;%dm%3d ' $i $i; (((i+3) % 18)) || printf '\e[0m\n'; done
qeatzy
la source