Estou revisando minha resposta agora que tenho certeza das coisas.
Foi errado concluir que as seqüências ANSI estavam sendo manipuladas via BIOS ou fora do kernel; de fato, eles são tratados no kernel. Encontrei o que havia perdido antes graças ao hnaz_ no canal IRC do LinuxNewbies: drivers/char/vt.c
implementa uma emulação de um terminal Digital Equipment VT102 que é usado pelo driver do terminal virtual.
Então ... como resposta definitiva, depois de revisar o código-fonte que lida com as seqüências de escape para terminais virtuais: se você deseja suporte a 256 cores em terminais virtuais, precisará criar seu próprio kernel depois de estender o código que analisa as seqüências de escape para lidar com a especificação de cores mais ampla.
A função é chamada csi_m (). As alterações deverão ser semelhantes às que estendem os emuladores de terminal baseados em X para lidar com seqüências de escape, especificando os códigos de cores mais ricos. Provavelmente também haverá outras alterações necessárias, mas é aqui que você começaria.
kmscon
é um terminal da terra do usuário que tenta melhorar o terminal (incluindo cores de 24 bits). Embora seu desenvolvimento tenha estagnado em favor de uma alternativa sistemática.Seu RXVT de 256 cores / xterm / URXVT / etc é definido por terminfo e pela configuração da
TERM
variável. Na maioria das distribuições Linux, seus terminais virtuais são definidos/etc/inittab
e usam um tipo de terminal padrão que define quantas cores o terminal pode usar.Sim.
Verifique se o seu framebuffer está usando a resolução correta / profundidade de bits. Tente adicionar
vga=773
às opções do kernel, por exemplo, para obter 1024x768 e 256 cores (profundidade de cores de 8 bits).Defina um TERM diferente (por exemplo,
export TERM=foo
). Você precisará experimentar para encontrar o caminho certo. Se você encontrar um que funcione, poderá modificá-/etc/inittab
lo para que seus terminais virtuais o executem por padrão (consulte a próxima seção).Este artigo discute outras opções que podem funcionar para você. Ele recomenda o Qingy (Qingy não é GettY) como um substituto do getty e pode fornecer o que você está procurando se a troca de variáveis TERM não for uma opção.
Por falar em substituições de getty, eu juro que vi instruções para substituir o getty por
GNU screen
algum lugar ao longo do caminho. Não estou encontrando o link no momento, mas como há um TERM de 256 cores parascreen
, você pode procurar nele./etc/inittab
usa linhas como esta para configurar terminais virtuais:Aqui está a página de manual
/sbin/getty
(do meu sistema Debian, então é tecnicamente oagetty
programa):Observe o
baud_rate,... port [term]
lá no final. Isso corresponde ao comando da/etc/inittab
linha (/sbin/getty 38400 ttyN
) - observe que não há[term]
argumento; portanto, obtemos um padrão (executeecho $TERM
logo após o login em um console virtual para ver o que o sistema usa). Na página de manual novamente:Se você encontrar um TERM que funcione, modifique as linhas getty no seu inittab e adicione o TERM adequado no final:
fonte
Dê uma olhada no fbterm - é um buffer de quadro de substituição que pode ser executado no modo de 256 cores (você apenas o executa como root em um TTY)
Eu tive sucesso misto com ele - alguns aplicativos funcionam bem e relatam 256 cores; no entanto, o Emacs (a principal razão pela qual eu queria 256 cores no TTY) parece não funcionar; há um pouco de discussão sobre isso aqui, mas não é realmente resolvido:
http://lists.gnu.org/archive/html/emacs-devel/2011-08/msg00989.html
No entanto, mplayer deve funcionar!
fonte
emacs
dentrotmux
pode ajudar, pois deve traduzir as seqüências de escape para o terminal circundante.kmscon
O kmscon é uma maneira de obter 256 cores e vídeos sem ter um sistema Windows (X, Wayland) instalado.
Foi abandonado, mas atualmente é mantido por um garfo .
A documentação sobre a instalação é pequena, mas a página README aqui deve ajudá-lo.
Instalei isso e o uso para aplicativos de console que exigem 256 cores (vim devido à minha configuração).
Leia atentamente as instruções de instalação.
fonte
As seqüências de escape ANSI para definir as cores de primeiro e segundo plano do texto são as coisas que limitam aqui.
Da memória, essas sequências parecem algo como escape [01; 34m. Existem códigos nos anos 30 para primeiro plano e acho que os 40 para segundo plano.
Portanto, acho que não há como alcançar o que você está procurando.
fonte