Changer la couleur PS1 en fonction de la couleur d'arrière-plan?

12

J'ai appris que je peux changer le format de la PS1, en particulier la couleur de la chaîne. Ensuite, est-il possible de changer la couleur en fonction de la couleur d'arrière-plan de la coque? Ou, comment puis-je détecter la couleur d'arrière-plan de la coque?

prosseek
la source

Réponses:

4

Pour autant que je sache, il n'y a aucun moyen d'interroger les couleurs de l'émulateur de terminal. Vous pouvez les modifier avec \e]4;NUMBER;#RRGGBB\a(où NUMBERest le numéro de couleur du terminal (0–7 pour les couleurs claires, 8–15 pour les couleurs vives) et #RRGGBBest une valeur de couleur RVB hexadécimale) si votre terminal prend en charge cette séquence (référence: ctlseqs ).

Les mécanismes de jeu de couleurs puissants ont souvent un paramètre de fond sombre ou clair que vous devez fournir pour indiquer si vous avez un fond noir ou gris foncé, ou un fond blanc ou gris clair.

Lorsque vous configurez vous-même, il suffit généralement de décider que vous utiliserez toujours la même couleur d'arrière-plan.

Gilles 'SO- arrête d'être méchant'
la source
Vous pouvez obtenir le nombre de couleurs pris en charge dans l'entrée termcap en regardant les «couleurs de tput» mais dans de nombreux cas, cela indiquera un nombre faible, comme 8, car la prise en charge des termcap pour les terminaux 256 couleurs est vraiment faible.
slacy
1
@slacy Pour> 99% des terminaux d'aujourd'hui, les données termcap / terminfo ne sont pas pertinentes: ce sont toutes des variations mineures de xterm, et les détails qui diffèrent, tels que le nombre de couleurs, ne sont pas reflétés dans la valeur de TERMet ne peuvent donc pas être provenant de l'environnement.
Gilles 'SO- arrête d'être méchant'
4

Si vous utilisez gnome-terminal, vous pouvez obtenir la couleur d'arrière-plan pour n'importe quel profil, dans ce cas pour le profil par défaut comme

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

vous pouvez alors décider comment définir votre invite en conséquence.

Diego Torres Milano
la source
2

Avec xterm, vous pouvez interroger la couleur d'arrière-plan avec la \e]11;?\aséquence d'échappement. Vous devez lire la réponse du terminal. Il existe une xtermcontrolcommande qui fait cela pour vous:

~$ xtermcontrol --get-bg
rgb:b0b0/b0b0/b0b0
Stéphane Chazelas
la source
La même chose fonctionne dans gnome-terminal et probablement dans certains autres émulateurs de terminaux (mais certainement pas tous).
egmont