¿Cambiar el color de PS1 en función del color de fondo?

12

Aprendí que puedo cambiar el formato de PS1, especialmente el color de la cadena. Entonces, ¿es posible cambiar el color según el color de fondo del caparazón? O, ¿cómo puedo detectar el color de fondo del caparazón?

prosseek
fuente

Respuestas:

4

Hasta donde sé, no hay forma de consultar los colores del emulador de terminal. Puede cambiarlos con \e]4;NUMBER;#RRGGBB\a(donde NUMBERestá el número de color del terminal (0–7 para colores claros, 8–15 para colores brillantes) y #RRGGBBes un valor de color RGB hexadecimal) si su terminal admite esa secuencia (referencia: ctlseqs ).

Los potentes mecanismos de combinación de colores a menudo tienen una configuración de fondo oscuro o claro que debe proporcionar para indicar si tiene un fondo negro o gris oscuro, o un fondo blanco o gris claro.

Cuando configura por sí mismo, generalmente es suficiente para decidir que siempre usará el mismo color de fondo.

Gilles 'SO- deja de ser malvado'
fuente
Puede obtener el número de colores admitidos en la entrada de termcap mirando "tput colors", pero en muchos casos eso indicará un número bajo, como 8, porque el soporte de termcap para terminales de 256 colores es realmente débil.
Slacy
1
@slacy Para> 99% de los terminales actuales, los datos de termcap / terminfo son irrelevantes: son todas variaciones menores de xterm, y los detalles que difieren, como la cantidad de colores, no se reflejan en el valor de TERMy, por lo tanto, no pueden ser obtenido del medio ambiente.
Gilles 'SO- deja de ser malvado'
4

Si está utilizando gnome-terminal, puede obtener el color de fondo para cualquier perfil, en este caso para el perfil predeterminado como

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

entonces puede decidir cómo configurar su solicitud en consecuencia.

Diego Torres Milano
fuente
2

Con xterm, puede consultar el color de fondo con la \e]11;?\asecuencia de escape. Debe leer la respuesta desde la terminal. Hay un xtermcontrolcomando que hace eso por ti:

~$ xtermcontrol --get-bg
rgb:b0b0/b0b0/b0b0
Stéphane Chazelas
fuente
Lo mismo funciona en gnome-terminal y probablemente también en algunos otros emuladores de terminal (pero definitivamente no todos).
egmont