Dlaczego emulatory terminali Linux nie obsługują pełnych kolorów?

12

Właśnie zaktualizowałem mój terminal gnome do używania 256 kolorów, ale jestem nieco zaskoczony, dlaczego emulator terminala nie obsługuje pełnej palety, jaką zapewnia każde nowoczesne środowisko pulpitu. Wydaje mi się, że jest ku temu techniczny powód, ale nie jestem tego świadomy.

Stefano Borini
źródło
2
„Terminal” jest nieco niejednoznaczny ... Czy mówisz o „ wirtualnych terminalach” („VT”) znalezionych w F1 do F6 na wielu systemach Linux / Unix, „ emulatorze terminali ”, którego używasz pod X, więc nie nie musisz używać VT, czy masz na myśli rzeczywisty „terminal” - proste połączenie klawiatury i ekranu (bez lub z minimalną mocą obliczeniową), które jest podłączone do komputera za pomocą kabla?
Baard Kopperud
17
Zarówno wirtualne terminale, jak i emulatory terminali emulują terminale staromodne ze standardowymi możliwościami (np. Vt100). Kiedy te terminale były w pobliżu, pamięć była znacznie większym problemem; więc możesz wybierać między dużymi pikselami / dużymi literami i wieloma kolorami, lub małymi pikselami / małymi literami i kilkoma kolorami - każda kombinacja zajmowałaby niewielką pamięć przeznaczoną do reprezentowania kropek na ekranie. Były przeznaczone dla programów tekstowych i ważniejsze było dopasowanie dużej ilości tekstu (wielu długich linii) niż wielu kolorów. Nie potrzebujesz wielu kolorów do „kodowania” różnych typów tekstu (np. Pogrubienie / kursywa).
Baard Kopperud,
3
@BaardKopperud To powinna być odpowiedź.
CVn
2
Tak, zasugerowałbym Baardowi opublikowanie tego komentarza jako odpowiedzi, ponieważ w zasadzie o to prosił OP. Ostatecznie jednak ktoś mógł rozwinąć vt100 + (lub cokolwiek) i wesprzeć, co tylko zechce. Zgaduję, że nikt tego nie zrobił, ponieważ jeśli chcesz imponującej grafiki, prawdopodobnie bardziej interesuje Cię jej uruchomienie pod X niż pod terminalem.
Bratchley,
3
W miarę zadawania pytań, pytając „jak mam ...?” zamiast „dlaczego to nie…?” ma dla mnie więcej sensu. Odpowiedź na „dlaczego nie?” może być „nie udało ci się tego zrobić”.

Odpowiedzi:

7

Nie ma technicznego powodu, aby nie było to możliwe. Jednak nie ma wielu powodów, dla których nie jest to praktyczne. Przy ograniczonej ilości powierzchni ekranu reprezentowanej przez postacie na ekranie trudno byłoby znaleźć więcej niż 256 jednoczesnych kolorów na ekranie.

O ile wiem, klienci terminalowi używają indeksowanej przestrzeni kolorów. Jednym z powodów jest to, że w najprostszej postaci 256 kolorów indeksowanych można opisać jednym bajtem. Podczas gdy przestrzeń kolorów RGB wymaga dwóch lub trzech bajtów. Biorąc pod uwagę sposób kodowania kolorów w strumieniu końcowym, każdy kolor będzie co najmniej dwa bajty + dowolny inteligentny znacznik. To może nie być duży problem z pamięcią, jednak w strumieniu sieci w czasie rzeczywistym może się sumować z opóźnieniem, szczególnie (popraw mnie, jeśli się mylę) każda postać jest wysyłana we własnym pakiecie.

Fredrik Andersson
źródło
2

Naprawdę nie ma aktualnego powodu. Inne niż być może kody ucieczki zostały dodane zaledwie kilka lat temu, aby obsługiwać prawdziwy kolor. Wiele terminali ma teraz obsługę 24-bitowych kolorów, patrz https://gist.github.com/XVilka/8346728

Kevin Tindall
źródło