web-dev-qa-db-fra.com

iTerm 2 profils

Je suis récemment passé sur iTerm2 et je l’adore. Je me demande cependant s’il existe un moyen d’utiliser les profils pour correspondre à l’environnement/à la machine spécifique sur laquelle vous vous trouvez. 

Dire que si je fais des tâches dans une fenêtre de mon mac, le profil est affiché par défaut, mais si je ssh dans une machine (disons dev0), le profil sur iTerm sera mis à jour vers le profil dev0. Une fois que j'ai terminé avec dev0 et appelé exit, le profil revient à nouveau par défaut. 

Je me rends compte qu'une solution consiste à ouvrir un profil spécifique chaque fois que je veux ssh sur une autre machine et avoir un moyen de faire la distinction, mais si la connexion est fermée, vous devez le remarquer en fonction du texte plutôt que du fond de la fenêtre.

Est-ce possible? Sinon, comment cette fonctionnalité peut-elle être ajoutée et comment puis-je contribuer?

37
Miles McCrocklin

iTerm2 prend en charge un code d'échappement personnalisé qui modifie le profil à la volée. Mettez-le dans votre .bashrc ou .bash_profile.

<esc>]50;SetProfile=X^G

où X est le profil. Par exemple, pour changer le profil en un nommé "Foo", utilisez ce script Shell:

#!/bin/bash
echo -e "\033]50;SetProfile=Foo\a"

Pour le rétablir lorsque vous vous déconnectez, entrez du code pour rétablir le profil par défaut dans ~/.bash_logout.

50
George

Le dernier iTerm2 nocturne (version 2.9.20150329-nocturne au moment de la rédaction) vous permet de le faire facilement. Vous pouvez le télécharger ici .

Une fois installé et ouvert:

  1. Connectez-vous à votre machine distante via ssh et cliquez sur iTerm2 (le menu de l'application)> Install Shell Integration. Il va télécharger un script avec curl et l'installer. Faites la même chose sur votre ordinateur local.
  2. Accédez à Préférences> Profils.
  3. Créez un nouveau profil pour votre ordinateur local. Personnalisez-le pour répondre à vos besoins (changer la couleur de fond, le nom, etc.)
  4. Accédez à l'onglet Avancé et faites défiler vers le bas.
  5. Dans Automatic Profile Switching, cliquez sur '+' et ajoutez le nom d'hôte de votre ordinateur local. Le nom d'hôte est celui obtenu lors de l'exécution de echo $Host sur la machine cible. Ce n'est pas toujours celui que vous voyez dans votre invite.
  6. Créez un autre profil, cette fois pour votre ordinateur distant, et personnalisez-le.
  7. Ajoutez le nom d’hôte de la machine distante dans Automatic Profile Switching.
  8. Maintenant, si vous ssh sur la machine distante, votre profil changera et si vous exit en dehors de la session ssh, vous retournerez à votre profil local.

Vous pouvez combiner cette solution avec la réponse de @ esod de manière transparente.
Remarque: cela n’a pas fonctionné pour moi tant que je n’ai pas créé de profil spécifique pour le bureau au lieu d’utiliser le profil par défaut.

Voir la documentation pour plus d'informations.

11
Yohaï Berreby

pour les utilisateurs de zsh

disons que vous avez 2 profils, l'un nommé mac (pour votre machine principale) et l'autre pour linux (votre machine distante)

en entrant dans la session , nous devons dire à zsh de charger notre profil

  1. se connecter à linux distant 
  2. dans ~/.zshrc ajouter echo -e "\033]50;SetProfile=linux\a"
  3. sourcez vos fichiers pour effet immédiat: source ~/.zshrc
  4. votre nouveau thème devrait être visible dans la session iterm.

à la sortie de la session , nous devons dire à zsh de revenir à notre profil d'origine

  1. se connecter à linux distant 
  2. dans linux ~/.zlogout ajouter ce qui suit
if [ "$SHLVL" = 1 ]; then
  echo -e "\033]50;SetProfile=mac\a"
  clear
fi

maintenant, vous pouvez échanger facilement des profils <3. 

si vous utilisez bash, je pense que les étapes sont similaires, mais vous devriez plutôt modifier ~/.bashrc et ~/.bash_logout

démo

demo of session based profiles in iterm2

8
lfender6445

Dans mon cas, je dois combiner la réponse de Yohaï Berreby avec les paramètres de mes hôtes pour implémenter cette fonctionnalité.

  1. Dans Changement automatique de profil, cliquez sur '+' et ajoutez le nom d'hôte de votre ordinateur local. Le nom d'hôte est celui obtenu lors de l'exécution de echo $ Host sur la machine cible. Ce n'est pas toujours celui que vous voyez dans votre invite.

Mon serveur de transfert ne définit pas $ Host et le nom d'hôte est:

[devel@alveo-staging ~]$ hostname
alveo-staging

Mais je ne peux pas définir la règle avec le nom d'hôte sur alveo-staging. En fait, alveo-staging est simplement un alias du nom d'hôte réel (alveo-staging.xxx), qui peut être défini dans /etc/hosts.

La solution rapide consiste donc à utiliser * des caractères génériques, pour définir la règle sur *staging*.

Alors ça marche.

0
karl li

J'avais le même souhait et constaté que cela pouvait être accompli dans iTerm 2 (version 1.0.0.20130319) dans les préférences de l'application. 

Vous pouvez attribuer un profil (par exemple un profil distant) avec un préréglage différent de votre préréglage par défaut en allant à:

Profils -> Ouvrir les profilssélectionnez le profil et cliquez sur Modifier les profils .... Cliquez sur l'onglet Couleurs et choisissez un préréglage pour ce profil dans la liste dans Charger les préréglages ...

De plus, j'ai configuré le raccourci clavier pour différents profils afin que je puisse avoir une fenêtre iTerm différente d'une autre fenêtre. Je l'ai fait par:

  1. Créer un nouveau profil dans les préférences
  2. Création d'un nouveau raccourci de profil dans les préférences -> Touches dont l'action est Nouvelle fenêtre avec profil

Mon profil par défaut a un arrière-plan noir, mais parfois cela m'aide à avoir un arrière-plan blanc. Je duplique mon profil par défaut et nomme le nouveau profil DefaultLight. Sur mon profil par défaut, je vais à l'onglet Clés où je crée une nouvelle clé de raccourci de profil dont le raccourci clavier est ^ + cmd + n, dont l'action est Nouvelle fenêtre avec profil et dont Profil est DefaultLight.

Après avoir enregistré les préférences, cmd + n ouvre une nouvelle fenêtre avec un fond noir et ^ + cmd + n ouvre une nouvelle fenêtre avec un fond blanc.

Il existe également un nouvel onglet avec action Profil dans la préférence Touches de raccourci clavier si vous souhaitez aller encore plus loin.

0
esod

étape 1:

personnalisez votre profil d'iterm, par exemple dark, light

étape 2:

ajoutez du code avant à votre profil Shell, par exemple .bashrc or .zshrc

# Change iterm2 profile. Usage it2prof ProfileName (case sensitive)
it2prof() { echo -e "\033]50;SetProfile=$1\a" }

étape 3:

donner un sens à votre profil

exec $Shell -l

étape 4:

basculer votre profil thématique iterm

it2prof dark
it2prof light
0
Mark Simon