Pourquoi les émulateurs de terminaux Linux ne prennent-ils pas en charge les couleurs complètes?

12

Je viens de mettre à jour mon gnome-terminal pour utiliser 256 couleurs, mais je suis un peu perplexe sur la raison pour laquelle un émulateur de terminal ne peut pas prendre en charge la palette complète fournie par un environnement de bureau moderne. Je suppose qu'il y a une raison technique à cela, mais je n'en ai pas connaissance.

Stefano Borini
la source
2
"Terminal" est un peu ambigu ... Parlez-vous des " terminaux virtuels " ("VT") trouvés sur F1 à F6 sur de nombreux systèmes Linux / Unix, un " émulateur de terminal " comme vous utilisez sous X donc vous ne pas besoin d'utiliser les VT, ou voulez-vous dire un "terminal" réel - un simple combo clavier-écran (sans ou avec une puissance de traitement minimale) qui est connecté à l'ordinateur réel via un câble?
Baard Kopperud
17
Les terminaux virtuels et les émulateurs de terminaux émulent des terminaux à l'ancienne avec des capacités standardisées (par exemple, vt100). Lorsque ces terminaux étaient là, la mémoire était beaucoup plus un problème; vous pouvez donc choisir entre de gros pixels / grandes lettres et beaucoup de couleurs, ou de petits pixels / petites lettres et peu de couleurs - l'un ou l'autre combo prendrait le peu de mémoire mis de côté pour représenter les points sur l'écran. Ils étaient destinés aux programmes contenant uniquement du texte, et il était plus important d'ajuster beaucoup de texte (plusieurs longues lignes) que de nombreuses couleurs. Vous n'avez pas besoin de beaucoup de couleurs pour "coder" différents types de texte (par exemple gras / italique).
Baard Kopperud
3
@BaardKopperud Cela devrait être une réponse.
un CVn le
2
Oui, je suggérerais à Baard de poster ce commentaire comme réponse, car c'est essentiellement ce que le PO demandait. En fin de compte cependant, quelqu'un aurait pu développer vt100 + (ou autre) et prendre en charge tout ce qu'il voulait. Je suppose que personne ne l'a fait parce que si vous voulez des graphismes impressionnants, vous serez probablement plus intéressé à l'exécuter sous X que sous un terminal.
Bratchley
3
Au fur et à mesure des questions, je me demande "comment puis-je ...?" au lieu de "pourquoi n'est-ce pas ...?" est plus logique pour moi. La réponse à "pourquoi n'est-ce pas?" peut être "vous n'avez pas réussi à le faire".

Réponses:

7

Il n'y a aucune raison technique pour que cela ne soit pas possible. Cependant, il n'y a pas beaucoup de raisons pour lesquelles ce n'est pas pratique. Avec la quantité limitée d'espace d'écran que les personnages représentent à l'écran, vous auriez du mal à trouver une utilisation pour plus de 256 couleurs simultanées à l'écran.

Autant que je sache, les clients terminaux utilisent un espace colorimétrique indexé. L'une des raisons en est que dans sa forme la plus simple, 256 couleurs indexées peuvent être décrites avec un octet. Alors que l'espace colorimétrique RVB a besoin de deux ou trois octets. Compte tenu de la façon dont les couleurs sont codées dans un flux de terminal, chaque couleur aurait au moins deux octets + tout balisage intelligent. Ce n'est peut-être pas un gros problème de mémoire, mais quand sur un flux réseau en temps réel, cela peut augmenter la latence, en particulier (corrigez-moi si je me trompe), chaque personnage est envoyé dans son propre package.

Fredrik Andersson
la source
2

Il n'y a vraiment pas de raison actuelle . À part, peut-être, les codes d'échappement ont été ajoutés il y a seulement quelques années pour prendre en charge la vraie couleur. De nombreux terminaux prennent désormais en charge les couleurs 24 bits, voir https://gist.github.com/XVilka/8346728

Kevin Tindall
la source