2010-03-24 19 views
12

(non so se questa domanda appartiene qui o superuser)C'è un modo per determinare il colore di sfondo di un terminale?

mi piacerebbe sapere se c'è qualche modo per determinare il colore di sfondo di un terminale?

Nel mio caso, utilizzo di gnome-terminal.
Potrebbe importare, dal momento che è completo fino all'applicazione terminale per disegnare lo sfondo delle sue finestre, che potrebbe anche essere qualcosa di diverso da un semplice colore.

risposta

4

ho si avvicinò con il seguente:

#!/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/]\+$//' 

Fonte/Repo/Gist: https://gist.github.com/blueyed/c8470c2aad3381c33ea3

+0

Questo non sembra funzionare con gnome-terminal 3.6.2. – aramadia

0

Si intende un metodo per determinare il colore di sfondo del terminale o impostare il colore del terminale?

Se quest'ultimo è possibile interrogare la variabile di ambiente PS1 del terminale per ottenere il colore.

C'è un articolo su come configurare (e quindi derivare) i colori del terminale qui: http://www.ibm.com/developerworks/linux/library/l-tip-prompt/

+0

intendo per accertare il colore di sfondo. Non il colore usato per stampare i caratteri (usando i codici di escape), ma la finestra stessa. Nice article but :) –

11

C'è un xterm control sequence per questo: (. \e e \a sono CES e caratteri BEL rispettivamente)

\e]11;?\a 

terminali compatibili-Xterm

devono rispondere con la stessa sequenza, con il punto interrogativo sostituito da un X11 colorspec, ad es rgb:0000/0000/0000 per il nero.

+1

Alcune informazioni su come utilizzare questo sarebbe un'aggiunta eccellente. (Ad esempio, uno snippet di shell-script che stampa una parola in un diverso colore di primo piano a seconda del colore di sfondo della shell?) – ELLIOTTCABLE

+0

(Inoltre, ho il sospetto che questo otterrà solo il colore di sfondo * per il testo *, se ne viene chiuso uno Non il colore di sfondo della finestra del terminale reale, che a mio avviso è ancora intrattabile al di fuori di 'rxvt'.) – ELLIOTTCABLE

+0

In Mac 10.10.4, questa (e la risposta simile di blueyed) non sembra funzionare in Apple Terminal (che si identifica come xterm-color), ma funziona in xterm regolare. – TextGeek