J'ai une fenêtre de terminal avec une douzaine d'onglets nommés ouverts.
Je voudrais enregistrer la configuration actuelle et la faire restaurer avec des noms et des répertoires.
Y a-t-il un moyen de faire cela?
Pour enregistrer la configuration dans /tmp/cfg
:
gnome-terminal --save-config=/tmp/cfg
Pour le recharger:
gnome-terminal --load-config=/tmp/cfg
UPDATE
Après avoir joué avec bash, j'ai créé le script suivant qui stocke également les noms d'onglets dans le fichier /tmp/test
:
#!/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 des noms correctement, vous devez l'exécuter à partir du premier onglet de votre terminal. Chargement identique à celui précédent:
gnome-terminal --load-config=/tmp/test
EXPLICATION:
Je peux utiliser ce qui suit pour obtenir le nom de l'onglet:
xprop -id $WINDOWID WM_NAME
Je peux utiliser ce qui suit pour accéder à l'onglet suivant:
xdotool key ctrl+Page_Down;
J'obtiens 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 d'onglet dans le fichier enregistré auparavant. Pour ce faire, je crée d'abord un tableau de numéros de ligne où je vais ajouter 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
Une alternative consiste simplement à utiliser Byob. Appuyez sur F2 pour ouvrir de nouveaux terminaux. Utilisez F3 et F4 pour basculer entre les terminaux.
Fermez la fenêtre de l'interface graphique quand vous le souhaitez. Lorsque vous rouvrez Byobu, tous vos terminaux sont restaurés :)
J'ai essayé une autre option,
J'ai changé le titre par défaut pour que Terminal utilise la valeur Intital dans ~/.bashrc
, plutôt que de modifier les paramètres ~/.profile
.
# 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 changer votre profil de terminal.
Lorsque vous exécutez gnome-terminal --load-config
, tous les noms d’onglet sont restaurés correctement. Et vous pouvez aussi changer à votre guise et sauvegarder à nouveau les onglets !!
J'ai trouvé un moyen de le faire que je pense est plus rapide.
Type:
gnome-terminal --tab-with-profile=PROFILENAME1 --tab-with-profile=PROFILENAME2 ... --tab-with-profile=PROFILENAME999
J'ai fait un alias avec cette commande et cela a très bien fonctionné pour moi. Je viens de taper workflow
et un terminal apparaît avec 3 onglets et les titres que j'ai choisis dans la définition du profil qui sont placés dans les onglets.
Sur mon fichier .bashrc
j'ai placé:
alias workflow='gnome-terminal --tab-with-profile=Git --tab-with-profile=Run | sublime-text &'
J'ai essayé les options ci-dessous après avoir restauré les paramètres enregistrés et le titre est également restauré correctement.
Cette option évite que votre titre initial ne soit écrasé.
Espérons que cela aide et un bon script en effet. Gagnez beaucoup de temps chaque fois que vous redémarrez et je peux facilement redémarrer ma boîte virtuelle fréquemment.
Merci!!
En développant la réponse de Nyakin ci-dessus, ce script fonctionnera pour plusieurs configurations de fenêtres et d'onglets et enregistrera correctement les titres d'onglets pour tous les onglets qui les contiennent.
Ceci est actuellement testé sur gnome-terminal 3.2 mais pourrait être configuré pour tout programme de terminal avec une fonctionnalité de sauvegarde-config similaire.
Cela nécessite les outils 'xprop', 'xdotool' et 'wmctrl'.
Code:
#!/usr/bin/env bash
FILE="$1"
gnome-terminal --save-config=$FILE
WINDOWLINES=$(wmctrl -lx | grep gnome-terminal.Gnome-terminal)
WINDOWNUM=$(echo "$WINDOWLINES" | wc -l)
TABLISTS=$(grep "^Terminals" $FILE)
for ((i=1; i<=$WINDOWNUM; i++))
do
WINDOWLINE=$(echo "$WINDOWLINES" | sed -n "$i{p;q}")
WINDOW_ID=$(echo "$WINDOWLINE" | cut -d' ' -f1)
#Switch to window
wmctrl -i -a $WINDOW_ID
LINE=$(echo "$TABLISTS" | sed -n "$i{p;q}"); LINE=${LINE#Terminals=}
TERMINALNUM=$(echo "$LINE" | grep -o ';' | wc -l)
#go to first tab of the window if more than 1
[ $TERMINALNUM -gt 1 ] && xdotool key alt+1 && sleep .1
for tab in ${LINE//;/ }
do
#Get the current tab title
TITLE=$(xprop -id $WINDOW_ID WM_NAME | sed -e 's/WM_NAME(STRING) = "//' -e 's/"$//')
#Insert it into the config file
[ "$TITLE" == "${TITLE//WM_NAME/}" ] && sed -ri "/\[${tab}\]/aTitle=${TITLE}" $FILE
#Move to the next tab in the window
xdotool key ctrl+Page_Down
done
done
Screen ou Byobu sont mes méthodes préférées de gestion de flux de travail complexes dans le terminal. Ils permettent tous deux d’enregistrer vos configurations.
J'ai également cherché cette fonctionnalité dans le terminal Gnome mais je ne l'ai pas trouvée. La meilleure option que j'ai trouvée jusqu'à présent est d'utiliser la konsole. Il vous permet de marquer vos onglets afin que vous puissiez y revenir en les choisissant dans un menu de signets. J'espère que ça aide.
Voici un fork de terminal xfce, avec possibilité de sauvegarder/restaurer une session simplement à partir du menu: https://github.com/repu1sion/xfce4-terminal
Une petite amélioration au script existé qui vérifie également xdotool installé sur le système et ajoute une variable 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
Hyper ( https://github.com/zeit/hyper ) est une bonne alternative multiplateforme écrite en JavaScript et fournie avec Electron.
Il existe un PR qui va ajouter un support pour la sauvegarde/restauration de session: https://github.com/zeit/hyper/pull/945
Similaire à la méthode de Yoga, Éditer >> Préférences de profil >> Titre et commande >> Titre >> Lorsque les commandes du terminal définissent leurs propres titres: >> "préfixe titre initial"
Puis exécutez: gnome-terminaux --save-config = terminaux-cfg
fermer les fenêtres des terminaux
ouvrez un nouveau terminal et exécutez-y: gnome-terminaux --load-config = terminaux-cfg
Ça marche bien pour moi, tous les titres sont conservés.