Есть ли надежный способ проверить, сколько цветов поддерживает мой эмулятор терминала?
Если echo $TERM
печатает xterm
, это однозначно говорит мне, сколько цветов поддерживает мой эмулятор терминала? Как я могу проверить эту информацию надежно?
terminal-emulator
Амелио Васкес-Рейна
источник
источник
Ответы:
Значение
$TERM
не дает много информации о количестве поддерживаемых цветов. Многие терминалы объявляют себя какxterm
и могут поддерживать любое количество цветов (2, 8, 16, 88 и 256 являются общими значениями).Вы можете запросить значение каждого цвета с помощью
OSC 4 ; c ; ? BEL
последовательности управления . Если номер цветаc
поддерживается, и если терминал понимает эту последовательность управления, терминал ответит значением цвета. Если номер цвета не поддерживается или терминал не понимает эту последовательность управления, терминал ничего не отвечает. Вот фрагмент кода bash / zsh, чтобы узнать, поддерживается ли цвет 42 (перенаправить в / из терминала при необходимости):Среди популярных терминалов xterm и терминалы на основе библиотеки VTE (Gnome-терминал, Terminator, Xfce4-терминал,…) поддерживают эту последовательность управления; rxvt, konsole, screen и tmux нет.
Я не знаю более прямого пути.
источник
read -d $'\a' -s -t 1
делает?\a
(символ колокольчика) без повторяющегося ввода с таймаутом в 1 секунду.tput colors
запрашивает базу данных terminfo. Скорее всего, у вас естьTERM=xterm
. Xterm может поддерживать как минимум 2, 8, 16, 88 или 256 цветов в зависимости от версии и параметров компиляции и времени выполнения, но база данных terminfo может хранить только одно значение. Вы можете установить, напримерTERM=xterm+256color
, но тогда вы будете раздражены, когда войдете на компьютер, у которого нет этой записи в его базе данных termcap / terminfo.printf … >/dev/tty
), а затем прочитать с терминала (read … </dev/tty
). Xterm реагирует наOSC 4; …; ? BEL
последовательность, вводя нажатия клавиш.Существует Perl-скрипт, 256colors2.pl , который отображает все цвета на вашем терминале.
источник
Вы можете использовать
На моем Debian установка tput является частью
ncurses-bin
пакета, который установлен по умолчанию.источник
TERM
, а не сколько цветов он может реально поддерживать при наличии соответствующегоTERM