Zmienić kolor PS1 na podstawie koloru tła?

12

Nauczyłem się, że mogę zmienić format PS1, szczególnie kolor sznurka. Czy można zatem zmienić kolor w zależności od koloru tła skorupy? Lub jak mogę wykryć kolor tła skorupy?

prosseek
źródło

Odpowiedzi:

4

O ile mi wiadomo, nie ma możliwości zapytania o kolory emulatora terminala. Możesz je zmienić za pomocą \e]4;NUMBER;#RRGGBB\a(gdzie NUMBERjest końcowym numerem koloru (0–7 dla jasnych kolorów, 8–15 dla jasnych kolorów) i #RRGGBBjest szesnastkową wartością koloru RGB), jeśli twój terminal obsługuje tę sekwencję (odniesienie: ctlseqs ).

Potężne mechanizmy schematu kolorów często mają ustawienie ciemnego lub jasnego tła, które musisz podać, aby wskazać, czy masz czarne czy ciemnoszare tło, czy też białe lub jasnoszare tło.

Podczas konfigurowania dla siebie zwykle wystarczy zdecydować, że zawsze będziesz używać tego samego koloru tła.

Gilles „SO- przestań być zły”
źródło
Obsługiwaną liczbę kolorów można uzyskać we wpisie termcap, patrząc na „kolory tput”, ale w wielu przypadkach będzie to oznaczać niską liczbę, na przykład 8, ponieważ obsługa termcap dla terminali 256-kolorowych jest naprawdę słaba.
slacy
1
@slacy Dla> 99% dzisiejszych terminali dane termcap / terminfo są nieistotne: wszystkie są niewielkimi odmianami xterm, a szczegóły, które się różnią, takie jak liczba kolorów, nie są odzwierciedlone w wartości TERMi dlatego nie mogą być uzyskane ze środowiska.
Gilles 'SO - przestań być zły'
4

Jeśli używasz gnome-terminal, możesz uzyskać kolor tła dla dowolnego profilu, w tym przypadku dla profilu domyślnego jako

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

następnie możesz zdecydować, jak odpowiednio ustawić monit.

Diego Torres Milano
źródło
2

Za pomocą xterm można zapytać o kolor tła za pomocą \e]11;?\asekwencji zmiany znaczenia. Musisz przeczytać odpowiedź z terminala. Jest to xtermcontrolpolecenie, które robi to za Ciebie:

~$ xtermcontrol --get-bg
rgb:b0b0/b0b0/b0b0
Stéphane Chazelas
źródło
To samo działa w gnome-terminal i prawdopodobnie także w niektórych innych emulatorach terminali (ale zdecydowanie nie wszystkie).
egmont