Как включить цветной вывод RGB в терминале?

Как включить цветной вывод RGB в терминале?

Я пытаюсь вывести цветную строку на терминал gnome, используя escape-коды ANSI, но, хотя это работает для пользовательских цветов или даже для 256 дополнительных цветов, это не работает с кодами RGB.

Итак, упрощая:

cout << "\033[33m" << '.' << "\033[0m"; # prints with color
cout << "\033[38;5;135m" << '.' << "\033[0m"; # prints with color
cout << "\033[38;2;0;135;0m" << '.' << "\033[0m"; # doesn't work, prints with default color

Как вывести что-либо с цветовым кодом RGB в gnome-terminal?

Я перехожу по этой ссылке для получения результатов:Википедия ANSI escape-код.

Я добавил:

$ export TERM=xterm-256color

В мой файл .bashrc для поддержки 256 цветов и:

$ tput colors

Выводит 256, если это важно.

решение1

Цвета RGB не могут быть использованы в терминале по следующим причинам:

  • Bash не выбирает цвета командной строки.
  • Bash может указывать только цвета ANSI.

Две вышеприведенные причины очень тесно связаны. Большинство из них зависят от вашего экрана и спецификации цвета ANSI. Если вы используете хороший эмулятор терминала, вы можете установить пользовательские цвета RGB для определенных цветовых кодов ANSI.

Bash как оболочка бессилен в отношении того, что экран может делать с дисплеями. Он только передает слова с терминала на ваш экран. Экран может решить, что с ними делать. Экран может решить, какие цвета представляют escape-коды ANSI (если терминал вообще допускает цвета).

Обходной путь — изменить цветовые характеристики терминала. Однако очень немногие (я не знаю ни одной) позволят вам менять цвета.

решение2

Вам нужно vte >= 0.36 для работы true colors в gnome-terminal. Убедитесь, что ваш vte достаточно новый, и в этом случае ваш код должен работать.

(Примечание: когда вы выводите жестко закодированные строки, как вы делаете в вашем примере приложения, значение $TERM обязательно абсолютно не имеет значения. Оно имеет значение только в том случае, если вы используете библиотеки, поведение которых зависит от этого, например ncurses.)

Связанный контент