Verificando quantas cores meu emulador de terminal suporta

19

Existe uma maneira confiável de verificar quantas cores meu emulador de terminal suporta?

Se echo $TERM imprime xterm , isso me diz quantas cores meu emulador de terminal suporta? Como eu poderia verificar esta informação de forma confiável?

    
por Amelio Vazquez-Reina 01.11.2011 / 16:34

3 respostas

17

O valor de $TERM não fornece muita informação sobre o número de cores suportadas. Muitos terminais anunciam-se como xterm e podem suportar qualquer número de cores (2, 8, 16, 88 e 256 são valores comuns).

Você pode consultar o valor de cada cor com a sequência de controle OSC 4 ; c ; ? BEL . Se o número de cor c for suportado e se o terminal entender essa sequência de controle, o terminal responderá com o valor da cor. Se o número da cor não for suportado ou se o terminal não entender essa sequência de controle, o terminal não responderá a nada. Aqui está um snippet bash / zsh para consultar se a cor 42 é suportada (redirecionamento para / do terminal, se necessário):

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

Entre os terminais populares, o xterm e os terminais baseados na biblioteca VTE (terminal Gnome, Terminator, Xfce4-terminal,…) suportam esta sequência de controle; rxvt, konsole, screen e tmux não.

Eu não sei de uma maneira mais direta.

    
por 01.11.2011 / 23:34
11

Existe um script em Perl, 256colors2.pl , que exibirá todas as cores do seu terminal.

    
por 01.02.2012 / 08:32
8

Você pode usar

$ tput colors

Na minha instalação do debian, o tput faz parte do pacote ncurses-bin que é instalado por padrão.

    
por 17.06.2014 / 10:44