Czy istnieje niezawodny sposób sprawdzenia, ile kolorów obsługuje mój emulator terminala?
Jeśli echo $TERM
drukuje xterm
, czy to jednoznacznie mówi mi, ile kolorów obsługuje mój emulator terminala? Jak mogę niezawodnie sprawdzić te informacje?
terminal-emulator
Amelio Vazquez-Reina
źródło
źródło
Odpowiedzi:
Wartość
$TERM
nie podaje zbyt wielu informacji o liczbie obsługiwanych kolorów. Wiele terminali reklamuje się jakoxterm
i może obsługiwać dowolną liczbę kolorów (2, 8, 16, 88 i 256 to wspólne wartości).Możesz sprawdzić wartość każdego koloru za
OSC 4 ; c ; ? BEL
pomocą sekwencji kontrolnej . Jeśli numer koloruc
jest obsługiwany i jeśli terminal zrozumie tę sekwencję sterowania, terminal odpowie z wartością koloru. Jeśli numer koloru nie jest obsługiwany lub terminal nie rozumie tej sekwencji kontrolnej, terminal nic nie odpowiada. Oto fragment bash / zsh służący do sprawdzenia, czy kolor 42 jest obsługiwany (w razie potrzeby przekieruj do / z terminala):Wśród popularnych terminali, xterm i terminale oparte na bibliotece VTE (Gnome-terminal, Terminator, Xfce4-terminal,…) obsługują tę sekwencję kontrolną; rxvt, konsola, screen i tmux nie.
Nie znam bardziej bezpośredniego sposobu.
źródło
read -d $'\a' -s -t 1
robi?\a
(znak dzwonka), bez wprowadzania echa, z limitem czasu 1 sekundy.tput colors
odpytuje bazę danych terminfo. Są szanse, że maszTERM=xterm
. Xterm może obsługiwać co najmniej 2, 8, 16, 88 lub 256 kolorów w zależności od wersji oraz opcji kompilacji i wykonania, ale baza danych terminfo może przechowywać tylko jedną wartość. Możesz ustawić np.TERM=xterm+256color
, Ale wtedy będziesz zirytowany, gdy zalogujesz się na maszynie, która nie ma tego wpisu w swojej bazie danych termcap / terminfo.printf … >/dev/tty
), a następnie odczytać z terminalu (read … </dev/tty
). Xterm reaguje naOSC 4; …; ? BEL
sekwencję, wprowadzając naciśnięcia klawiszy.Istnieje skrypt perla, 256colors2.pl , który wyświetli wszystkie kolory na twoim terminalu.
źródło
Możesz użyć
Na mojej instalacji Debiana tput jest częścią
ncurses-bin
pakietu instalowanego domyślnie.źródło
TERM
, a nie ile kolorów może w rzeczywistości obsłużyć, biorąc pod uwagę odpowiedniTERM