2010-03-24 11 views
12

(no estoy seguro si esta pregunta pertenece aquí o de superusuario)¿Hay alguna forma de determinar el color de fondo de un terminal?

Me gustaría saber si hay alguna manera de determinar el color de fondo de un terminal?

En mi caso, usando gnome-terminal.
Puede ser importante, ya que todo depende de la aplicación del terminal para dibujar el fondo de sus ventanas, que incluso puede ser algo más que un color simple.

Respuesta

4

he ocurrió la siguiente:

#!/bin/sh 
# 
# Query a property from the terminal, e.g. background color. 
# 
# XTerm Operating System Commands 
#  "ESC ] Ps;Pt ST" 

oldstty=$(stty -g) 

# What to query? 
# 11: text background 
Ps=${1:-11} 

stty raw -echo min 0 time 0 
# stty raw -echo min 0 time 1 
printf "\033]$Ps;?\033\\" 
# xterm needs the sleep (or "time 1", but that is 1/10th second). 
sleep 0.00000001 
read -r answer 
# echo $answer | cat -A 
result=${answer#*;} 
stty $oldstty 
# Remove escape at the end. 
echo $result | sed 's/[^rgb:0-9a-f/]\+$//' 

Fuente/Repo/Síntesis: https://gist.github.com/blueyed/c8470c2aad3381c33ea3

+0

Esto no parece funcionar con gnome-terminal 3.6.2. – aramadia

0

¿Quiere decir un método para determinar el color de fondo del terminal o establecer el color del terminal?

Si este último puede consultar la variable de entorno PS1 de su terminal para obtener el color.

Hay un artículo sobre la configuración (y así derivar) los colores terminales aquí: http://www.ibm.com/developerworks/linux/library/l-tip-prompt/

+0

me refiero a determinar el color de fondo. No es el color utilizado para imprimir caracteres (usando códigos de escape), sino el de la ventana en sí. Buen artículo sin embargo :) –

11

Hay un xterm control sequence para esto: (. \e y \a son el ESC y caracteres BEL, respectivamente)

\e]11;?\a 

terminales compatibles con Xterm

deben responder con la misma secuencia, con el signo de interrogación reemplazado por un X11 colorspec, por ejemplo rgb:0000/0000/0000 para negro.

+1

Alguna información sobre cómo utilizar esto sería una excelente adición. (Por ejemplo, ¿un fragmento de shell-script que imprime una palabra en un color de fondo diferente dependiendo del color de fondo del shell?) – ELLIOTTCABLE

+0

(Además, sospecho que esto solo obtendrá el color de fondo * para el texto *, si uno está cerrado No es el color de fondo de la ventana de terminal real, que sospecho que aún no se puede obtener fuera de 'rxvt'.) – ELLIOTTCABLE

+0

En Mac 10.10.4, esta (y la respuesta similar de @ blueyed) no parece funcionar en Apple Terminal (que se identifica como xterm-color), pero funciona en xterm regular. – TextGeek

Cuestiones relacionadas