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.