2009-06-10 10 views
18

Je souhaite créer une configuration sur ma machine locale (Ubuntu GNOME), dans laquelle la fenêtre du terminal a une couleur d'arrière-plan différente selon que je suis connecté à ma machine locale ou ssh'd dans une machine distante.Modifier le thème du terminal Gnome par programme

Existe-t-il un moyen de le faire?

+0

Je voudrais également des suggestions sur la façon de mieux organiser mon fouillis de fenêtres de terminal et onglets du terminal Gnome. Bonne question. – Andrioid

+0

Utilisez un meilleur gestionnaire de fenêtres. Un carrelage peut-être. –

Répondre

8

Cela ne fait pas ce que vous avez demandé, mais il fait probablement ce que vous voulez.

Vous pouvez modifier votre .bashrc (ou un fichier d'initialisation de shell équivalent) pour définir votre invite selon que vous utilisez ssh ou non.

dire mettre quelque chose comme:

if [ -n $SSH_TTY ]; then 
    export PS1=`echo -en '\033[42m\w\$ '`; 
fi; 

à la fin de votre fichier .bashrc sur la machine distante. le \033[42m est un ANSI Escape Code qui change la couleur de fond en vert. De cette façon, la couleur d'arrière-plan de votre terminal sera verte (ou magenta, ou cyan, ou autre) seulement lorsque vous êtes connecté à une machine distante.

+0

Apparemment une bonne idée mais ne fonctionnant pas dans tous les cas, l'arrière-plan est de nouveau noir dans Vim, sur la sortie ls -l. –

3

Vous pouvez checkout les options à gnome-terminal:

gnome-terminal --help 

donne

--window-with-profile=PROFILENAME 

Wrap dans un script shell:

#!/bin/bash 
gnome-terminal --window-with-profile=PROFILENAME 

puis faire

ssh-term 

Si vous voulez changer plus, regardez dans aterm et d'autres termes. Regardez également dans Devilspie qui peut faire des changements plus dynamiques basés sur des choses comme le titre de la fenêtre (suppression des décorations de fenêtre et ainsi de suite).

http://burtonini.com/blog/computers/devilspie

+0

Cela vous oblige à ouvrir une nouvelle fenêtre avec l'intention spécifique de l'utiliser en SSH, et de le fermer immédiatement après la fermeture de la connexion SSH - sinon, il est trompeur et pire que rien. Pas vraiment une solution élégante. – Thriveth

3

Vous pouvez jeter un oeil à GConf. C'est essentiellement pour Gnome ce que le registre est pour Windows. La plupart des applications Gnome l'utilisent pour stocker leurs paramètres. Vous pouvez naviguer à l'aide d'outils tels que GConf-Editor, ou depuis la ligne de commande en utilisant gconftool-2:

$ gconftool-2 --all-entries /apps/gnome-terminal/profiles/Default 
background_color = #000000000000 
palette = #2E2E34343636:#CCCC00000000 [ snipped ] 
... many more lines 

Vous trouverez tous les paramètres ici qui sont accessibles via la boîte de dialogue Préférences, plus un peu plus. Les touches peuvent également être modifiées en utilisant --set, voir "man gconftool-2" pour plus de détails.

Il existe également des liaisons de bibliothèque GConf pour de nombreux langages de programmation.

+0

Presque ce dont j'ai besoin, mais il change le registre "global" .... pas l'onglet actuel seulement. Je pourrais configurer des thèmes pour différentes machines, mais j'ai besoin d'un moyen de basculer cela via une commande – pufferfish

0
export PROMPT_COMMAND='echo -ne "\033]0;${HOSTNAME}: ${PWD}\007"' 
1

J'ai quelques scripts qui permettent d'atteindre cet objectif pour gnome-terminal. Vous pouvez les trouver à https://github.com/xyrix/gnome-terminal-profile-switcher

Le script fonctionne en créant un profil temporaire pour tous les terminaux, puis en modifiant les valeurs définies dans le profil temporaire à copier à partir de vos profils normaux.

Cela vous permet de modifier le profil du terminal gnome actuel à partir d'un script.

Inclus dans le référentiel est un exemple de script "safe_ssh" pour démontrer l'utilisation.

Questions connexes