99 votes

Un moyen rapide d'enregistrer et de restaurer les onglets du Terminal ?

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

Je voudrais sauvegarder la configuration actuelle et la faire restaurer avec les noms et les répertoires.

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

3voto

ncremins Points 5044

J'ai essayé une autre option,

J'ai modifié mon titre par défaut pour le terminal afin d'utiliser la valeur de l'Intital en ~/.bashrc plutôt que de modifier 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 le faites, il n'est pas nécessaire de modifier votre profil de terminal.
Lorsque vous exécutez gnome-terminal --load-config tous les noms d'onglets sont restaurés correctement. Et vous pouvez également modifier comme vous le souhaitez et sauvegarder à nouveau les onglets !

2voto

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

2voto

Eugene Kulabuhov Points 121

Hyper ( https://github.com/zeit/hyper ) est une bonne alternative multiplateforme écrite en JavaScript et fournie avec Electron.

Il y a un PR qui va ajouter la prise en charge de l'enregistrement/restauration de la session dans la boîte : https://github.com/zeit/hyper/pull/945

1voto

pulse Points 41

Une petite amélioration au script existant qui vérifie également le xdotool installé sur le système et ajoute une variable pour le changement 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

1voto

Bobby Jones Points 11

En développant la réponse de Nyakin ci-dessus, ce script fonctionnera pour de multiples configurations de fenêtres et d'onglets et enregistrera correctement les titres d'onglets pour tous les onglets qui en ont.

Ceci est actuellement testé sur gnome-terminal 3.2 mais pourrait être configuré pour n'importe quel programme de terminal avec une fonctionnalité similaire de sauvegarde de la configuration.

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

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X