Existe-t-il un moyen fiable de vérifier le nombre de couleurs prises en charge par mon émulateur de terminal?
Si echo $TERM
imprime xterm
, est-ce que cela me dit sans équivoque combien de couleurs mon émulateur de terminal prend en charge? Comment puis-je vérifier ces informations de manière fiable?
terminal-emulator
Amelio Vazquez-Reina
la source
la source
Réponses:
La valeur de
$TERM
ne donne pas beaucoup d'informations sur le nombre de couleurs prises en charge. De nombreux terminaux se présentent commexterm
et peuvent prendre en charge n'importe quel nombre de couleurs (2, 8, 16, 88 et 256 sont des valeurs communes).Vous pouvez interroger la valeur de chaque couleur avec la
OSC 4 ; c ; ? BEL
séquence de contrôle . Si le numéro de couleurc
est pris en charge et si le terminal comprend cette séquence de contrôle, le terminal répondra avec la valeur de la couleur. Si le numéro de couleur n'est pas pris en charge ou si le terminal ne comprend pas cette séquence de contrôle, le terminal ne répond rien. Voici un extrait bash / zsh pour demander si la couleur 42 est prise en charge (rediriger vers / depuis le terminal si nécessaire):Parmi les terminaux populaires, xterm et les terminaux basés sur la bibliothèque VTE (Gnome-terminal, Terminator, Xfce4-terminal,…) prennent en charge cette séquence de contrôle; rxvt, konsole, screen et tmux ne le font pas.
Je ne connais pas de voie plus directe.
la source
read -d $'\a' -s -t 1
fait?\a
(caractère de cloche), sans écho d'entrée, avec un délai d'attente de 1 seconde.tput colors
interroge la base de données terminfo. Vous avez des chancesTERM=xterm
. Xterm peut prendre en charge au moins 2, 8, 16, 88 ou 256 couleurs selon la version et les options de compilation et d'exécution, mais la base de données terminfo ne peut stocker qu'une seule valeur. Vous pouvez définir par exempleTERM=xterm+256color
, mais vous serez ennuyé lorsque vous vous connecterez à une machine qui n'a pas cette entrée dans sa base de données termcap / terminfo.printf … >/dev/tty
) puis lire sur le terminal (read … </dev/tty
). Xterm répond à laOSC 4; …; ? BEL
séquence en injectant des touches.Il existe un script perl, 256colors2.pl , qui affichera toutes les couleurs sur votre terminal.
la source
Vous pouvez utiliser
Sur mon installation debian, tput fait partie du
ncurses-bin
paquet qui est installé par défaut.la source
TERM
, et non du nombre de couleurs qu'il peut réellement prendre en charge si cela est appropriéTERM