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.
    Поделиться публикацией
    Похожие публикации
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама
    Комментарии 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
                                                                и моргает (красненькое — то уже не то)
                                                            • +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 — нет.

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