Un modo veloce per salvare e ripristinare le schede di Terminale?

70

Ho una finestra di terminale con una dozzina di schede denominate aperte.

Vorrei salvare la configurazione corrente e ripristinarla con i nomi e le directory.

C'è un modo per farlo?

    
posta false 20.06.2013 - 18:31

12 risposte

44

Per salvare la configurazione in /tmp/cfg :

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

Per ricaricarlo:

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

Aggiorna

Dopo aver giocato con bash ho creato il seguente script che memorizza i nomi delle schede nel file /tmp/test pure:

#!/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

Per assegnare correttamente i nomi devi eseguirlo dalla prima scheda del tuo terminale. Caricamento come prima:

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

SPIEGAZIONE:

Posso usare il seguente comando per ottenere il nome della scheda:

xprop -id $WINDOWID WM_NAME

Posso usare il seguente comando per passare alla scheda successiva:

xdotool key ctrl+Page_Down;

Ricevo il numero di schede dopo aver scaricato il file di configurazione che ho salvato prima:

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

Quindi posso scorrere le schede all'interno di un ciclo. Devo aggiungere la voce "Titolo = titlename" per ogni sezione di configurazione delle schede nel file salvato in precedenza. Per fare ciò, prima sto creando una serie di numeri di riga in cui aggiungerò le linee.

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

Sto aggiungendo la riga "Title = titlename" all'interno del ciclo iterando su schede:

sed -ri "$((${LINES[$i]}+$i))s/.*/&\nTitle=$TITLE/" /tmp/test 
    
risposta data Nykakin 20.06.2013 - 21:04
12

Un'alternativa è usare semplicemente Byobu . Premi F2 per aprire nuovi terminali al suo interno. Usa F3 e F4 per passare da sinistra a destra tra i terminali.

Chiudi la finestra della GUI ogni volta che vuoi. Quando riapri Byobu, vengono ripristinati tutti i tuoi terminali:)

    
risposta data Ashwin Nanjappa 05.07.2013 - 06:40
3

Ho provato le seguenti opzioni dopo aver ripristinato le impostazioni salvate e anche il titolo è stato ripristinato correttamente.

  1. Vai a Impostazioni- & gt; Profili e seleziona il profilo corrente che stai utilizzando
  2. Fai clic su Modifica e vai alla scheda "Titolo e comando"
  3. Rendi vuoto il titolo iniziale
  4. Seleziona l'opzione "Mantieni titolo iniziale" nel menu a tendina sottostante.

Questa opzione evita che il set del titolo iniziale venga sovrascritto.

Spero che questo aiuti e davvero un ottimo copione. Risparmia molto tempo ogni volta che riavvii e posso riavviare felicemente la mia scatola virtuale frequentemente.

Grazie !!

    
risposta data Yoga 07.12.2013 - 05:57
3

Ho provato un'altra opzione,

Ho modificato il titolo predefinito per Terminal per utilizzare il valore Intital in ~/.bashrc , invece di modificare le impostazioni di ~/.profile .

# If this is an xterm set the title to [email protected]:dir
case "$TERM" in
xterm*|rxvt*)
    PS1="$PS1"
    ;;
*)
    ;;
esac

Se lo fai, non è necessario cambiare il tuo profilo terminale.
Quando esegui gnome-terminal --load-config tutti i nomi delle schede vengono ripristinati correttamente. E puoi anche cambiarlo come preferisci e salvare di nuovo le schede !!

    
risposta data Yoga 11.12.2013 - 02:56
3

Ho trovato un modo per farlo che penso sia più veloce.

  1. Crea un profilo con il titolo e il nome che vuoi come ha detto Yoga.
  2. Tipo:

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

Ho fatto un alias con questo comando e ha funzionato abbastanza bene per me. Ho appena digitato workflow e un terminale appare con 3 schede e i titoli che ho scelto nella definizione del profilo che sono inseriti nelle schede.

Sul mio file .bashrc ho inserito:

alias workflow='gnome-terminal --tab-with-profile=Git --tab-with-profile=Run | sublime-text &'
    
risposta data giacobo1 27.12.2013 - 04:01
1

Screen o Byobu sono i miei metodi preferiti di gestione del flusso di lavoro complesso nel terminale, ed entrambi consentono di salvare le configurazioni.

    
risposta data orbatos 24.09.2014 - 11:08
1

Un piccolo miglioramento per lo script esistente che controlla anche xdotool installato sul sistema e aggiunge la variabile per cambiare percorso

#!/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
    
risposta data pulse 25.09.2014 - 00:53
1

Espandendo la risposta di Nyakin sopra, questo script funzionerà per più configurazioni di finestre e schede e salverà correttamente i titoli delle schede per tutte le schede che li contengono.

Questo è attualmente testato su gnome-terminal 3.2, ma potrebbe essere configurato per qualsiasi programma terminale con una simile funzionalità save-config.

Ciò richiede gli strumenti 'xprop', 'xdotool' e 'wmctrl'.

Codice:

#!/usr/bin/env bash

FILE=""
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
    
risposta data Bobby Jones 04.08.2016 - 21:49
1

Ho anche cercato quella funzionalità nel terminale Gnome ma non sono riuscita a trovarla. L'opzione migliore che ho trovato finora è usare konsole. Ti consente di aggiungere ai segnalibri le tue schede, in modo che tu possa tornare a loro selezionandole dal menu dei segnalibri. Spero che questo aiuti.

    
risposta data fitsum 01.08.2017 - 09:39
1

Ecco un fork di terminale xfce, con possibilità di salvare / ripristinare la sessione solo dal menu: link

    
risposta data pulse 06.04.2018 - 03:50
0

Simile al metodo dello Yoga, Modifica & gt; & gt; Preferenze del profilo & gt; & gt; Titolo e comando & gt; & gt; Titolo & gt; & gt; Quando i comandi del terminale impostano i propri titoli: & gt; & gt; " Prepend initial title "

Quindi esegui: gnome-terminals --save-config = terminali-cfg

chiudi i terminali windows

apri un nuovo terminale e in esso esegui: gnome-terminals --load-config = terminali-cfg

Funziona bene per me, tutti i titoli conservati.

    
risposta data ImLeo 03.02.2016 - 02:40
0

Hyper ( link ) è una buona alternativa cross platform scritta in JavaScript e in bundle con Electron.

C'è un PR che aggiungerà il supporto per salvare / ripristinare la sessione immediatamente: link

    
risposta data Eugene Kulabuhov 14.05.2017 - 10:55

Leggi altre domande sui tag