urxvt vs lxterminal (настройка цветов + vim (хочется странного))

Модератор: /dev/random

Ответить
Аватара пользователя
Hephaestus
Сообщения: 3729
Статус: Многоуважаемый джинн...
ОС: Slackware64-14.1/14.2
Контактная информация:

urxvt vs lxterminal

Сообщение Hephaestus »

Здравствуйте.
Долгое время использовал lxterminal.
Сейчас уже не вспомню, чем он мне насолил, но захотелось сменить.

Решил попробовать urxvt. Отзывы о нем неплохие + многократно упоминался, как обладатель некоторых фич.
Поставил версию с поддержкой Unicode.

Разумеется, встал вопрос о настройке и, прежде всего, цветовой схеме.
И вот тут выяснилось интересное обстоятельство: цвета не совсем соответствуют своим названиям,
а при использовании цветовой разметки в vim становится совсем худо.
На прикрепленных картинках два скриншота с результатом работы скрипта colortest.vim
Обратите внимание на цвет под названием brown: в lxterminal это значительно ближе к коричневому, а вот в urxvt он ближе к желтому. И в целом цветовая гамма в lxterminal выглядит приятнее (на мой вкус).

Настройки цветов в обоих терминалах дефолтные. urxvt запущен с ключом -rv.
В обоих терминалах vim'у выставлено set t_Co=8

Ну, допустим, оттенки цветов можно подкрутить в настройках urxvt (хотя не очень получилось), но дело даже не в этом.

В случае lxterminal при работе в vim используются первые 8 цветов.
А вот в urxvt в аналогичной ситуации вовсю задействованы цвета из последней "восьмерки": lightcyan, lightgreen и т.д. и вот это, боюсь, уже не исправишь простым заданием оттенков цвета.

Заметил также, что цвета в urxvt отображаются так же, как и в xterm.
Пробовал ставить urxvt-unicode-256color и даже создавал для него файл в terminfo - разницы никакой.

Сунулся я, было, в terminfo, посмотреть, откуда берет цвета lxterminal, так соответствующего файла не нашлось.
Таким образом, я не знаю, какова у него дефолтная схема, и сколько вообще цветов по дефолту.

Хочу привести цвета в urxvt вообще (и в vim, в частности) к той схеме, какая есть в lxterminal. Не только оттенки, но и яркость.

ЧЯДНТ?

Вложения
urxvt.png
lxterminal.png
Пускай скрипят мои конечности.
Я - повелитель бесконечности...
Мой блог
Спасибо сказали:
Аватара пользователя
/dev/random
Администратор
Сообщения: 5282
ОС: Gentoo

Re: urxvt vs lxterminal

Сообщение /dev/random »

Попробуйте добавить в .Xresources:

Код: Выделить всё

URxvt.color0: #000000
URxvt.color1: #aa0000
URxvt.color2: #00aa00
URxvt.color3: #aaaa00
URxvt.color4: #0000aa
URxvt.color5: #aa00aa
URxvt.color6: #00aaaa
URxvt.color7: #aaaaaa
URxvt.color8: #555555
URxvt.color9: #FF5555
URxvt.color10: #55FF55
URxvt.color11: #FFFF55
URxvt.color12: #5555FF
URxvt.color13: #FF55FF
URxvt.color14: #55FFFF
URxvt.color15: #FFFFFF
URxvt.background: #000000
URxvt.foreground: #aaaaaa


А насчёт "последней восьмёрки", не уверен, но попробуйте URxvt.intensityStyles: False
Спасибо сказали:
Аватара пользователя
Hephaestus
Сообщения: 3729
Статус: Многоуважаемый джинн...
ОС: Slackware64-14.1/14.2
Контактная информация:

Re: urxvt vs lxterminal

Сообщение Hephaestus »

Попробовал. Помогло, но не очень.
URxvt.intensityStyles: False переключает между осветленным оттенком и жирным.

Оттенки цветов в конце концов удалось привести к желаемому виду, установив urxvt-unicode-256color и указав
URxvt.termName: xterm-256color.
После этого цвета стали выглядеть так же, как в lxterminal.

Осталась проблема с использованием light-цветов.
Они, похоже, вообще ни к чему не привязаны и никак не регулируются. Как-то это не очень комфортно - использовать цвета, которые нельзя регулировать.
Попадалось, конечно что-то типа

URrxvt.color155: #d2d2d2, но это не работает. Это видимо, какой-то патч.

Интересно, что на белом фоне все цвета правильные.

Остаётся надежда, что эту ситуацию можно подправить через terminfo.

У терминалов типа lxterminal, xfce4-terminal файлов terminfo не обнаружилось, хотя цвета в них выглядят одинаково и правильно. Очень интересно.
Пускай скрипят мои конечности.
Я - повелитель бесконечности...
Мой блог
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20752
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: urxvt vs lxterminal

Сообщение Bizdelnick »

fflatx писал(а):
31.10.2013 07:49
URrxvt.color155: #d2d2d2, но это не работает

Вы сами же прописали:
fflatx писал(а):
31.10.2013 07:49
URxvt.termName: xterm-256color

А хотите, чтобы у Вас 24-битные цвета корректно отображались...
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
Hephaestus
Сообщения: 3729
Статус: Многоуважаемый джинн...
ОС: Slackware64-14.1/14.2
Контактная информация:

Re: urxvt vs lxterminal

Сообщение Hephaestus »

Bizdelnick писал(а):
31.10.2013 09:48
А хотите, чтобы у Вас 24-битные цвета корректно отображались...
Гкхм... Я не подумал об этом.
Тогда настройки цветов, которые предложил /dev/random тоже будут некорректны?
Я как-то плохо представляю, как уместить три цветовых компонента в 8 бит.

man urxvt говорит, ссылаясь на urxvt(7), что через ресурсный файл можно менять только 16 цветов, остальные через escape-последовательности. Правда, конкретного примера я там не увидел.
Этот способ подразумевает перекомпиляцию?


Решение пришло неожиданно.

Правильные цвета отображаются с белым цветом фона.
А также и другими цветами фона, отличными от #000000.
В результате поставил цвет фона #000001. На глаз тот же черный, и цвета правильные.



Пускай скрипят мои конечности.
Я - повелитель бесконечности...
Мой блог
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current
Контактная информация:

Re: urxvt vs lxterminal

Сообщение drBatty »

fflatx писал(а):
31.10.2013 18:45
Я как-то плохо представляю, как уместить три цветовых компонента в 8 бит.

в 8 бит не 3 компоненты пихаются, а 256 цветов, в каждом из которых 3 компоненты по 8 бит. "Палитра" называется.
fflatx писал(а):
31.10.2013 18:45
man urxvt говорит, ссылаясь на urxvt(7), что через ресурсный файл можно менять только 16 цветов, остальные через escape-последовательности.

так только индекс внутри палитры(8 бит) менять можно, но не сами цвета.
fflatx писал(а):
31.10.2013 18:45
В результате поставил цвет фона #000001. На глаз тот же черный, и цвета правильные.

скорее всего у вас какая-то кривая палитра...
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
Hephaestus
Сообщения: 3729
Статус: Многоуважаемый джинн...
ОС: Slackware64-14.1/14.2
Контактная информация:

Re: urxvt vs lxterminal

Сообщение Hephaestus »

drBatty писал(а):
31.10.2013 20:55
в 8 бит не 3 компоненты пихаются, а 256 цветов, в каждом из которых 3 компоненты по 8 бит. "Палитра" называется.
Хотелось бы понять, как это выглядит. И где это хранится.
И как это соотносится, например, с настройками цветов из поста #2 этой темы.
Где вроде тоже 24-битные цвета, Bizdelnick считает, что это не будет корректно отображаться при 256color, однако изначально у urxvt вообще 88 цветов,
а настроек в виде 24-битных чисел мне попадалось полным-полно. И вроде бы это работает.
Непонятно, одним словом.
drBatty писал(а):
31.10.2013 20:55
скорее всего у вас какая-то кривая палитра...
Да черт её знает. Криво лишь настолько, насколько кривы руки дистростроителей.
Ибо сейчас всё по дефолту из репов. Даже rxvt-unicode-256color в terminfo тоже из репов.


Пускай скрипят мои конечности.
Я - повелитель бесконечности...
Мой блог
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current
Контактная информация:

Re: urxvt vs lxterminal

Сообщение drBatty »

fflatx
ну я вам как скажу: я юзаю xfce4-terminal. Там всё хорошо. Цвета меняются вот так:

216.png


ну а настройки лежат в ~/.config/xfce4/terminal/terminalrc

вот они:
Spoiler
[Configuration]
MiscAlwaysShowTabs=FALSE
MiscBell=FALSE
MiscBordersDefault=TRUE
MiscCursorBlinks=FALSE
MiscCursorShape=TERMINAL_CURSOR_SHAPE_BLOCK
MiscDefaultGeometry=80x24
MiscInheritGeometry=FALSE
MiscMenubarDefault=TRUE
MiscMouseAutohide=FALSE
MiscToolbarDefault=FALSE
MiscConfirmClose=FALSE
MiscCycleTabs=TRUE
MiscTabCloseButtons=TRUE
MiscTabCloseMiddleClick=TRUE
MiscTabPosition=GTK_POS_TOP
MiscHighlightUrls=TRUE
ShortcutsNoMenukey=TRUE
ShortcutsNoMnemonics=TRUE
FontName=Monospace 11
ColorPalette=#000000000000;#aaaa00000000;#0000aaaa0000;#aaaa55550000;#00000000aa
aa;#aaaa0000aaaa;#0000aaaaaaaa;#aaaaaaaaaaaa;#555555555555;#ffff55555555;#5555fff
f5555;#ffffffff5555;#55555555ffff;#ffff5555ffff;#5555ffffffff;#8686ffffffff
ColorForeground=#9e9ececeffff

некоторые значения палитры я для теста поменял. Сейчас обратно поменяю.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current
Контактная информация:

Re: urxvt vs lxterminal

Сообщение drBatty »

fflatx
да, с исторической точки зрения, это вынужденная мера: раньше невозможно было к каждой точке прикрепить свой цвет в полной цветности. Потому на каждую точку приходилось не 16777216 цветов, а всего 256. Но если взять именно 256 цветов, то любая фотография будет выглядеть убого. Потому 256 цветов брали не абы какие, а только нужные -- т.е. брали фотку, и составляли список всех цветов на этой фотке. Из этого списка выбирали только часто встречающиеся 256 цветов, их и сохраняли в палитре. А потом этой палитрой и рисовали. Потому фотографии в те далёкие времена выглядели очень хорошо, не хуже, чем сейчас (и даже лучше, если сравнивать ЭЛТ монитор и сегодняшний планшет). А вот места такие фотографии занимали значительно меньше, ибо одна точка занимала не 4 байта, а всего 1. Ещё и обрабатывались в 4 раза быстрее. Человеческий глаз всё равно не различает разницу в синеве двух точек, если они не вплотную, а разделены некоторыми другими точками.

Ещё все люди немного дальтоники, и плохо видят разницу в красноте и синеве. Хуже, чем оттенки зелёного. Потому для красного/синего не нужно много бит, лучше их отдать на зелёный. Потому 16 бит делят на 6 бит зелёного, и 5+5 битов красного/синего. 16и битный цвет вполне годен, но только если там нет одноцветных переходов. Переход от светло-красного в тёмно-красный занимает всего 32 градации в 16и битах, что можно заметить. Но с палитрой он будет занимать все 256 градаций, потому вы ничего не заметите. Заметите лишь если вам покажут _одновременно_ градации всех цветов. Однако, кого, кроме телемастера, волнует такая настроечная таблица?

В итоге, полноцветное изображение IRL НЕ добавляет качества, за то сильно увеличивает тормоза, и жрёт память сотнями мегабайт. Но пипл -- хавает, и просит ещё...
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
/dev/random
Администратор
Сообщения: 5282
ОС: Gentoo

Re: urxvt vs lxterminal

Сообщение /dev/random »

fflatx писал(а):
31.10.2013 18:45
Решение пришло неожиданно.
Правильные цвета отображаются с белым цветом фона.
А также и другими цветами фона, отличными от #000000.
В результате поставил цвет фона #000001. На глаз тот же черный, и цвета правильные.

Интересно. Может, vim как-то хитро парсит переменную COLORFGBG? Попробуйте запустить urxvt в обоих вариантах (-bg '#000000' и -bg '#000001') и перед запуском vim очистить эту переменную.
Спасибо сказали:
Аватара пользователя
Hephaestus
Сообщения: 3729
Статус: Многоуважаемый джинн...
ОС: Slackware64-14.1/14.2
Контактная информация:

Re: urxvt vs lxterminal

Сообщение Hephaestus »

/dev/random писал(а):
01.11.2013 10:54
Интересно. Может, vim как-то хитро парсит переменную COLORFGBG? Попробуйте запустить urxvt в обоих вариантах (-bg '#000000' и -bg '#000001') и перед запуском vim очистить эту переменную.

/dev/random, признайтесь, Вы телепат? :)

Докладаю:
Для чистоты эксперимента временно запретил urxvt использование настроечного файла.
Запускаю urxvt -bg '#000000'
Значение переменной COLORFGBG cразу после запуска urxvt:

Код: Выделить всё

echo $COLORFGBG

15;default;0

Далее делаю unset COLORFGBG
Запускаю vim
Цвета в норме.
Если не очищать переменную, цвета НЕ в норме.

В случае запуска urxvt -bg '#000001'
Значение переменной на цвета vim'а не влияет - цвет всегда правильный.

При задействованном настроечном файле значение переменной COLORFGBG сразу после запуска

Код: Выделить всё

echo $COLORFGBG

default;default;0
Реакция на очистку данной переменной аналогичная - цвета приходят в норму.
Пускай скрипят мои конечности.
Я - повелитель бесконечности...
Мой блог
Спасибо сказали:
Ответить