Verifica di quanti colori supporta il mio emulatore di terminale


Risposte:


20

Il valore di $TERMnon fornisce molte informazioni sul numero di colori supportati. Molti terminali si pubblicizzano come xterme potrebbero supportare qualsiasi numero di colori (2, 8, 16, 88 e 256 sono valori comuni).

È possibile eseguire una query sul valore di ciascun colore con la OSC 4 ; c ; ? BEL sequenza di controllo . Se il numero di colore cè supportato e se il terminale comprende questa sequenza di controllo, il terminale risponderà con il valore del colore. Se il numero di colore non è supportato o se il terminale non comprende questa sequenza di controllo, il terminale non risponde a nulla. Ecco uno snippet bash / zsh per interrogare se il colore 42 è supportato (reindirizzare al / dal terminale se necessario):

printf '\e]4;%d;?\a' 42
if read -d $'\a' -s -t 1; then … # color 42 is supported

Tra terminali popolari, xterm e terminali basati sulla libreria VTE (Gnome-terminal, Terminator, Xfce4-terminal, ...) supportano questa sequenza di controllo; rxvt, konsole, screen e tmux no.

Non conosco un modo più diretto.


Grazie @Gilles. Questo sembra fantastico. Posso chiedere cosa read -d $'\a' -s -t 1fa?
Amelio Vazquez-Reina,

1
@intrpc Leggi l'input fino al primo \a(carattere di campana), senza input di eco, con un timeout di 1 secondo.
Gilles 'SO- smetti di essere malvagio'

5
@ l0b0 tput colorsinterroga il database terminfo. È probabile che tu abbia TERM=xterm. Xterm può supportare almeno 2, 8, 16, 88 o 256 colori a seconda della versione e delle opzioni di compilazione e runtime, ma il database terminfo può memorizzare solo un valore. Puoi impostare ad es. TERM=xterm+256color, Ma sarai infastidito quando accedi a una macchina che non ha questa voce nel suo database termcap / terminfo.
Gilles 'SO- smetti di essere malvagio' il

2
@ l0b0 La tua pipe ovviamente non ha nulla a che fare con il terminale. È necessario stampare sul terminale ( printf … >/dev/tty) e quindi leggere dal terminale ( read … </dev/tty). Xterm risponde alla OSC 4; …; ? BELsequenza iniettando i tasti.
Gilles 'SO- smetti di essere malvagio' il



9

Puoi usare

$ tput colors

Sul mio debian install tput fa parte del ncurses-binpacchetto che è installato di default.


6
Ciò informerà solo quanti colori il tuo terminale sta segnalando all'ambiente tramite TERM, non quanti colori può effettivamente supportare dato un appropriatoTERM
MestreLion
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.