Qualche modo veloce per salvare e ripristinare le schede del Terminale?


80

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

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

C'è un modo per fare questo?


Funzionalità molto interessante, ma non credo sia disponibile.
dlin,

Quale applicazione terminale stai usando? Terminale Gnome? Konsole? ecc.
gertvdijk,

@gertvdijk: quello chiamato "Terminale". Credo che sia quello dello gnomo.
falso

1
@false Btw., il Xfce vinto è anche chiamato "Terminal". Per chiunque sia interessato, è documentato su Xfce Goodies , progetti: applicazioni: terminal :)
Nostromov

Risposte:


44

Per salvare la configurazione in /tmp/cfg:

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

Per ricaricarlo:

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

AGGIORNARE

Dopo aver giocato con bash ho creato il seguente script che memorizza anche i nomi delle schede nel file /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

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 quanto segue per ottenere il nome della scheda:

xprop -id $WINDOWID WM_NAME

Posso usare quanto segue per passare alla scheda successiva:

xdotool key ctrl+Page_Down;

Ricevo il numero di schede dopo aver eseguito il grepping del 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 "Title = titlename" per ogni sezione di configurazione della scheda nel file salvato in precedenza. Per fare ciò, per prima cosa sto creando un array di numeri di riga in cui aggiungerò delle righe.

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

Sto aggiungendo la riga "Title = titlename" all'interno del ciclo che scorre le schede:

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

1
Potresti voler esaminare il comando sullo schermo. Non lo uso, ma credo che possa salvare e ripristinare tutti i tipi di sessioni, anche quelle remote.
Joe,

1
Il titolo non funziona? Assicurati che nel menu Modifica \ Preferenze profilo la scheda 'Titolo e comando' 'Quando i comandi del terminale impostano i propri titoli:' CONSERVA IL TITOLO INIZIALE 'Spero che questo aiuti con problemi di titolo
Sentient,

1
Qual è il comportamento previsto con questa risposta? Per me, salva le schede e credo che la directory di lavoro corrente. Ma non salva l'input e l'output precedenti. Il terminale OS X lo fa.
Tyler Collier,

11
gnome 3.18: L'opzione "--save-config" non è più supportata in questa versione di gnome-terminal.
Marius Andreiana,

2
Ubuntu 16.04: L'opzione "--save-config" non è più supportata in questa versione di gnome-terminal.
Eugene Kulabuhov,

12

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

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


1
Funziona attraverso i riavvii? Per me, si ripristina dopo il riavvio.
akshay2000,

3
Non funziona tra i riavvii
maxgalbu,

1
Non riapre tutte le schede qui, solo la prima.
Leonardo Castro,

3
Perché questo è anche votato come risposta se non funziona attraverso i riavvii ??
killjoy,

3

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

  1. Vai su Impostazioni-> 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" nella casella a discesa in basso.

Questa opzione evita che il set di titoli iniziale venga sovrascritto.

Spero che questo aiuti e una sceneggiatura davvero fantastica. Risparmia molto tempo ogni volta che riavvii e posso riavviare felicemente la mia scatola virtuale frequentemente.

Grazie!!


3

Ho provato un'altra opzione,

Ho modificato il mio titolo predefinito per Terminale per utilizzare il valore Intitale ~/.bashrcanziché modificare le ~/.profileimpostazioni.

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

In tal caso, non è necessario modificare il profilo del terminale.
Quando si eseguono gnome-terminal --load-configtutti i nomi delle schede vengono ripristinati correttamente. E puoi anche cambiare come preferisci e salvare di nuovo le schede !!


3

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

  1. Crea un profilo con il titolo e il nome che desideri, come ha detto Yoga.
  2. Genere:

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

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

Sul mio .bashrcfile ho inserito:

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

1

Screen o Byobu sono i miei metodi preferiti per gestire un flusso di lavoro complesso nel terminale ed entrambi consentono di salvare le configurazioni.


1

Un piccolo miglioramento allo script esistente che controlla anche xdotool installato sul sistema e aggiunge una 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

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 hanno.

Questo è attualmente testato su gnome-terminal 3.2 ma potrebbe essere configurato per qualsiasi programma terminale con una simile funzionalità di salvataggio-configurazione.

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

Codice:

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

1

Ho anche cercato quella funzione nel terminale Gnome ma non sono riuscita a trovarla. L'opzione migliore che ho trovato finora è usare konsole. Ti consente di aggiungere le tue schede ai segnalibri, in modo da poterli tornare a loro scegliendo dal menu dei segnalibri. Spero che questo possa essere d'aiuto.



0

Simile al metodo Yoga, Modifica >> Preferenze profilo >> Titolo e comando >> Titolo >> Quando i comandi del terminale impostano i propri titoli: >> " Prependi titolo iniziale "

Quindi eseguire: gnome-terminal --save-config = terminal-cfg

chiudere i terminali delle finestre

aprire un nuovo terminale e in esso eseguire: gnome-terminal --load-config = terminali-cfg

Funziona bene per me, tutti i titoli conservati.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.