256 cores no console (tty)

11

Suponha, eu tenho um sistema sem X server. Só consigo efetuar login no console. Parece que, por padrão, o console linux suporta apenas 8 cores:

# tput colors
8

É possível usar 256 cores no console, da mesma forma que eu usaria em um emulador de terminal (ou seja, terminador)?

Enquanto pesquisava no Google, encontrei muitas perguntas semelhantes (muitas delas com mais de 10 anos), mas nenhuma resposta clara. Alguém sugere usar o framebuffer, outras pessoas sugerem anexar o argumento TERM às opções de inicialização do kernel.

No momento, só passo uma opção extra como parâmetro de inicialização do kernel:

append="video=1280x720"

Acredito que a aprovação da resolução de vídeo só funciona em kernels modernos com kernel mode settingsuporte, mas não tenho certeza disso.

É possível usar 256 cores no console linux moderno (tty)

Quão?

Estou usando o Debian Wheezy com o kernel 4.1

ATUALIZAR:

com base na sugestão do @muru, eu tentei fbterm. Enquanto trabalha com 256 cores, possui fontes muito feias / ilegíveis. Além disso, há um cursor piscando constantemente no canto inferior esquerdo, o que acho perturbador.

Posso usar 256 cores no console sem fbterm / framebuffer?

De onde vem o limite de 8 cores no console?

Martin Vegter
fonte
@ muru - obrigado pela sugestão. Eu atualizei minha pergunta.
Martin Vegter
Claro, se você definir TERMa xterm-256colorpara o console Linux, você simplesmente abrir outra lata de vermes. Este link fornece uma dica.
Thomas Dickey

Respostas:

2

A questão real consiste nesses dois itens:

  • Posso usar 256 cores no console sem fbterm / framebuffer?

  • De onde vem o limite de 8 cores no console?

Para o primeiro: aparentemente não. Todas as abordagens sugeridas usam fbterm. Para o segundo: vem da descrição do terminal (também conhecida como "terminfo entry"). Para o console Linux, com TERMdefinido como linux, isso indica que o terminal suporta 8 cores. O tput obtém suas informações do banco de dados do terminal.

Um dos itens do segmento citado diz que o fbterm usa seqüências de escape diferentes para definir cores que o xterm. Se for esse o caso (e dada a propensão dos usuários do Emacs a codificar as coisas), não há entrada de terminal adequada para o fbterm.

Thomas Dickey
fonte
O emulador de terminal do kernel Linux ganhou algum suporte adicional ao SGR nos últimos anos: github.com/torvalds/linux/commit/… github.com/torvalds/linux/commit/… github.com/torvalds/linux/commit/…
JdeBP
com certeza - você pode não ter lido o comentário do check-in: Devido às limitações de hardware dos consoles VGA, as cores são * rebaixadas para 16 primeiro plano e 8 planos de fundo. Em consoles fbdev seria possível para apoiá-los sem perda de qualidade, mas acrescentando que exigiria uma quantidade bastante grande de código *.
Thomas Dickey
Eu já li o comentário há muito tempo, e foi por isso que escrevi que ele ganhou algum suporte adicional ao SGR . (-: Mas note que, portanto, nem sempre é um limite de 8 cores como você escreveu em 2016 aqui.
JdeBP 30/05
Ainda é a mesma paleta de 8 ANSI e 8 negrito / brilhante ANSI como tem sido há mais de 25 anos (e ncurses teve uma entrada linux-16color desde 2009 ).
Thomas Dickey