Последовательность ANSI для изменения цвета переднего плана и фона Cygwin Mintty / Mac iTerm / Unix xterm - PullRequest
0 голосов
/ 30 марта 2019

У меня обычно много открытых окон на разных компьютерах.Я хочу, чтобы .bash_profile на каждой машине устанавливал цвет переднего плана и фона на цвет, специфичный для этой машины.

Я использую mintty на Cygwin и iTerm на Mac, а иногда xterm или atermили gnome-терминал.

Если я изменю цвета переднего плана и фона в графическом интерфейсе программы, они будут привязаны, и переход в EMACS или выполнение ls с параметром --color не изменяет его.

Но если я использую последовательность ANSI, чтобы установить цвет переднего плана и фона на 24-битный цвет, как только EMACS или ls попытаются перевести что-то в другой цвет, цвета моего терминала вернутся косновной цвет и цвет фона по умолчанию.

Есть ли способ изменить основной цвет и цвет фона по умолчанию с помощью ESCAPE SEQUENCE, а не с графическим интерфейсом?

1 Ответ

2 голосов
/ 30 марта 2019

Да, но он надежно реализован (и задокументирован) только в xterm . Это «динамические цвета» функция, которую использует программа xtermcontrol :

10 цветов (ниже), которые можно задать или запросить, используя 1 0 через 1 9 обозначены динамические цвета , так как соответствующие последовательности управления были первым средством для установки xterm цвета динамически, то есть после того, как это началось. Они не такой же, как цвета ANSI. Эти элементы управления могут быть отключены используя ресурс allowColorOps. Хотя бы один параметр ожидается для Pt . Каждый последующий параметр меняет следующий цвет в списке. Значение Ps указывает начальную точку в списке. Цвета указаны по имени или спецификации RGB согласно XParseColor.

Если задано "?" вместо имени или спецификации RGB, xterm отвечает контрольной последовательностью той же формы, которая может быть использован для установки соответствующего динамического цвета. Так как более одной пары номера цвета и спецификации могут быть заданный в одной управляющей последовательности, xterm может составить более одного ответить.

Для других терминалов они распознают части функции, но не полностью, и не предоставляют документацию (кроме их исходного кода) & mdash; YMMV

...