Verificando quantas cores meu emulador de terminal suporta


Respostas:


20

O valor de $TERMnão fornece muitas informações sobre o número de cores suportadas. Muitos terminais se anunciam como xterme 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 OSC 4 ; c ; ? BEL sequência de controle . Se o número da cor cfor 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 responde nada. Aqui está um trecho do bash / zsh para consultar se a cor 42 é suportada (redirecione de / para o 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, terminal Xfce4, ...) suportam essa sequência de controle; rxvt, konsole, screen e tmux não.

Eu não sei de uma maneira mais direta.


Obrigado @Gilles. Isso parece ótimo. Posso perguntar o que read -d $'\a' -s -t 1faz?
Amelio Vazquez-Reina

1
@intrpc Leia a entrada até o primeiro \a(caractere de campainha), sem ecoar a entrada, com um tempo limite de 1 segundo.
Gilles 'SO- stop be evil'

5
@ l0b0 tput colorsconsulta o banco de dados terminfo. As chances são de que você tem TERM=xterm. O Xterm pode suportar pelo menos 2, 8, 16, 88 ou 256 cores, dependendo da versão e das opções de compilação e tempo de execução, mas o banco de dados terminfo pode armazenar apenas um valor. Você pode definir TERM=xterm+256color, por exemplo , mas ficará aborrecido ao fazer login em uma máquina que não possui essa entrada no banco de dados termcap / terminfo.
Gilles 'SO- stop be evil'

2
@ l0b0 Seu tubo obviamente não tem nada a ver com o terminal. Você precisa imprimir no terminal ( printf … >/dev/tty) e depois ler no terminal ( read … </dev/tty). O Xterm responde à OSC 4; …; ? BELsequência pressionando as teclas.
Gilles 'SO- stop be evil'



9

Você pode usar

$ tput colors

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


6
Isso só irá informar quantas cores seu terminal está relatando para o ambiente através TERM, não quantas cores pode realmente suportam dada uma adequadaTERM
MestreLion
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.