2010-03-24 12 views
12

(ne sais pas si cette question appartient ici à super-utilisateur)Y at-il un moyen de déterminer la couleur de fond d'un terminal?

J'aimerais savoir s'il y a un moyen de déterminer la couleur d'arrière-plan d'un terminal?

Dans mon cas, en utilisant gnome-terminal.
Cela peut être important, car c'est l'intégralité de l'application du terminal pour dessiner l'arrière-plan de ses fenêtres, qui peut même être autre chose qu'une couleur unie.

Répondre

4

J'ai venu avec les éléments suivants:

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

Source/Repo/Contenu essentiel: https://gist.github.com/blueyed/c8470c2aad3381c33ea3

+0

Cela ne semble pas fonctionner avec gnome-terminal 3.6.2. – aramadia

0

Voulez-vous dire une méthode pour déterminer la couleur de fond du terminal ou définir la couleur du terminal? Si ce dernier vous pouvez interroger la variable d'environnement PS1 de votre terminal pour obtenir la couleur.

Il y a un article sur la définition (et ainsi déduire) les couleurs terminales ici: http://www.ibm.com/developerworks/linux/library/l-tip-prompt/

+0

Je veux connaître la couleur de fond. Pas la couleur utilisée pour imprimer les caractères (en utilisant les codes d'échappement), mais la fenêtre elle-même. Bel article cependant :) –

11

Il y a un xterm control sequence pour cela: (. \e et \a sont les caractères ESC et BEL, respectivement)

\e]11;?\a 

terminaux xterm compatibles doivent répondre avec la même séquence, avec le point d'interrogation remplacé par un colorspec X11, par exemple rgb:0000/0000/0000 pour le noir.

+1

Certaines informations sur la façon d'utiliser ce serait un excellent ajout. (Par exemple, un extrait de shell-script qui imprime un mot dans une couleur de premier plan différente en fonction de la couleur de fond du shell?) – ELLIOTTCABLE

+0

(Aussi, je suppose que cela n'obtiendra que la couleur de fond * pour le texte * – ELLIOTTCABLE

+0

Dans Mac 10.10.4, cette réponse (et la réponse similaire de @ blueyed) ne semble pas fonctionner dans Apple Terminal (pas de couleur de fond de la fenêtre du terminal, que je suspecte d'être inaccessible en dehors de 'rxvt' qui s'identifie comme xterm-color), mais fonctionne en xterm régulier. – TextGeek