O console do Linux pode exibir 16 cores?

1

Estou lendo a página de manual terminfo e gostaria de saber se o console do Linux pode use o tipo de terminal linux-16color em vez do tipo de terminal linux .

prompt% infocmp linux linux-16color
comparing linux to linux-16color.
comparing booleans.
comparing numbers.
colors: 8, 16.
ncv: 18, 42.
pairs: 64, 256.
comparing strings.
setab: '\E[4%p1%dm', '\E[4%p1%{8}%m%d%?%p1%{7}%>%t;5%e;25%;m'.
setaf: '\E[3%p1%dm', '\E[3%p1%{8}%m%d%?%p1%{7}%>%t;1%e;21%;m'.

Substitui o tipo de terminal linux em /etc/inittab por linux-16color , mas o console do Linux parece exibir apenas oito cores. Eu pensei que o tipo de terminal linux-16color poderia ser especificado para exibir dezesseis cores, relativas ao console do Linux. Eu também tentei definir a variável de ambiente TERM to linux-16color sem sucesso.

O console do Linux pode exibir dezesseis cores? O console Linux pode suportar o tipo de terminal linux-16color ?

Veja também

por Fólkvangr 24.08.2018 / 18:20

1 resposta

3

A descrição do terminal linux-16color usa o console piscando e em negrito -atribui para mapear códigos 0-15 nas 16 cores que o console é capaz de fazer. Na descrição, isso é feito usando 5 vs 25 e 1 x 21 constantes nos recursos setaf e setab que você pode observar na página de manual do console_codes (4).

Você pode achar mais fácil ver usando a opção -f de infocmp :

    setab=\E[4 
            %p1%{8}%m%d 
            %? 
                    %p1%{7}%> 
                    %t;5 
            %e 
                    ;25 
            %; 
            m,

A sequência (lendo de cima para baixo) faz isso:

  • envia um escape ASCII (o \E ),
  • seguido por [ e 4 ,
  • verifica se o primeiro parâmetro é maior que 7,
  • se for maior que 7, envia ; (um delimitador) e 5 (o atributo blink ),
  • caso contrário, envia ; 2 5 para desativar blink )
  • termina o SGR enviando m

Esses atributos funcionam com drivers VGA que (geralmente) não fazem o texto piscar ou usam uma fonte diferente para mostrar texto em negrito. Em vez disso, eles permitem estender o conjunto de cores (de maneira não padrão, é claro). Se você tiver um dispositivo de exibição diferente (como as máquinas virtuais com as quais trabalho), nada disso se aplica mais.

Há uma complicação desde que foi configurada: configurações que carregam uma fonte compatível com Unicode (ou seja, 512 glifos versus o 256 original) assumem um dos bits usados para essas 16 cores, então você realmente só tem 8 cores . Isso é mencionado aqui e ali isso, por exemplo , mas foi introduzido desde a última página de manual atualizado:

Due to the use of a 512-glyph LatArCyrHeb-16 font in the previous example, bright colors are no longer available on the Linux console unless a framebuffer is used. If one wants to have bright colors without framebuffer and can live without characters not belonging to his language, it is still possible to use a language-specific 256-glyph font, as illustrated below:

    
por 24.08.2018 / 22:10