TTY com 256 cores?

20

Com o URxvt e o xterm, é possível usar um terminal virtual que suporte 256 cores, em vez de apenas oito. Como minha placa de vídeo Intel GMA é bem suportada pelo driver de framebuffer KMS, estou trabalhando exclusivamente no TTY. Infelizmente, ele suporta apenas oito cores, embora com o MPlayer (-vo fbdev / fbdev2) e outras ferramentas de framebuffer muito mais possam ser endereçadas. Existe uma maneira de dizer ao TTY para usar mais de oito cores?

    
por timn 08.11.2009 / 20:18

5 respostas

9

Estou revisando minha resposta agora que tenho certeza das coisas.

Foi errado concluir que as sequências ANSI estavam sendo tratadas via BIOS ou fora do kernel; de fato, eles são manipulados no kernel. Eu encontrei o que eu tinha perdido antes graças ao hnaz_ no canal IRN 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 uma resposta definitiva, tendo revisado o código-fonte que lida com as seqüências de escape para terminais virtuais: Se você quiser suporte a 256 cores em terminais virtuais você terá que construir seu próprio kernel após estender o código que analisa as seqüências de escape para lidar com a especificação de cor mais ampla.

A função é chamada csi_m (). As alterações terão que ser semelhantes àquelas que estendem os emuladores de terminal baseados em X para manipular as seqüências de escape especificando os códigos de cores mais ricos. Provavelmente haverá outras alterações necessárias também, mas é aí que você iniciaria.

    
por 12.11.2009 / 22:48
7

Seu RXVT / xterm / URXVT / etc de 256 cores são definidos pelo terminfo e pela configuração da variável TERM . Na maioria das distribuições Linux, seus terminais virtuais são definidos em /etc/inittab e usam um tipo de terminal padrão que define quantas cores o terminal pode usar.

Is there a way to tell the TTY to use more than eight colors?

Sim.

  • Verifique se o seu framebuffer está usando a resolução / profundidade de bits corretas. Tente adicionar vga=773 às opções do kernel, por exemplo, para obter 1024x768 e 256 cores (profundidade de cor de 8 bits).

  • Defina um TERMO diferente (por exemplo, export TERM=foo ). Você precisará experimentar para encontrar o caminho certo. Se você encontrar um que funcione, você pode modificar seu /etc/inittab para que seus terminais virtuais o executem por padrão (veja a próxima seção).

  • Este artigo discute outras opções que podem funcionar para você. Ele recomenda que o Qingy (Qingy não é o GettY) seja um substituto do getty, e pode lhe dar o que você está procurando, se estiver trocando variáveis TERM. é uma opção.

  • Por falar em substituições do getty, eu juro que vi instruções para substituir o getty por GNU screen em algum lugar ao longo do caminho. Não estou encontrando o link no momento, mas como há um TERM de 256 cores para screen , você pode investigar isso.

/etc/inittab usa linhas como esta para configurar terminais virtuais:

# Format:
#  <id>:<runlevels>:<action>:<process>
#
1:2345:respawn:/sbin/getty 38400 tty1
2:2345:respawn:/sbin/getty 38400 tty2
3:2345:respawn:/sbin/getty 38400 tty3

Aqui está a manpage em /sbin/getty (do meu sistema Debian, então é tecnicamente o programa agetty ):

SYNOPSIS
       agetty [-8ihLmnw] [-f issue_file] [-l login_program] [-I init]
       [-t timeout] [-H login_host] baud_rate,...  port [term]

Observe o baud_rate,... port [term] no final. Isso combina com o comando na linha /etc/inittab ( /sbin/getty 38400 ttyN ) - note que não há [term] argumento, então nós temos um padrão (run echo $TERM logo após você logar em um console virtual para ver qual o seu sistema usa). Da manpage novamente:

ARGUMENTS
       term   The value to be used for the TERM environment variable.  This  over‐
              rides  whatever  init(8) may have set, and is inherited by login and
              the shell.

Se você encontrar um TERM que funcione, modifique as linhas getty em seu inittab e adicione o TERM adequado no final:

1:2345:respawn:/sbin/getty 38400 tty1 TERM-with-256-colors
2:2345:respawn:/sbin/getty 38400 tty2 TERM-with-256-colors
    
por 13.11.2009 / 03:43
6

Dê uma olhada no fbterm - é um framebuffer de substituição que pode ser executado no modo de 256 cores (basta executá-lo como root em um TTY)

Eu tive sucesso com isso - 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:

link

No entanto, o mplayer deve funcionar!

    
por 24.10.2012 / 13:22
0

kmscon

kmscon é uma maneira de obter 256 cores e vídeos sem ter um sistema Windows (X, Wayland) instalado.

Ele foi abandonado, mas é mantido atualmente por meio de um fork .

A documentação sobre a instalação é pequena, mas a página README aqui deve ajudá-lo.

Instalei isso e usei para aplicativos de console que exigem 256 cores (vim devido à minha configuração).

Leia atentamente as instruções de instalação.

    
por 06.09.2018 / 17:47
-1

As sequências de escape ANSI para definir as cores de primeiro e segundo plano do texto são o que limitam as coisas aqui.

Da memória, essas sequências parecem algo como fuga [01; 34m. Existem códigos nos anos 30 para o primeiro plano e eu penso 40 para o fundo.

Então, não acho que haja uma maneira de alcançar o que você está procurando.

    
por 10.11.2009 / 20:05