Question Un moyen rapide de sauvegarder et de restaurer les onglets de Terminal?


J'ai une fenêtre de terminal avec une douzaine d'onglets nommés ouverts.

Je voudrais enregistrer la configuration actuelle et la restaurer avec des noms et des répertoires.

Y a-t-il un moyen de faire cela?


70
2018-06-20 16:31


origine


Fonctionnalité très intéressante, mais je ne pense pas que ce soit disponible. - dlin
Quelle application de terminal utilisez-vous? Terminal Gnome? Konsole? etc. - gertvdijk
@gertvdijk: Celui appelé "Terminal". Je crois que c'est le gnome. - false
@false Btw., le Xfce gagné est aussi appelé "Terminal". Pour toute personne intéressée, elle est documentée à Xfce Goodies , projets: applications: terminal :) - Nostromov
Pour rendre cela possible, votez à bugzilla.gnome.org/show_bug.cgi?id=623986 - Marius Andreiana


Réponses:


Pour enregistrer la configuration dans /tmp/cfg:

gnome-terminal --save-config=/tmp/cfg

Pour le recharger:

gnome-terminal --load-config=/tmp/cfg 

METTRE À JOUR

Après avoir joué avec bash, j'ai créé le script suivant qui stocke les noms d’onglet dans un fichier. /tmp/test ainsi que:

#!/usr/bin/env bash

gnome-terminal --save-config=/tmp/test

LINES=($(grep -n '\[Terminal' /tmp/test | cut -d: -f1))
for ((i=0; i<$(grep '\[Terminal' /tmp/test | wc -l); i++))
do
    TITLE=$(xprop -id $WINDOWID WM_NAME | sed -e 's/WM_NAME(STRING) = "//' -e 's/"$//';xdotool key ctrl+Page_Down;)
    sed -ri "$((${LINES[$i]}+$i))s/.*/&\nTitle=$TITLE/" /tmp/test 
done

Pour attribuer les noms correctement, vous devez l'exécuter depuis le premier onglet de votre terminal. Chargement comme avant:

gnome-terminal --load-config=/tmp/test

EXPLICATION:

Je peux utiliser la suite pour obtenir le nom de l'onglet:

xprop -id $WINDOWID WM_NAME

Je peux suivre pour passer à l'onglet suivant:

xdotool key ctrl+Page_Down;

Je reçois le nombre d'onglets après avoir enregistré le fichier de configuration que j'ai enregistré auparavant:

$(grep '\[Terminal' /tmp/test | wc -l)

Je peux donc parcourir des onglets dans une boucle. Je dois ajouter l'entrée "Title = titlename" pour chaque section de configuration de l'onglet dans le fichier enregistré auparavant. Pour ce faire, je crée d'abord un tableau de numéros de lignes où j'ajouterai des lignes.

LINES=($(grep -n '\[Terminal' /tmp/test | cut -d: -f1))

J'ajoute la ligne "Title = titlename" à l'intérieur de la boucle itérant sur les onglets:

sed -ri "$((${LINES[$i]}+$i))s/.*/&\nTitle=$TITLE/" /tmp/test 

44
2018-06-20 19:04



Vous voudrez peut-être regarder dans la commande d'écran. Je ne l'utilise pas, mais je pense qu'il peut sauver et restaurer toutes sortes de sessions, même distantes. - Joe
Titre ne fonctionne pas? Assurez-vous que dans le menu Edit \ Profile Preferences, l'onglet "Title and Command" Lorsque les commandes du terminal définissent leurs propres titres: "KEEP INITIAL TITLE". - Sentient
Quel est le comportement prévu avec cette réponse? Pour moi, il enregistre les onglets et je crois au répertoire de travail actuel. Mais il ne sauvegarde pas les entrées et sorties précédentes. Le terminal OS X fait cela. - Tyler Collier
gnome 3.18: L'option "--save-config" n'est plus prise en charge dans cette version de gnome-terminal. - Marius Andreiana
si quelqu'un d'autre ne le savait pas, /tmp est effacé au redémarrage. Donc, si vous souhaitez conserver la configuration du terminal après un redémarrage, sauvegardez-le ailleurs. - Matthias


Une alternative est de simplement utiliser Byobu. Appuyez sur F2 pour ouvrir de nouveaux terminaux à l'intérieur. Utilisez F3 et F4 pour passer de gauche à droite entre les bornes.

Fermez la fenêtre de l'interface graphique à tout moment. Lorsque vous rouvrez Byobu, tous vos terminaux sont restaurés :)


12
2017-07-05 04:40



Est-ce que cela fonctionne à travers les redémarrages? Pour moi, il se réinitialise après le redémarrage. - akshay2000
Il ne fonctionne pas entre les redémarrages - maxgalbu
Il ne rouvre pas tous les onglets ici, seulement le premier. - Leonardo Castro
Pourquoi est-ce même voté comme une réponse si cela ne fonctionne pas entre les redémarrages? - killjoy


J'ai essayé les options ci-dessous après la restauration des paramètres enregistrés et le titre est également restauré correctement.

  1. Allez dans Paramètres-> Profils et sélectionnez sur le profil actuel que vous utilisez
  2. Cliquez sur Modifier et allez dans l'onglet "Titre et commande"
  3. Rendre le titre initial vide
  4. Sélectionnez l'option "Conserver le titre initial" dans la liste déroulante ci-dessous.

Cette option évite que votre jeu de titres initial ne soit écrasé.

J'espère que cela aide et un bon script en effet. Économisez beaucoup de temps chaque fois que vous redémarrez et je peux heureusement redémarrer mon boîtier virtuel fréquemment.

Merci!!


3
2017-12-07 04:57





J'ai essayé une autre option,

J'ai changé mon titre par défaut pour que Terminal utilise la valeur Intital dans ~/.bashrc, plutôt que de changer le ~/.profile paramètres.

# If this is an xterm set the title to user@host:dir
case "$TERM" in
xterm*|rxvt*)
    PS1="$PS1"
    ;;
*)
    ;;
esac

Si vous faites cela, il n'est pas nécessaire de modifier votre profil de terminal.
Lorsque vous exécutez gnome-terminal --load-config tous les noms d'onglet sont restaurés correctement. Et vous pouvez également changer à votre guise et sauvegarder les onglets à nouveau !!


3
2017-12-11 01:56





J'ai trouvé un moyen de le faire qui, je pense, est plus rapide.

  1. Crée un profil avec le titre et le nom que vous voulez comme dit Yoga.
  2. Type:

    gnome-terminal --tab-with-profile=PROFILENAME1 --tab-with-profile=PROFILENAME2 ... --tab-with-profile=PROFILENAME999
    

J'ai fait un alias avec cette commande et ça a fonctionné très bien pour moi. Je tape juste workflow et un terminal apparaît avec 3 onglets et les titres que j'ai choisis dans la définition de profil qui sont placés dans les onglets.

Sur mon .bashrc fichier que j'ai placé:

alias workflow='gnome-terminal --tab-with-profile=Git --tab-with-profile=Run | sublime-text &'

3
2017-12-27 03:01





Screen ou Byobu sont mes méthodes préférées pour gérer un workflow complexe dans le terminal, et tous deux permettent de sauvegarder vos configurations.


1
2017-09-24 09:08





Une petite amélioration du script existant qui vérifie également l'installation de xdotool sur le système et ajoute des variables pour changer de chemin

#!/bin/bash

SAVEPATH=/tmp/termprofile

if [ ! -f /usr/bin/xdotool ]; then
        echo "please install 'xdotool'"
        exit 1
fi

gnome-terminal --save-config=$SAVEPATH

LINES=($(grep -n '\[Terminal' $SAVEPATH | cut -d: -f1))
for ((i=0; i<$(grep '\[Terminal' $SAVEPATH | wc -l); i++))
do
    TITLE=$(xprop -id $WINDOWID WM_NAME | sed -e 's/WM_NAME(STRING) = "//' -e 's/"$//';xdotool key ctrl+Page_Down;)
    sed -ri "$((${LINES[$i]}+$i))s/.*/&\nTitle=$TITLE/" $SAVEPATH
done

1
2017-09-24 22:53