Artificial Intelligence Services
0,0
рейтинг
9 декабря 2012 в 21:50

Администрирование → 256 цветов в терминале ⇒ уровень nightmare



Я тут строю некоторый велосипед с длинным отладочным выводом в stdout и меня взволновал вопрос серьезной расцветки лога. Современные терминалы xterm умеют и любят 256 цветов, но вот люди, которые придумывали escape-последовательности для этой палитры, стреноженные обратной совместимостью и латентной склонностью к криптографической эмпирике, все сделали так, что у меня ушло несколько часов, чтобы со всем этим разобраться. Интернет тоже не изобилует подробными разъяснениями, как оно там устроено.
Вкратце, текст в иксовый терминал можно нынче выводить кучеряво. Я набросал некое подобие сервиса, типа визивига для генерации escape-последовательностей. Выбрал цвета, начертание шрифта — получи набор закорючек. Тех же, кому интересны потроха — прошу под кат.

Цвета в xterm


Чтобы терминал понимал, что он может показать 256 цветов, ему надо об этом сказать:
  case "$TERM" in
    'xterm') TERM=xterm-256color;;
    'screen') TERM=screen-256color;;
    'Eterm') TERM=Eterm-256color;;
  esac

Сам цвет кодируется совершенно умопомрачительным образом. Escape-последовательность, начинающаяся традиционно с «\e[» и заканчивающаяся «m», состоит из флагов, цвета фона и цвета текста. Флаги для жирного, наклонного, подчеркнутого и инверсного (fg⇐⇒bg): 01, 03, 04, 07 соответственно (есть еще флаг для мигающего, но вдруг меня читают дети?). Флаги отмены этих стилей: 22, 23, 24, 27. Флаги можно записывать один за другим через точку с запятой, перед заключительной «m» точка с запятой не ставится.
Цвет текста имеет сигнатуру (пардон) 38;05; ЦВЕТ;. Цвет фона — 48;05; ЦВЕТ;. ЦВЕТ здесь — это ∀ целое число ∈ [1, 255]. Первые шестнадцать — хорошо нам знакомые старые терминальные цвета, последние 24 — градации серого, остальные — ну это остальные.
Вот как-то так (за картинку спасибо федоре):


Легко увидеть, что последовательность «\e[01;04;38;05;196;48;05;232m» включит режим жирного подчеркнутого красного на черном фоне.

Как цвет-то получить?


Цвета, оказывается, кодируются в оставшиеся 256 ­- 16 - 24 = 216 вариантов простым и понятным алгоритмом: градации rgb калибруются на шесть и цифра получается как RGB в шестиричной системе счисления, с «нулем в шестнадцати» (для #ff9900 это даст 16 + 5 * 6² + 3 * 6 + 0 = 214). Есть и исключения, как же без них. Те самые «стандартные» 16 цветов и градации серого. Ага.

Зачем это все?


Ну, во-первых, мне было любопытно. Во-вторых, три часа — не деньги. В-третьих, у меня теперь мой лог-файл так переливается, что выцепить что-нибудь взглядом стало еще сложнее. Ну и PS1, конечно, переписан с нуля.

В общем, если вам нужна escape-последовательность для конкретного цвета — вот вам WYSIWYG. Если кому-то зачем-то нужен оффлайн — @github.

Спасибо за внимание.

Upd: frexx.de/xterm-256-notes — хорошая ссылка по теме. Спасибо, yermulnik.
Алексей Матюшкин @matiouchkine
карма
–14,0
рейтинг 0,0
Artificial Intelligence Services
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Спецпроект

Самое читаемое Администрирование

Комментарии (79)

  • +1
    интересно.
    А вообще еще можно посмотреть в сторону grc, например, который из коробки умеет раскрашивать некоторое количество общеизвестных утилит.

    Автор молодец, такое сделать.
    • 0
      Раскрашивать общеизвестные утилиты нынче только ленивый не умеет. Но все (все!) они используют олдскульные 16 цветов. И grc (который, как и всякий комбайн, заведомо проигрывает vimdiff+tig для гита, ну и так далее) — тоже пугает вырвиглазностью.

      Я говорю а) про свой лог и б) про настройку любых сторонних утилит раскраски пастельными цветами.
      • –1
        А пример не могли бы привести, к примеру, для какого-нить лога, если Вам не сложно.
        А то я что-то сходу и не могу понять, как раскрашивать уже лежащий на винте чисто текстовый лог, например.
        • 0
          Если уже лежащий на винте, то взять тот же grc и подправить ему в конфигах цвета на человеческие.
          А если этот лог пишет ваш код — то тут прямо раззудись плечо:
          def err txt
            puts "\e[01;38;05;222;48;05;196m[ERR] \e[0m#{txt}"
          end
          
  • +2
    Ну и PS1, конечно, переписан с нуля.

    Не мучайте себя, возьмите zsh. Здесь цвета сокращаются до %F{blue}…%f/%K{blue}…%k (только первые 16, остальные имеют число вместо имени) (Foreground, bacKground), %B…%b для жирного, %U…%u — подчеркнутого и %S…%s — инверсного (похоже zsh не предоставляет возможности сделать текст наклонным с помощью %{char}. Не представляет проблемы, так как konsole и xterm всё равно это не поддерживают, только urxvt).
    • 0
      Спасибо за совет, я уже и не вспомню, сколько лет назад перешел на zsh. Чисто смеха ради, могу сказать, что цветной промпт, который я держу в гите вместе с другими настройками иногда выкатывается на чужие машины. Где, сюрприз, иногда бывают другие шеллы. Да и коллеги мои не всегда хотят на него переходить. Странно, правда, заставлять человека для чтения логов накатить другой шелл?

      И, честно признаться, я все равно не способен в голове высчитать число, которое нужно запихнуть в %F, чтобы получить бирюзовый на алом. А моему скрипту все равно, что генерировать.

      • 0
        Накатить для логов — нет. Когда меня попросили добавить в formatvim вывод с помощью ANSI escape последовательностей, мне тоже пришлось с этим разбираться. А вот писать PS1 в таком виде я бы никогда не стал. Точно так же, как не стал бы использовать в PS1 что‐то, кроме первых 16 цветов — мне ещё случается работать во framebuffer.
      • 0
        Относительно PS1 в других оболочках — я в этом отношении предпочитаю оставить приглашение по‐умолчанию или, в любом случае, отличное от того, что у меня в zsh, чтобы оно всегда напоминало мне о том, что это другая оболочка, в которой недоступны привычные мне возможности zsh.
        • +2
          А чем вам if не угодил-то? Framebuffer вам скажет «linux» на «echo $TERM».
          Кроме того я не предлагаю прямо эти кракозябры лепить. Можно же свой %F написать.
          • 0
            Зачем мне if, если можно просто иметь приглашение, которое работает везде?

            Как сделать в bash такое же приглашение, как в zsh, я легко могу решить. Но это не добавит возможностей zsh в bash.
  • 0
    Здорово! спасибо!
  • 0
    А по-моему, нагляднее сразу же в консольке посмотреть, что получится из той или иной escape-последовательности при помощи скриптика.
  • 0
    По ссылке пишут про «TERM=xterm256color», а в статье про «TERM=xterm-256color». Вопрос: в чём правда, брат? =)
    • 0
      Спасибо, теперь по ссылке тоже пишут правильно.
  • +1
    grep и tail цветных логов взрывает мне мозг.
    • 0
      Ну так приличный софт проверяет, что за терминал используется, подсвечивая выхлоп цветом только если это действительно терминал, а не файл или труба.
      • 0
        leto имеет в виду run_with_log | grep ERROR.
        • +1
          Дык, вы же выхлоп run_with_log отправляете в трубу. Следовательно, если этот самый run_with_log написан по-человечески, мусора в grep не будет.
          • 0
            Научите, пожалуйста, изнутри run_with_log определить, что мой вывод перенаправили в пайп.
            • +10
              Пожалуйста.
              Код
              #include <stdio.h>
              #include <unistd.h>
              
              #define RED         "\033[1;32;41m"
              #define GREEN       "\033[5;30;42m"
              #define OLDCOLOR    "\033[0;0;0m"
              
              main(){
              	if(isatty(STDOUT_FILENO)) printf(RED "This is a TTY! " GREEN "Output may be colorized!" OLDCOLOR "\n");
              	else printf("This is pipe, no colors!\n");
              }
              


              Выхлоп

              • +2
                Вот уж воистину: век живи — век учись. Спасибо!
              • 0
                А вот так можно сделать цветной printf
                #define RED			"\033[1;31;40m"
                #define GREEN		"\033[1;32;40m"
                #define OLDCOLOR	"\033[0;0;0m"
                
                int (*red)(const char *fmt, ...);
                int (*green)(const char *fmt, ...);
                
                int r_pr_(const char *fmt, ...){
                	va_list ar; int i;
                	printf(RED);
                	va_start(ar, fmt);
                	i = vprintf(fmt, ar);
                	va_end(ar);
                	printf(OLDCOLOR "\n");
                	return i;
                }
                
                int g_pr_(const char *fmt, ...){
                	va_list ar; int i;
                	printf(GREEN);
                	va_start(ar, fmt);
                	i = vprintf(fmt, ar);
                	va_end(ar);
                	printf(OLDCOLOR "\n");
                	return i;
                }
                
                int main(int argc, char *argv[]){
                	if(isatty(STDOUT_FILENO)){ // make color output in tty
                		red = r_pr_; green = g_pr_;
                	}else{ // no colors in case of pipe
                		red = printf; green = printf;
                	}
                …
                	red("Красный текст\n");
                …
                	green("Зеленый текст\n");
                }
                


                • 0
                  «Раньше были времена, а теперь мгновения. Раньше поднимался …, а теперь — давление.»

                  Кто ж нынче на си-то вывод раскрашивает? А на руби это две строчки ;-)
                  • +3
                    > Кто ж нынче на си-то вывод раскрашивает?
                    Я раскрашиваю. Язык простой, да и не знаю я больше ни одного ЯП, кроме С (мне и не надо — работа с программированием почти не связана). А хочется иной раз цветом важные моменты «выхлопа» программы подчеркнуть.
                    • 0
                      Во-первых, вы знаете еще как минимум shell script. Во-вторых — это во мне ностальгия разговаривает вместо меня самого.

                      Я всегда считал, что если человек задумывается о «выхлопе» — это настоящий программист. А если знает 800 языков — еще не факт.
                      • 0
                        > вы знаете еще как минимум shell script

                        Это не ЯП в строгом смысле слова.

                        > Я всегда считал, что если человек задумывается о «выхлопе» — это настоящий программист

                        Ну, я-то программистом не являюсь.
              • +1
                Python
                import sys
                
                RED = "\033[1;32;41m"
                GREEN = "\033[5;30;42m"
                OLDCOLOR = "\033[0;0;0m"
                
                if sys.stdout.isatty():
                    print("".join([
                        RED,
                        "This is a TTY! ",
                        GREEN,
                        "Output may be colorized!",
                        OLDCOLOR
                    ]))
                else:
                    print("This is pipe, no colors!")
                
                • +1
                  Да, спасибо, я уже и на руби справился.
    • 0
      Перед пайпом на grep или tail:
      sed -e '/\e[.*m//g'
      

  • 0
    а в ubuntu 12.04 если через putty подключаться (а там сказать что TERM=xterm-256color и что PuTTY поддерживает 256 цветов рапортовать) — не показывает 256 цветов.

    кто-нить с этим работал?

    p.s. проверял code.google.com/p/eddys-bash-scripts/source/browse/colors этим
    • 0
      А есть пример того, как оно должно выглядеть?
    • 0
      Я не люблю доверять скриптам, в которых такая кодировка. Кроме того там явно видны циклы seq 30 37, что тоже не особо радует.
      Попробуйте на целевой убунте «sudo apt-get install ncurses-term».
      • 0
        да-да. я не успел отписать что именно так и пофиксил. оказывается эти терминалы не стоят по-умолчанию!
    • +1
      Тот скрипт — для 16 цветов.
      Вот — он же для полного вырвиглазия:
      Скрытый текст
      #!/bin/bash
      TERM="xterm-256color"
      COLRS="$(seq 1 8 256)"
      
      for A in 1 2 4 5 7 8 9
      	do
      	echo -e "\033[0m\n\n Свойство $A:\n"
      	for B in $COLRS
      		do
      		echo -e  "\nЦвет $B\c"
      		for C in $COLRS
      			do
      				echo -e "\033[$A;38;05;$B;48;05;$C""m Фон $C\t\c"
      			done
      		echo -e "\033[0m\c"
      		done
      	done
      echo -e "\033[0m\n\n"
      

      • +1
        Вот пример (подсократил, чтобы влезло в один экран):
  • 0
    > последовательность «\e[01;04;38;05;196;48;05;232m» включит режим жирного подчеркнутого красного на черном фоне.

    Не нужно ESC коды писать. Здесь вам не DOS.

    echo -e "`tput bold; tput smul; tput setaf 196; tput setab 232`bold-underline-red-on-black"

    man terminfo
    • 0
      Я знаю, спасибо.

      Попробуйте написать syntax highlighter для HTML и терминала одновременно, и поймете, зачем могут потребоваться коды. Кроме того, числа 196 и 232 нужно откуда-то взять. Я не умею их в голове высчитывать.
  • +1
    Замечу, что в Mac OS X (терминал iTerm2) так же работает, но пример с сайта из топика надо модифицировать:

    $ export MY_CLR=$'\e[01;38;05;108;48;05;17m'
    $ echo "${MY_CLR}Hello"
    


    Отличие — в кавычках при установке MY_CLR.
    • +1
      Когда я выйду на пенсию, я допишу проверку браузера посетителя и генерацию правильного примера ;-)

      Ну это же просто пример, смысл-то в последовательности. В смысле, если вам зачем-то нужна эта последовательность, то вы уж наверняка знаете, как в вашем шелле принято переменные объявлять.
      • 0
        Ну это верно, я статью прочёл с удовольствием, но решил оставить «хинт» для маководов, ленящихся экспериментировать ;)

        Кстати, раз уж Вы всё равно займётесь этим сервисом на пенсии, сделайте, пожалуйста, генерацию и для zsh тоже. Мне вот для проверки пришлось bash включать. Хотя, для скриптов обычно именно bash идёт, так что у меня всё ок в принципе =)
        • 0
          Уточните, пожалуйста, в чем именно проблема.
          Я сам на zsh и все тестировалось там же. У вас, судя по всему, что-то с TERM в zsh не алё.
          • 0
            Собственно, выглядит так:


            А TERM задаётся в настройках iTerm2 и по умолчанию «xterm-256color», так что тут менять ничего не надо =)
            • +1
              Ой.

              А можно вас попросить попробовать вместо «\e» — «\033» и, особенно, настоящий Esc (вводится последовательным нажатием клавиш «Ctrl+V» и «Escape»)? Я повторить на zsh@ubuntu не могу.
              • 0
                С 033 и escape — то же самое. Может быть дело в oh-my-zsh?
                • 0
                  У меня тоже oh-my-zsh (у нас даже тема одна почти и та же, если вглядеться в мой пример на сайте). Дело, кажется, в разворачивании переменной. Ваш шелл почему-то всегда ${AAA} хочет выплюнуть на stdout.
                  Я попробую дотянуться до мака и починить, конечно же.
                • 0
                  export MY_CLR=$'ONE'
                  echo "${MY_CLR}"
                  

                  — два раза «ONE» печатает?
                  • 0
                    $  export AAA=$'AAA_AAA'
                    $  echo "${AAA}BBB"
                    AAA_AAABBB
                    

                    Всё вроде как нормально
                    • +1
                      Ладно, наскоком не вышло. Я попробую разобраться.
                      • 0
                        Ну жа, это было первое, что я сам проверил.
                        Спасибо!
            • 0
              попробуйте echo -e "${MY_CLR}Hello"
              и у меня не заработало с \e, но заработало с \033
              • 0
                Увы, результат аналогичный. =(
                • +3
                  macbook-011:~$ zsh
                  macbook-011% echo $TERM
                  xterm-color
                  macbook-011% export A='\033[01;38;05;108;48;05;17m'
                  macbook-011% echo -e "${A}Hello"                   
                  Hello
                  macbook-011% 
                  

                  Hello ярко белый и моргает
                  • 0
                    Кстати да, если без $ строку объявлять, а просто в одинарных кавычках, то всё работает.
                    Хм.

                    Спасибо! =)
                  • 0
                    Спасибо!

                    Только поясните, что значит «моргает»? И почему ярко-белый? Иными словами, если вы возьмете с сайта какой-нибудь вариант типа «\033[01;04;38;05;160;48;05;222m» (жирный красный на желтом с подчеркиванием) — он именно так отобразится? Или для мака (как обычно ;-)) все переписывать придется?

                    • 0
                      Похоже, вынужден Вас огорчить, ибо "\033[01;04;38;05;160;48;05;222m" у меня на маке (с xterm-color) отображается как подчеркнутый яркий белый, мигающий.
                      Но, в никсах, при том же xterm-color (не 256color, может в этом причина) отображается так же.

                      Но, опять-таки, может дело в моем терминале.
                      • 0

                        У меня вот так, а мигающего добиться не удалось =)
                        • +2
                          мигающего добиться не удалось


                          Спасибо! Вы сейчас немного приуменьшили энтропию.
                        • +1
                          image
                          и моргает (красненькое — то уже не то)
                          • 0
                            Даешь гифку!
                      • +1
                        не 256color, может в этом причина

                        Конечно, причина в этом. Я даже в записи об этом обмолвился.
                        export TERM=xterm-256color
                        

                        — должно помочь.
                        • 0
                          $ bash
                          macbook-011:~$ echo $TERM
                          xterm-color
                          macbook-011:~$ export A="\033[01;38;05;108;48;05;17m"
                          macbook-011:~$ echo -e "${A}Hello"
                          Hello
                          macbook-011:~$ export A="\e[01;38;05;108;48;05;17m"
                          macbook-011:~$ echo -e "${A}Hello"
                          \e[01;38;05;108;48;05;17mHello
                          
                          macbook-011:~$ export TERM=xterm-256color                                                                             
                          macbook-011:~$ echo $TERM                                                                                             
                          xterm-256color
                          macbook-011:~$ export A="\033[01;38;05;108;48;05;17m"                                                                 
                          macbook-011:~$ echo -e "${A}Hello"                                                                                    
                          Hello
                          macbook-011:~$ export A="\e[01;38;05;108;48;05;17m"                                                                   
                          macbook-011:~$ echo -e "${A}Hello"                                                                                    
                          \e[01;38;05;108;48;05;17mHello
                          
                          
                          $ zsh
                          macbook-011% echo $TERM
                          xterm-color
                          macbook-011% export A="\033[01;38;05;108;48;05;17m"
                          macbook-011% echo -e "${A}Hello"
                          Hello
                          macbook-011% export A="\e[01;38;05;108;48;05;17m"
                          macbook-011% echo -e "${A}Hello"                 
                          Hello
                          macbook-011% export TERM=xterm-256color              
                          zsh: can`t find terminal definition for xterm-256color
                          macbook-011% echo $TERM
                          xterm-256color
                          macbook-011% export A="\033[01;38;05;108;48;05;17m"
                          macbook-011% echo -e "${A}Hello"
                          Hello
                          macbook-011% export A="\e[01;38;05;108;48;05;17m"
                          macbook-011% echo -e "${A}Hello"
                          Hello 
                          


                          Во всех случаях текст выглядит одинаково: яркий, белый, мигающий.
                          • +1
                            Спасибо вам за долготерпение и готовность экспериментировать.

                            Я, к сожалению, начал понимать, что вариантов OS×SHELL×CIRCUMSTANCES здесь, как обычно, стопиццот.

                            Я попробую написать что-то внятное на страничке под заголовком «troubleshooting», когда соберу все случаи факапа.
                    • 0
                      Да, так и отображается, всё ок.
                      Ярко-белый у меня не моргает — уж не знаю почему =)
    • 0
      Fix от jackz — убираем символ $, меняем «e» на «033» и всё работает в zsh:

      $ export MY_CLR='\033[01;38;05;108;48;05;17m'
      $ echo "${MY_CLR}Hello"
      
      • +1
        Я это… читаю комментарии к своей записи :-).

        Там пока есть вопросы: habrahabr.ru/post/161999/#comment_5563239

        У вас получается то, что нужно? Я просто почти вышел на пенсию и готов допилить правильный показ команды. Но мака под рукой по-прежнему нет.
        • 0
          Вкратце для макоси в zsh надо:

          1. Делать экспорт надо в одинарных кавычках.
          2. Вместо "\e" ставить "\033".

          Для bash же надо оставить "\e" — 033 там не работает почему-то.
          • 0
            Ога. На страничке все поправил уже. Вот только баш, или zsh, — у человека, пришедшего ко мне на сайт, я определять не умею.

            Посоветуйте, как правильно оставить «заглавную строку»? Я сейчас к «\033» склонился, плюс там же есть еще блок «варианты».
            • 0
              Мне кажется, лучше в блоке с вариантами сделать подсказку: это для bash, это для zsh.
              • +1
                Моя убунта понимает оба, доступный rhel — только ровно наоборот вашему рассказу.

                В общем, я постараюсь охватить все многообразие, но держу в уме, что если уж кто-то пришел за esc-последовательностью, дальше он сам справится.

                Это негодный паттерн, я понимаю. Но у меня следующая запись в эти блоги рискует быть гораздо интереснее.
                • +1
                  Но у меня следующая запись в эти блоги рискует быть гораздо интереснее.

                  Дык я и подписался в расчёте на интересные статьи )
  • 0
    Хорошая ссылка по теме: frexx.de/xterm-256-notes/
    Есть ссылки на perl-скрипты для отображения набора всех цветов в консоли: один скрипт показывает все цвета с их номерами (xterm-colortest), другой — просто красивый color cube (256colors2.pl).
    Также в самом конце есть совет, как «включить» 256 цветов в screen'ах.
    • 0
      Ага, спасибо, вынес в запись. Поделитесь секретом, о чем нужно спросить гугл, чтобы он это отдал?

      ;-)

      • +1
        Т.к. у меня на фре в screen'ах не отображались 256 цветов (и скрины и xterm собраны с поддержкой 256 цветов), я гуглил по «freebsd screen 256 color». Третья ссылка (http://www.in-nomine.org/2005/09/20/screen-256-colours-and-termcap-mixed-with-putty-and-freebsd/ — в статье, кстати, есть рецепт и для vim'а, но мне он не пригодился), последний комментарий и ведёт на frexx.de/xterm-256-notes/ =)
        Кстати, у меня xterm и с TERM=xterm показывает 256 цветов. Т.е. изменение TERM на FreeBSD вообще не потребовалось. В том числе и для screen'ов.
        • +2
          Охтыж!

          Вспомнил смешную историю.
          Меня как-то коллега попросил помочь нагуглить решение какой-то проблемы. Я занят был, поэтому лаконично посоветовал: «добавляй ко мне запросам „slackware“». Еще два года вся команда на любой мой вопрос (типа «кофе идем пить?») хором отвечала: «а слакварь с нами?».

          Ну теперь я знаю, что «freebsd» — тоже ключевое словцо.
      • 0
        Если интересно, у меня есть скрипт, который выдаёт список из #RRGGBB кодов всех цветов для текущего терминала. Для работы требуется Vim, wmctrl (желательно), perl, YAML::XS, imagemagick (консольные команды и perl bindings). Желательно, чтобы окно терминала не имело декораций. Код, определяющий месторасположение таблицы цветов, по идее, должен работать с почти всеми декорациями, но медленно. Для работы также требуется, чтобы чёрный фон отличался от белого. Никаких более требований нету.

        Там же — списки цветов для используемых мною терминалов (откуда я взял default-8 уже не помню, у wineconsole цвета другие). Цвета у всех используемых мною эмуляторов (rxvt-unicode USE+=256-color, xterm, konsole) везде одинаковые, первые 16 цветов у konsole отличаются (и настраиваются). Насколько мне известно, как минимум xterm позволяет настраивать вообще все цвета.
  • 0
    Та не, «freebsd» в запросе было не просто для количества =) Судя по тэгам статьи, Вы экспериментировали под linux'ом. Я же работаю на фре. И по опыту знаю, что, если гуглить что-то по nix-тематике без конкретизации, то linux'овых решений будут столько, что найти нужное для freebsd будет проблематично. Тем более, что изредка даже linux'овые решения не подходят разным веткам linux'ов =)
    Так что тут просто привычка сработала: конкретизировать запросы, чтобы не копаться в ненужном — раз у Вас под linux'ом всё работает, вероятно проблема имеет какую-то особенность именно на фре =)

    ps: случайно ответил не в трид, а теперь не знаю, как удалить сообщение или переместить его в нужный трид =( сорри.
    • 0
      Да я шучу же ж. Проблемы поиска решений под свободной бздой™ мне знакомы не понаслышке.

      Не надо никуда ничего перемещать — оно и так последовательно.

  • +1
    Как минимум, в Konsole есть TrueColor:

    There is a predefined 256 color space compatible with his
    xterm sister, and, even beyond that, a 3-byte RGB color space.

    The ESC codes are as follows
    • 0
      xterm такое тоже поддерживает. Подозреваю, что с него и началось.

      rxvt-unicode — нет.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.