Я пересматриваю свой ответ теперь, когда я уверен в вещах.
Было ошибочно заключать, что последовательности ANSI обрабатывались через BIOS или иным образом вне ядра; действительно, они обрабатываются в ядре. Я нашел то, что пропустил раньше благодаря hnaz_ на канале IRC LinuxNewbies: drivers/char/vt.c
реализует эмуляцию терминала Digital Equipment VT102, который используется драйвером виртуального терминала.
Итак ... в качестве окончательного ответа, изучив исходный код, который обрабатывает escape-последовательности для виртуальных терминалов: если вы хотите поддерживать 256 цветов на виртуальных терминалах, вам нужно будет собрать собственное ядро после расширения кода, который анализирует escape-последовательности для обработки более широкой цветовой спецификации.
Функция называется csi_m (). Изменения должны быть аналогичны тем, которые расширяют эмуляторы терминала на основе X для обработки escape-последовательностей, задающих более богатые цветовые коды. Вероятно, потребуются и другие изменения, но это то, с чего бы вы начали.
kmscon
что это пользовательский терминал, который пытается улучшить терминал (включая 24-битный цвет). Хотя его развитие застопорилось в пользу системной альтернативы.Ваш 256-цветный RXVT / xterm / URXVT / и т. Д. Определяются terminfo и настройкой
TERM
переменной. В большинстве дистрибутивов Linux ваши виртуальные терминалы определены/etc/inittab
и используют тип терминала по умолчанию, который определяет, сколько цветов может использовать терминал.Да.
Убедитесь, что ваш кадровый буфер использует правильное разрешение / битовую глубину. Попробуйте добавить
vga=773
в параметры ядра, например, чтобы получить 1024x768 и 256 цветов (8-битная глубина цвета).Установите другой срок (например,
export TERM=foo
). Вам нужно будет экспериментировать, чтобы найти правильный. Если вы найдете тот, который работает, вы можете изменить ваш/etc/inittab
так, чтобы ваши виртуальные терминалы запускали его по умолчанию (см. Следующий раздел).В этой статье рассматриваются другие варианты, которые могут работать для вас. Он рекомендует Qingy (Qingy не GettY) в качестве замены getty и может дать вам то, что вы ищете, если переключение переменных TERM не вариант.
Говоря о заменах getty, я клянусь, что видел инструкции по замене getty
GNU screen
где-то по пути. На данный момент я не нахожу ссылку, но, поскольку есть ТЕРМИН для 256 цветовscreen
, вы можете посмотреть на него./etc/inittab
использует такие строки для настройки виртуальных терминалов:Вот страница руководства
/sbin/getty
(из моей системы Debian, так что это техническиagetty
программа):Обратите внимание на
baud_rate,... port [term]
там в конце. Это соответствует команде в/etc/inittab
строке (/sbin/getty 38400 ttyN
) - обратите внимание, что[term]
аргумента нет , поэтому мы получаем значение по умолчанию (запускаемecho $TERM
сразу после входа в виртуальную консоль, чтобы увидеть, что использует ваша система). С manpage снова:Если вы найдете TERM, который работает, измените строки getty в вашем inittab и добавьте соответствующий TERM в конце:
источник
Взгляните на fbterm - это замещающий фрейм-буфер, который может работать в 256-цветном режиме (вы просто запускаете его как root из TTY)
Я имел смешанный успех с ним - некоторые приложения работают нормально, и сообщают 256 цветов; однако Emacs (основная причина, по которой я хотел 256 цветов в TTY), похоже, не работает; Здесь есть небольшая дискуссия, но она не решается:
http://lists.gnu.org/archive/html/emacs-devel/2011-08/msg00989.html
Тем не менее, mplayer должен работать!
источник
emacs
внутриtmux
может помочь, поскольку он должен транслировать escape-последовательности для окружающего терминала.kmscon
kmscon - это способ получить 256 цветов и видео без установки системы Windows (X, Wayland).
Он был заброшен, но в настоящее время поддерживается через вилку .
Документация по установке невелика, но страница README здесь поможет вам.
Я установил его и использую для консольных приложений, требующих 256 цветов (vim из-за моей конфигурации).
Внимательно прочитайте инструкцию по установке.
источник
Экранирующие последовательности ANSI для установки цветов текста переднего плана и фона - вот что здесь ограничивает.
По памяти эти последовательности выглядят как escape [01; 34m. В 30-х есть коды для переднего плана, и я думаю, 40-е для фона.
Поэтому я не думаю, что есть какой-то способ достичь того, что вы ищете.
источник