
En el hilo de abajo
¿Acceso programático al color de fondo actual de xterm?
Alex North-Keys proporciona un script bash útil que devuelve el color de fondo del xterm actual. Me gustaría utilizar el resultado de este script para restablecer el color de fondo después de haberlo cambiado (por ejemplo, después de iniciar sesión en un sistema remoto).
Por ejemplo, su guión podría devolver algo como
rgb:e0e0/ffff/ffff
Desafortunadamente, la secuencia de escape que uso para establecer el color de fondo
echo -ne "\033]11;!*\007"
Parece funcionar sólo si le doy un color con nombre, como marfil.
¿Hay alguna manera de modificar este comando para que tome como argumento algo como e0e0/ffff/ffff?
¡Gracias!
Respuesta1
Copie y pegue en Emacs o Vim. Borrar #????? comenzando una de las líneas. En la línea hay una declaración sed que contiene "^[". Este es un texto de 2 caracteres que debe reemplazarse con un carácter ESC (^[). En Vim, ingrese C+v ESC. En Emacs, ingrese C+q ESC.
# filename: OSC_11_Pt_ST.sh
echo -e "\e[7m Reverse the FG/BG colors on this terminal as a visual aid. \e[0m"
y='\' # Add to end of $result (\e]11;rgb:??/??/??\e) to complete ST terminating
# OSC sequence.
# Query the background color using ST (string terminate) vice BEL (^G).Replies
# with a control sequence in RGB specification format using same terminator as
# the query (in this case, ST): "^[]11;rgb:4242/2525/5353^[\" (see file
# ctlseqs.txt). "^[" is ESC (\e); "^[]" is OSC; "^[\" is ST.
echo -en "\e]11;?\e\\"
# Read line from the standard input & assign to variable CSPEC (color specifi-
# cation as indicated by ctlseqs.txt). Do not echo input coming from terminal
# (-s); raw (-r); delimiter \ (-d).
read -s -r -d '\' CSPEC
#?????result=$(echo $CSPEC | sed 's/^[/\\\e/g')
# Set BG to "WebGrey" (decimal 128 128 128).
echo 'Set BG to "Webgrey" in 5 seconds...'
sleep 5
echo -en "\e]11;rgb:80/80/80\007"
echo "Return to original BG ($result$y) in 5 seconds..."
sleep 5
echo -en "$result$y"