Por que os emuladores de terminal Linux não suportam cores completas?

12

Acabei de atualizar meu gnome-terminal para usar 256 cores, mas estou um pouco intrigado com o motivo pelo qual um emulador de terminal não pode suportar a paleta completa que qualquer ambiente de desktop moderno oferece. Acho que há uma razão técnica para isso, mas não estou ciente disso.

Stefano Borini
fonte
2
"Terminal" é um pouco ambíguo ... Você está falando dos " terminais virtuais " ("VTs") encontrados no F1 a F6 em muitos sistemas Linux / Unix, um " emulador de terminal " como você usa no X para não usar é necessário usar os VTs, ou você quer dizer um "terminal" real - uma combinação simples de tela do teclado (sem ou com apenas o mínimo de poder de processamento) conectada ao computador real via cabo?
precisa saber é o seguinte
17
Os terminais virtuais e os emuladores de terminal emulam terminais antigos com recursos padronizados (por exemplo, vt100). Quando esses terminais estavam disponíveis, a memória era muito mais um problema; para que você possa escolher entre pixels grandes / letras grandes e muitas cores, ou pixels pequenos / letras pequenas e poucas cores - qualquer combinação ocuparia a pouca memória reservada para representar os pontos na tela. Eles foram projetados para programas somente de texto, e era mais importante ajustar muito texto (muitas linhas longas) do que muitas cores. Você não precisa de muitas cores para "codificar" diferentes tipos de texto (por exemplo, negrito / itálico).
precisa saber é o seguinte
3
@BaardKopperud Isso deve ser uma resposta.
precisa
2
Sim, eu sugiro que Baard publique esse comentário como resposta, porque é basicamente isso que o OP estava pedindo. Em última análise, porém, alguém poderia ter desenvolvido o vt100 + (ou o que seja) e suportado o que quisesse. Acho que ninguém fez isso porque, se você quiser gráficos impressionantes, provavelmente estará mais interessado em executá-lo no X do que no terminal.
Bratchley
3
Como perguntas, perguntando "como faço para ...?" em vez de "por que não ...?" faz mais sentido para mim. A resposta para "por que não?" pode ser "você não conseguiu fazer isso".

Respostas:

7

Não há motivos técnicos para que isso não seja possível. No entanto, não existem muitas razões pelas quais não é prático. Com a quantidade limitada de espaço na tela que os caracteres representam na tela, seria difícil encontrar uso para mais de 256 cores simultâneas na tela.

Tanto quanto sei, os clientes do terminal usam espaço de cores indexado. Uma das razões para isso é que, na sua forma mais simples, 256 cores indexadas podem ser descritas com um byte. Enquanto o espaço de cores RGB precisar de dois ou três bytes. Considerando como as cores são codificadas em um fluxo de terminal, cada cor teria pelo menos dois bytes + qualquer marcação inteligente. Isso pode não ser um problema de memória de grande problema, no entanto, quando em um fluxo de rede em tempo real, pode aumentar a latência, especialmente (me corrija se estiver errado) cada caractere é enviado em seu próprio pacote.

Fredrik Andersson
fonte
2

Realmente não existe uma razão atual . Além de, talvez, os códigos de escape terem sido adicionados apenas alguns anos atrás para oferecer suporte à cor verdadeira. Muitos terminais têm suporte para cores de 24 bits agora, consulte https://gist.github.com/XVilka/8346728

Kevin Tindall
fonte