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?
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?
Risposte:
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
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 :)
Ho provato le seguenti opzioni dopo aver ripristinato le impostazioni salvate e anche il titolo è stato ripristinato correttamente.
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!!
Ho provato un'altra opzione,
Ho modificato il mio titolo predefinito per Terminale per utilizzare il valore Intitale ~/.bashrc
anziché modificare le ~/.profile
impostazioni.
# 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-config
tutti i nomi delle schede vengono ripristinati correttamente. E puoi anche cambiare come preferisci e salvare di nuovo le schede !!
Ho trovato un modo per farlo che penso sia più veloce.
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 workflow
e appare un Terminale con 3 schede e i titoli che ho scelto nella definizione del profilo che sono inseriti nelle schede.
Sul mio .bashrc
file ho inserito:
alias workflow='gnome-terminal --tab-with-profile=Git --tab-with-profile=Run | sublime-text &'
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
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
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.
Ecco un fork dei terminali xfce, con possibilità di salvare / ripristinare la sessione solo dal menu: https://github.com/repu1sion/xfce4-terminal
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.
Hyper ( https://github.com/zeit/hyper ) è una valida alternativa multipiattaforma scritta in JavaScript e in bundle con Electron.
C'è un PR che sta per aggiungere il supporto per il salvataggio / ripristino della sessione pronto all'uso: https://github.com/zeit/hyper/pull/945