Змінити колір PS1 на основі кольору фону?


12

Я дізнався, що можу змінити формат PS1, особливо колір рядка. Тоді чи можна змінити колір, виходячи з кольору фону оболонки? Або як я можу виявити колір фону оболонки?

Відповіді:


4

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

Потужні механізми кольорової гами часто мають темний або світлий фон, який потрібно надати, щоб вказати, чи є у вас чорний або темно-сірий фон, або білий або світло-сірий фон.

Коли ви налаштовуєте для себе, зазвичай достатньо вирішити, що ви завжди будете використовувати один і той же колір фону.


Ви можете отримати підтриману кількість кольорів у записі termcap, подивившись на "кольори tput", але у багатьох випадках це скаже низьке число, наприклад 8, оскільки підтримка термінальної каси для 256-кольорових терміналів дійсно слабка.
шипіння

1
@slacy Для> 99% сучасних терміналів дані termcap / terminfo не мають значення: всі вони є незначними варіаціями xterm, і деталі, які відрізняються, наприклад, кількість кольорів, не відображаються у значенні, TERMі тому не можуть бути отримані з навколишнього середовища.
Жиль "ТАК - перестань бути злим"

4

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

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

то ви можете вирішити, як правильно встановити своє запит.


2

За допомогою xterm ви можете запитувати колір фону за допомогою \e]11;?\aпослідовності виходу. Вам потрібно прочитати відповідь з терміналу. Існує xtermcontrolкоманда, яка робить це для вас:

~$ xtermcontrol --get-bg
rgb:b0b0/b0b0/b0b0

Те саме працює і в gnome-termin, і, ймовірно, і в інших емуляторах терміналів (але, безумовно, не у всіх).
Егмонт
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.