Ich habe ein Terminalfenster mit einem Dutzend benannten Registerkarten geöffnet.
Ich möchte die aktuelle Konfiguration speichern und mit Namen und Verzeichnissen wiederherstellen lassen.
Gibt es eine Möglichkeit, dies zu tun?
Ich habe ein Terminalfenster mit einem Dutzend benannten Registerkarten geöffnet.
Ich möchte die aktuelle Konfiguration speichern und mit Namen und Verzeichnissen wiederherstellen lassen.
Gibt es eine Möglichkeit, dies zu tun?
Antworten:
So speichern Sie die Konfiguration in /tmp/cfg
:
gnome-terminal --save-config=/tmp/cfg
So laden Sie es zurück:
gnome-terminal --load-config=/tmp/cfg
AKTUALISIEREN
Nachdem ich mit Bash rumgespielt hatte, erstellte ich folgendes Skript, das auch Tab-Namen in Dateien speichert /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
Um Namen richtig zuzuweisen, müssen Sie sie auf der ersten Registerkarte Ihres Terminals ausführen. Laden wie bisher:
gnome-terminal --load-config=/tmp/test
ERLÄUTERUNG:
Ich kann Folgendes verwenden, um den Tab-Namen zu erhalten:
xprop -id $WINDOWID WM_NAME
Ich kann Folgendes verwenden, um zum nächsten Tab zu springen:
xdotool key ctrl+Page_Down;
Ich erhalte die Anzahl der Registerkarten, nachdem ich die zuvor gespeicherte Konfigurationsdatei durchsucht habe:
$(grep '\[Terminal' /tmp/test | wc -l)
So kann ich über Tabs innerhalb einer Schleife iterieren. Ich muss den Eintrag "Title = titlename" für jeden Registerkartenkonfigurationsabschnitt in der zuvor gespeicherten Datei hinzufügen. Dazu erstelle ich eine Reihe von Zeilennummern, in die ich Zeilen einfügen werde.
LINES=($(grep -n '\[Terminal' /tmp/test | cut -d: -f1))
Ich füge die Zeile "Title = titlename" in die Schleife ein, die über Tabulatoren iteriert:
sed -ri "$((${LINES[$i]}+$i))s/.*/&\nTitle=$TITLE/" /tmp/test
Eine Alternative ist, einfach Byobu zu verwenden . Drücken Sie F2, um neue Terminals darin zu öffnen. Verwenden Sie F3 und F4, um zwischen den Anschlüssen nach links und rechts zu wechseln.
Schließen Sie das GUI-Fenster, wann immer Sie möchten. Wenn Sie Byobu erneut öffnen, werden alle Ihre Terminals wiederhergestellt :)
Ich habe die folgenden Optionen nach dem Wiederherstellen der gespeicherten Einstellungen ausprobiert und der Titel wird auch ordnungsgemäß wiederhergestellt.
Diese Option verhindert, dass Ihr ursprünglicher Titelsatz überschrieben wird.
Hoffe das hilft und ein tolles Drehbuch in der Tat. Sparen Sie viel Zeit, wenn Sie neu starten, und ich kann meine virtuelle Box häufig neu starten.
Vielen Dank!!
Ich habe noch eine Option ausprobiert,
Ich habe meinen Standardtitel für Terminal geändert, um den Intital-Wert in zu verwenden ~/.bashrc
, anstatt die ~/.profile
Einstellungen zu ändern .
# If this is an xterm set the title to user@host:dir
case "$TERM" in
xterm*|rxvt*)
PS1="$PS1"
;;
*)
;;
esac
In diesem Fall müssen Sie Ihr Terminalprofil nicht ändern.
Wenn Sie ausführen, werden gnome-terminal --load-config
alle Registerkartennamen ordnungsgemäß wiederhergestellt. Und Sie können auch nach Belieben ändern und die Registerkarten erneut speichern !!
Ich habe einen Weg gefunden, der meiner Meinung nach schneller ist.
Art:
gnome-terminal --tab-with-profile=PROFILENAME1 --tab-with-profile=PROFILENAME2 ... --tab-with-profile=PROFILENAME999
Ich habe mit diesem Befehl einen Alias erstellt und es hat für mich ganz gut funktioniert. Ich tippe nur workflow
und ein Terminal erscheint mit 3 Registerkarten und den Titeln, die ich in der Profildefinition gewählt habe, die in den Registerkarten platziert sind.
Auf meine .bashrc
Akte habe ich gesetzt:
alias workflow='gnome-terminal --tab-with-profile=Git --tab-with-profile=Run | sublime-text &'
Eine kleine Verbesserung des vorhandenen Skripts, das auch das auf dem System installierte xdotool überprüft und Variablen zum Ändern des Pfads hinzufügt
#!/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
Dieses Skript erweitert Nyakins Antwort oben und funktioniert für mehrere Fenster- und Registerkartenkonfigurationen. Es speichert die Registerkartentitel für alle Registerkarten, auf denen sie enthalten sind, korrekt.
Dies wird derzeit auf gnome-terminal 3.2 getestet, kann jedoch für jedes Terminalprogramm mit einer ähnlichen Funktion zum Speichern der Konfiguration konfiguriert werden.
Dies erfordert die Tools 'xprop', 'xdotool' und '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
Ich habe auch nach dieser Funktion im Gnome-Terminal gesucht, sie aber nicht gefunden. Die beste Option, die ich bisher gefunden habe, ist die Verwendung von Konsolen. Sie können Ihre Registerkarten mit Lesezeichen versehen, sodass Sie zu ihnen zurückkehren können, indem Sie sie aus einem Lesezeichenmenü auswählen. Ich hoffe das hilft.
Hier ist eine xfce-Terminalgabelung mit der Möglichkeit, die Sitzung nur über das Menü zu speichern / wiederherzustellen: https://github.com/repu1sion/xfce4-terminal
Ähnlich wie bei Yoga: Bearbeiten >> Profileinstellungen >> Titel und Befehl >> Titel >> Wenn Terminalbefehle ihre eigenen Titel festlegen : >> " Anfangs-Titel voranstellen "
Führen Sie dann Folgendes aus : gnome-terminals --save-config = terminals-cfg
Terminalfenster schließen
öffne ein neues Terminal und führe darin aus: gnome-terminals --load-config = terminals-cfg
Funktioniert gut für mich, alle Titel behalten.
Hyper ( https://github.com/zeit/hyper ) ist eine gute plattformübergreifende Alternative, die in JavaScript geschrieben und mit Electron gebündelt ist.
Es gibt einen PR, der die Unterstützung für das Speichern / Wiederherstellen von Sitzungen von Anfang an hinzufügt: https://github.com/zeit/hyper/pull/945