Cambia il colore di PS1 in base al colore di sfondo?


12

Ho imparato che posso cambiare il formato di PS1, in particolare il colore della stringa. Quindi, è possibile cambiare il colore in base al colore di sfondo della shell? Oppure, come posso rilevare il colore di sfondo della shell?

Risposte:


4

Per quanto ne so, non c'è modo di interrogare i colori dell'emulatore di terminale. Puoi cambiarli con \e]4;NUMBER;#RRGGBB\a(dove si NUMBERtrova il numero del colore del terminale (0–7 per i colori chiari, 8–15 per i colori brillanti) ed #RRGGBBè un valore di colore RGB esadecimale) se il tuo terminale supporta quella sequenza (riferimento: ctlseqs ).

I potenti meccanismi di combinazione di colori hanno spesso un'impostazione di sfondo scuro o chiaro che è necessario fornire per indicare se si dispone di uno sfondo nero o grigio scuro o di uno sfondo bianco o grigio chiaro.

Quando esegui la configurazione per te stesso, di solito è sufficiente decidere di utilizzare sempre lo stesso colore di sfondo.


Puoi ottenere il numero di colori supportato nella voce termcap guardando "tput colors" ma in molti casi ciò dirà un numero basso, come 8, perché il supporto termcap per terminali a 256 colori è veramente debole.
slacy,

1
@slacy Per> 99% dei terminali di oggi, i dati termcap / terminfo sono irrilevanti: sono tutte variazioni minori di xterm e i dettagli che differiscono, come il numero di colori, non si riflettono nel valore di TERMe quindi non possono essere ottenuto dall'ambiente.
Gilles 'SO- smetti di essere malvagio' il

4

Se stai usando gnome-terminal puoi ottenere il colore di sfondo per qualsiasi profilo, in questo caso per il profilo predefinito come

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

allora puoi decidere come impostare il tuo prompt di conseguenza.


2

Con xterm, è possibile eseguire una query sul colore di sfondo con la \e]11;?\asequenza di escape. Devi leggere la risposta dal terminale. C'è un xtermcontrolcomando che lo fa per te:

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

Lo stesso funziona in gnome-terminal e probabilmente anche in altri emulatori di terminali (ma sicuramente non tutti).
egmont,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.