Изменить цвет PS1 в зависимости от цвета фона?

12

Я узнал, что я могу изменить формат PS1, особенно цвет строки. Тогда можно ли изменить цвет в зависимости от цвета фона оболочки? Или как определить цвет фона оболочки?

prosseek
источник

Ответы:

4

Насколько я знаю, нет способа запросить цвета эмулятора терминала. Вы можете изменить их с помощью \e]4;NUMBER;#RRGGBB\a(где NUMBERэто номер цвета терминала (0–7 для светлых цветов, 8–15 для ярких цветов) и #RRGGBBшестнадцатеричное значение цвета RGB), если ваш терминал поддерживает эту последовательность (ссылка: ctlseqs ).

Мощные механизмы цветовой схемы часто имеют настройку темного или светлого фона, которую необходимо указать, чтобы указать, есть ли у вас черный или темно-серый фон, или белый или светло-серый фон.

Когда вы настраиваете для себя, обычно достаточно решить, что вы всегда будете использовать один и тот же цвет фона.

Жиль "ТАК - перестань быть злым"
источник
Вы можете получить поддерживаемое количество цветов в элементе termcap, взглянув на «tput colors», но во многих случаях это будет небольшое число, например 8, потому что поддержка termcap для 256-цветных терминалов действительно слабая.
рабство
1
@slacy Для> 99% современных терминалов данные termcap / terminfo не имеют значения: все они представляют собой незначительные вариации xterm, а детали, которые отличаются, например количество цветов, не отражаются в значении TERMи поэтому не могут быть получены из окружающей среды.
Жиль "ТАК - перестать быть злым"
4

Если вы используете gnome-терминал, вы можете получить цвет фона для любого профиля, в данном случае для профиля по умолчанию, как

   $ gconftool-2 --get /apps/gnome-terminal/profiles/Default/background_color
   #E12FE12FC74D

тогда вы можете решить, как настроить ваше приглашение соответственно.

Диего Торрес Милано
источник
2

С помощью xterm вы можете запросить цвет фона с помощью \e]11;?\aescape-последовательности. Вам нужно прочитать ответ из терминала. Есть xtermcontrolкоманда, которая сделает это за вас:

~$ xtermcontrol --get-bg
rgb:b0b0/b0b0/b0b0
Стефан Шазелас
источник
То же самое работает в gnome-terminal и, возможно, в некоторых других эмуляторах терминала (но определенно не во всех).
egmont