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


12

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

Ответы:


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
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.