web-dev-qa-db-fra.com

Ligne de commande pour basculer entre les profils dans gnome-terminal

J'ai créé un nouveau profil pour gnome-terminal et je peux basculer entre le profil "implicite" et le nouveau profil créé, comme vous pouvez le voir sur l'image ci-dessous:

Switch between profiles in gnome-terminal

Maintenant, je me demande comment je peux basculer entre les profils en utilisant une ligne de commande/script ou peut-être en utilisant un raccourci pour cela.

Note: Des solutions comme:

gnome-terminal --tab-with-profile=Implicit && exit 

sont exclus car je préfère ne pas fermer et ouvrir un autre terminal ou obtenir une autre fenêtre de terminal dans le processus de modification du profil.

20
Radu Rădeanu

Pour basculer vers le profil "implicite":

xdotool key Alt+t p Return

Pour basculer vers le deuxième profil:

xdotool key Alt+t p Down Return

xdotool Install xdotool n'est pas installé par défaut dans Ubuntu, il doit donc être installé en premier.

Bien sûr, pour ces commandes peuvent être ajout de raccourcis clavier personnalisés .

8
Radu Rădeanu

Il n'y a pas de raccourci vous permettant de modifier le profil dans le terminal (sans naviguer dans les menus comme vous l'avez dit dans les commentaires), sans utiliser l'interface graphique. Citant le manuel ( stable , développement 3.9 ):

Vous pouvez modifier le profil dans l'onglet ou la fenêtre de votre terminal en sélectionnant un profil dans Terminal Modifier le profil.

(Vous pouvez proposer ceci comme suggestion dans le suivi des bogues )

4
Braiam

Beaucoup de bonnes réponses déjà mais je voulais ajouter une autre variante en utilisant xdotool que ne nécessite pas la barre de menus pour être visible ...

La combinaison de touches Maj + F10 ouvre un menu contextuel (équivalent du clic droit sur le terminal) et à partir de là, le profil peut être modifié.

par exemple. xdotool key shift+F10 r 3 pour accéder au troisième profil

J'ai également constaté que cette méthode n'exigeait pas de définir de délai pour xdotool (que j'ai jugé nécessaire pour la méthode de la barre de menus). Elle est donc un peu plus rapide.

J'ai tendance à beaucoup changer de profil, alors je l'enveloppe dans une fonction:

function chp(){
      xdotool --clearmodifiers key Shift+F10 r $1
}

je peux donc simplement appeler chp N pour passer au nième profil.

Quelques autres conseils et particularités de ma configuration:

  • En ajoutant une commande chp à mon fichier .bashrc, je peux forcer les nouveaux onglets à toujours basculer vers le profil par défaut.

  • Je code la couleur de mes sessions ssh en fonction de Host mais je n'aime pas que mon alias ssh ouvre de nouveaux onglets ou fenêtres ET je souhaite que le profil redevienne celui par défaut lorsque je quitte ssh. Ma solution: alias somehost="chp 2; ssh user@somehost; chp 1"

  • Je donne à xdotool le drapeau --clearmodifiers pour que, si je tiens une touche de modification (lors de l'ouverture d'un onglet/fenêtre, de la sortie de ssh, etc.), cela n'interférera pas avec xdotool.

  • Je préfixe mes noms de profil avec des numéros afin que, si j'en ajoute un nouveau, tous les autres ne soient pas décalés en raison de l'alphabétisation du menu du profil.

3
brotherJ4mes

Je cherchais à faire la même chose et j'ai finalement réussi à faire fonctionner un script. Je l'ai mis sur mon GitHub .

Comme je l'explique dans le fichier README.md, il ne change pas réellement, mais charge une configuration de profils dans le profil Par défaut. Pour ce faire, la configuration de chaque profil est enregistrée dans un fichier lors de la première exécution du script. Le script donne l’impression que vous passez d’un profil à l’autre, ce qui me convient assez bien. J'espère que ça aide quelqu'un ...

3
SigiSang

Si vous avez souvent accès à une liste de serveurs, je pense que la solution la plus simple consisterait simplement à appeler une seconde fenêtre uniquement pour la session de cette boîte.

Commencez par créer un profil de terminal gnome distinct pour chaque emplacement distant que vous utilisez souvent. Ensuite, dans chaque profil, spécifiez que le terminal doit exécuter la commande de connexion SSH pour cette boîte, au lieu d'un simple Shell.

ssh alice@athena

Enfin, écrivez un court script pour lancer une nouvelle fenêtre distante à partir d'un ID de profil.

#!/bin/bash
if [[ $# -ne 1 ]] ; then
  echo "Give me a server/profile name!"
  exit 1
fi
gnome-terminal --window-with-profile=$1
exit 0

En utilisant cette stratégie, vous pouvez "modifier" à l'infini l'apparence de la fenêtre du terminal de chaque boîte et les lancer à partir d'un seul terminal "de contrôle". Par exemple, si nous appelons ce script "rlv", nous pouvons créer une fenêtre distante en appelant simplement le script avec un nom de profil.

>> rlv athena

Si vous avez déjà utilisé un nom d'hôte ou si vous avez omis de configurer un profil pour cet hôte, vous obtiendrez simplement une autre fenêtre de profil par défaut sur la boîte de dialogue locale. Il existe un moyen de coder le script pour éviter cela en plaçant le login dans le script lui-même plutôt que dans le terminal gnome:

#!/bin/bash
if [[ $# -ne 1 ]] ; then
  echo "Give me a server/profile name!"
  exit 1
fi
gnome-terminal --window-with-profile=$1 -e "ssh $1"
exit 0

... mais vous perdez alors la flexibilité de définir votre nom d'utilisateur de connexion pour cette boîte. Cette caractéristique supplémentaire du script que je laisse comme exercice au lecteur.

2
zerobandwidth

Selon votre objectif, vous trouverez peut-être que ce script est utile: https://github.com/xyrix/gnome-terminal-profile-switcher

Il fait une sorte de patch de singe et génère un nouveau profil pour chaque terminal, puis définit des variables d'environnement afin d'exposer un programme permettant de changer le thème du profil pour votre terminal actuel.

Espérons que l'exemple de script safe_ssh clarifiera les choses :-). Je l'utilise depuis un peu plus d'un an maintenant et cela m'a aidé à ne pas détruire la base de données active de la société ^ _ ^

2
xyrix

Je viens de remarquer que ma solution initiale a déjà été rejetée dans la question. Bien qu'il ne semble pas y avoir de moyen simple de modifier le profil, vous pouvez modifier la couleur d'arrière-plan/avant-plan à l'aide de la commande setterm.

Donc, ce setterm -term linux -background black -foreground green vous donnera un fond noir avec du texte vert. Le seul problème est que ls a une sortie colorisée, vous pouvez donc désactiver la coloration de ls. Sinon, le jeu de couleurs précédent est réinitialisé

Original post: Il y a une sorte de chemin autour. De l'homme gnome-terminal:

--window-with-profile = PROFILENAME

             Open a new window containing a  tab  with  the
             given profile.  More than one of these options
             can be provided.

Voici un exemple de ma machine. J'ai trois profils: B & G (noir sur vert), ForPrinting (police noire, fond blanc) et Par défaut. Donc, ce que je fais est dans le type de fenêtre en cours gnome-terminal --window-with-profile=ForPrinting. Ensuite, je peux soit supprimer l'ancienne fenêtre à partir de la ligne de commande, soit basculer et la fermer graphiquement.

Le profil B & G ne fonctionne pas. Probablement parce que & n'est pas un caractère valide, gardez cela à l'esprit lorsque vous nommez des profils.

1
Sergiy Kolodyazhnyy

Ce serait génial que gnome-terminal propose une commande et un raccourci "prochain profil"; malheureusement, ce n'est pas le cas.

Une solution de contournement pour ceux dont le code Alt+T est désactivé (Édition> Préférences> Activer les mnémoniques - non cochée) est la suivante: F10 left left down right et sélectionnez le profil. Aie.

0
Mario

La solution très laide que j'ai fini par utiliser est

unset x y
eval $(xwininfo -id $(xdotool getactivewindow) |
       sed -n -e 's/^ \+Absolute upper-left X: \+\([0-9]\+\).*/x=\1/p' \
              -e 's/^ \+Absolute upper-left Y: \+\([0-9]\+\).*/y=\1/p')
xdotool mousemove $(($x + 50)) $(($y + 50))
xdotool click 3; xdotool key --repeat 3 Up; xdotool key Right; xdotool key --delay 50 Down; xdotool key --delay 50 Return

(Cela sélectionne le deuxième profil, mais vous pouvez le modifier pour indiquer le profil suivant en modifiant la deuxième commande "touche vers le bas" en xdotool key --delay 50 --repeat 2 Down.

Qu'est-ce que cela fait:

  1. trouvez les coordonnées en haut à gauche de la fenêtre en cours (par exemple, le terminal gnome utilisé).
  2. déplacez la souris pour être sur ce terminal
  3. faites un clic droit et naviguez dans le menu contextuel pour sélectionner le second profil.

Vous aurez besoin de xdotool installé Sudo apt install xdotool.

Quelque chose d'extraordinaire que le terminal lui-même ne permet pas la configuration via le terminal!

0
SColvin