256 kolorów w konsoli (tty)


11

Załóżmy, że mam system bez X server. Mogę zalogować się tylko z konsoli. Wygląda na to, że domyślnie konsola linux obsługuje tylko 8 kolorów:

# tput colors
8

Czy w konsoli można użyć 256 kolorów, tak jak w emulatorze terminali (tj. Terminatorze)?

Podczas wyszukiwania w Google znalazłem wiele podobnych pytań (wiele z nich ma ponad 10 lat), ale nie ma jednoznacznej odpowiedzi. Ktoś sugeruje użycie bufora ramki, inni sugerują dodanie argumentu TERM do opcji rozruchu jądra.

W tej chwili przekazuję tylko jedną dodatkową opcję jako parametr rozruchowy jądra:

append="video=1280x720"

Wierzę, że przekazywanie rozdzielczości wideo działa tylko w nowoczesnych jądrach z kernel mode settingobsługą, ale nie jestem tego pewien.

Czy można używać 256 kolorów w nowoczesnej konsoli Linux (TTY)

W jaki sposób?

Używam Debian Wheezy z jądrem 4.1

AKTUALIZACJA:

na podstawie sugestii @muru, próbowałem fbterm. Chociaż działa z 256 kolorami, ma bardzo brzydkie / zniekształcone czcionki. Poza tym w lewym dolnym rogu stale miga kursor, co mnie rozprasza.

Czy mogę używać 256 kolorów w konsoli bez fbterm / framebuffer?

Skąd bierze się limit 8 kolorów w konsoli?



@muru - dziękuję za sugestię. Zaktualizowałem swoje pytanie.
Martin Vegter,

Oczywiście, jeśli ustawisz TERMsię xterm-256colorna konsoli Linux, będziesz po prostu otworzyć kolejną puszkę Pandory. Ten link daje podpowiedź.
Thomas Dickey,

RE: UPDATE Nie mam czcionki „brzydka / zniekształcona”, prawdopodobnie dlatego, że używam innej czcionki. Może to być zły $TERM(musi być fbterm przed rozpoczęciem fbterm) lub nie 32-bitowy tryb wideo lub oba. Wyłącz kursor konsoli przed uruchomieniem fbtermi włącz go, gdy tam będziesz, używając tput. unix.stackexchange.com/questions/220330/…
Paul Wratt

BTW Spojrzałem również na fbtermźródło, i byłoby łatwo (ale czasochłonne) przekonwertować sekwencje kodów specjalnych, aby użyć xterm-256colorzamiast nich ( fbterm-xterm). Konieczne $TERMbyłoby również wprowadzenie terminfoi termcapnazewnictwo konwencji ( fbterm-xterm-256colorlub fbterm-256color) w celu „umieszczenia” w istniejących skryptach powłoki. Zauważ, że fbtermużywa TERM=fbtermjako przełącznika do włączenia opcji 256 kolorów, w przeciwnym razie jego 16 kolorów (lub może to samo co podstawowa).
Paul Wratt

Odpowiedzi:


2

Rzeczywiste pytanie składa się z tych dwóch elementów:

  • Czy mogę używać 256 kolorów w konsoli bez fbterm / framebuffer?

  • Skąd bierze się limit 8 kolorów w konsoli?

Do pierwszego: najwyraźniej nie. Wszystkie sugerowane podejścia wykorzystują fbterm. Po drugie: pochodzi z opisu terminala (inaczej „wpis terminfo”). W przypadku konsoli Linux z TERMustawieniem na linux, że terminal obsługuje 8 kolorów. tput pobiera informacje z bazy danych terminali.

Jeden z elementów cytowanego wątku mówi, że fbterm używa innych sekwencji ucieczki do ustawiania kolorów niż xterm. Jeśli tak jest (i biorąc pod uwagę skłonność użytkowników Emacsa do twardego kodowania), nie ma odpowiedniego wpisu terminala dla fbterm.


Emulator terminala jądra Linux zyskał dodatkowe wsparcie SGR w ostatnich latach: github.com/torvalds/linux/commit/… github.com/torvalds/linux/commit/… github.com/torvalds/linux/commit/…
JdeBP

1
pewnie - być może nie przeczytałeś komentarza: Z powodu ograniczeń sprzętowych konsol VGA kolory * zostały obniżone do 16 nowych planów i 8 tła. Na konsolach fbdev można by je obsługiwać bez utraty jakości, ale dodanie tego wymagałoby dość dużej ilości kodu. *
Thomas Dickey

Już dawno przeczytałem komentarz i dlatego napisałem, że zyskał on dodatkowe wsparcie SGR . (-: Ale zauważ, że nie zawsze jest to limit 8 kolorów, jak napisałeś tutaj w 2016 roku.
JdeBP

To wciąż ta sama paleta 8 ANSI i 8 pogrubionych / jasnych ANSI, jak od ponad 25 lat (a ncurses ma linux-16 kolor od 2009 roku ).
Thomas Dickey

Wcześniej zajrzałem do źródła jądra (mniej więcej w czasie OP) i uznałem, że to prosty proces pozwalający na 256 kolorów ( linux-256color). Ta łatka nigdy nie zostanie zaakceptowana z tego samego powodu, co komentarz Thomasa Dickeya powyżej „Z powodu ograniczeń sprzętowych”. IE Linux musi działać na najniższym wspólnym mianowniku.
Paul Wratt
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.