Что меня раздражает в linux консоли, так это дикий подбор цветов по умолчанию. Понятно, что восемь цветов доступные в терминале, сложились исторически и из соображений совместимости их никто не меняет. Однако, осознание этого факта нисколько не помогает мне разглядеть темно-синий текст на черном фоне. И то, что эта комбинация цветов активно используется (ls, vim, emacs) для отображения важной информации, совершенно не способствует улучшению душевного спокойствия.
Долгое время я боролся с симптомами. Старательно исправлял LS_COLORS, настройки световых схем в редакторах и т.п. И вот, наконец, до меня дошло, что я маюсь дурью. Дело в кривой палитре терминала и именно палитру надо менять, а не настройки отдельных программ. Ура! Кажется, я вижу свет в конце тонеля, осталось реализовать.
Первое, что для этого понадобится — способ отобразить доступные цвета. Чем проще будет способ, тем лучше, а что может быть проще команды echo в сочетании со стандартными escape-последовательностями console_codes (4)?
echo -e "
\033[031m;A line of text in red (color 1, default #aa0000)
\033[032m;A line of text in green (color 2, default #00aa00)
\033[033m;A line of text in brown (color 3, default #aa5500)
\033[034m;A line of text in blue (color 4, default #0000aa)
\033[035m;A line of text in magenta (color 5, default #aa00aa)
\033[036m;A line of text in cyan (color 6, default #00aaaa)
\033[037m;A line of text in white (color 7, default #aaaaaa)
\033[0m"
Выполнив эту команду, можно легко заметить, если какой-то из цветов делает текст плохо читаемым (RGB значения для цветов взяты из этого поста). Цель настройки, заменить их похожими цветами, но более удобными для восприятия.
Собственно, меня раздражает, только синий цвет, и если посмотреть на график чувствительности человеческого глаза в зависимости от длинны волны, становится понятно почему. Чувствительность глаза к свету с длинной волны около 400нм, магко говоря, так себе. Что делать? Добавить зеленую компоненту, чувствительность к которой максимальна. Например, если заменить синий цвет #0000aa на #0077aa, он начинает восприниматься гораздо лучше, но все еще остается вполне узнаваемым.
Что делать с цветом разобрались. Осталось выяснить, как изменения реализовать. В графических терминалах изменить цвет не проблема, так что останавливаться на этом не буду, но что делать с консолью? Оказалось, здесь помогут все те же escape-последовательности console_codes (4). С помощью ESC ] P nrrggbb
можно изменить цвета в VGA и frame buffer консоли. Например, чтобы заменить стандартный синий цвет на #0077aa, надо выполнить команду (можно добавить в ~/.profile):
echo -e "\033]P40077aa"
Вот собственно и все. Надеюсь, что больше к проблеме настройки цветов, возвращаться мне не придется.
А при просмотре фоток через консоль тогда чёго будет?
ОтветитьУдалитьЧехарда? Это же не наш метод!
Этот комментарий был удален автором.
ОтветитьУдалитьСпасибо тебе огромнейшее за пост. Раньше я точно так же менял для каждой программы цвет текста, а теперь это удобно можно сделать в одной команде. Респект за статью и спасибо огромное!
ОтветитьУдалить