Existe uma maneira confiável de verificar quantas cores meu emulador de terminal suporta?
Se for echo $TERM
impressa xterm
, isso indica inequivocamente quantas cores meu emulador de terminal suporta? Como eu pude verificar essas informações de maneira confiável?
terminal-emulator
Amelio Vazquez-Reina
fonte
fonte
Respostas:
O valor de
$TERM
não fornece muitas informações sobre o número de cores suportadas. Muitos terminais se anunciam comoxterm
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
OSC 4 ; c ; ? BEL
sequência de controle . Se o número da corc
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 responde nada. Aqui está um trecho do bash / zsh para consultar se a cor 42 é suportada (redirecione de / para o terminal, se necessário):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.
fonte
read -d $'\a' -s -t 1
faz?\a
(caractere de campainha), sem ecoar a entrada, com um tempo limite de 1 segundo.tput colors
consulta o banco de dados terminfo. As chances são de que você temTERM=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 definirTERM=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.printf … >/dev/tty
) e depois ler no terminal (read … </dev/tty
). O Xterm responde àOSC 4; …; ? BEL
sequência pressionando as teclas.Existe um script perl, 256colors2.pl , que exibirá todas as cores no seu terminal.
fonte
Você pode usar
Na minha instalação debian, o tput faz parte do
ncurses-bin
pacote que é instalado por padrão.fonte
TERM
, não quantas cores pode realmente suportam dada uma adequadaTERM