¿Alguna forma rápida de guardar y restaurar pestañas de Terminal?


80

Tengo una ventana de Terminal con una docena de pestañas con nombre abiertas.

Me gustaría guardar la configuración actual y restaurarla con nombres y directorios.

¿Hay alguna forma de hacer esto?


Característica muy interesante, pero no creo que esté disponible.
dlin

¿Qué aplicación de terminal estás usando? Terminal gnomo? Konsole? etc.
gertvdijk

@gertvdijk: El llamado "Terminal". Creo que es el gnomo.
falso

1
@false Btw., el Xfce ganado también se llama "Terminal". Para cualquier persona interesada, está documentado en Xfce Goodies , proyectos: aplicaciones: terminal :)
Nostromov

2
Para hacer esto posible, vote en bugzilla.gnome.org/show_bug.cgi?id=623986
Marius Andreiana

Respuestas:


44

Para guardar la configuración en /tmp/cfg:

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

Para cargarlo de nuevo:

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

ACTUALIZAR

Después de jugar con bash, creé el siguiente script que también almacena los nombres de las pestañas en el archivo /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

Para asignar nombres correctamente, debe ejecutarlo desde la primera pestaña de su terminal. Cargando igual que antes:

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

EXPLICACIÓN:

Puedo usar el siguiente para obtener el nombre de la pestaña:

xprop -id $WINDOWID WM_NAME

Puedo usar el siguiente para saltar a la siguiente pestaña:

xdotool key ctrl+Page_Down;

Recibo varias pestañas después del grepping archivo de configuración que guardé antes:

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

Entonces puedo iterar sobre pestañas dentro de un bucle. Tengo que agregar la entrada "Title = titlename" para cada sección de configuración de pestaña en el archivo guardado anteriormente. Para hacerlo, primero estoy creando una matriz de números de línea donde agregaré líneas.

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

Estoy agregando la línea "Title = titlename" dentro del ciclo iterando sobre pestañas:

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

1
Es posible que desee ver el comando de pantalla. No lo uso, pero creo que puede guardar y restaurar todo tipo de sesiones, incluso las remotas.
Joe

1
¿El título no funciona? Asegúrese de que en el menú Editar \ Preferencias de perfil, la pestaña 'Título y comando' 'Cuando los comandos de terminal establezcan sus propios títulos:' MANTENGA EL TÍTULO INICIAL 'Espero que esto ayude con los problemas de títulos
Sentient

1
¿Cuál es el comportamiento previsto con esta respuesta? Para mí, guarda las pestañas, y creo que el directorio de trabajo actual. Pero no guarda la entrada y salida anteriores. El terminal OS X hace eso.
Tyler Collier

11
gnome 3.18: La opción "--save-config" ya no es compatible con esta versión de gnome-terminal.
Marius Andreiana

2
Ubuntu 16.04: la opción "--save-config" ya no es compatible con esta versión de gnome-terminal.
Eugene Kulabuhov

12

Una alternativa es usar Byobu . Presione F2 para abrir nuevos terminales en su interior. Use F3 y F4 para cambiar a izquierda y derecha entre terminales.

Cierre la ventana de la GUI cuando lo desee. Cuando vuelves a abrir Byobu, todos tus terminales se restauran :)


1
¿Funciona a través de reinicios? Para mí, se restablece después de reiniciar.
akshay2000

3
No funciona a través de reinicios
maxgalbu

1
No vuelve a abrir todas las pestañas aquí, solo la primera.
Leonardo Castro

3
¿Por qué esto se vota como una respuesta si no funciona en los reinicios?
killjoy

3

Intenté las siguientes opciones después de restaurar la configuración guardada y el Título también se restauró correctamente.

  1. Vaya a Configuración-> Perfiles y seleccione en el Perfil actual que está utilizando
  2. Haga clic en Editar y vaya a la pestaña "Título y comando"
  3. Poner título inicial en blanco
  4. Seleccione la opción "Conservar título inicial" en el cuadro desplegable a continuación.

Esta opción evita que su título inicial se sobrescriba.

Espero que esto ayude y un gran guión de hecho. Ahorre mucho tiempo cada vez que reinicie y felizmente puedo reiniciar mi caja virtual con frecuencia.

¡¡Gracias!!


3

Intenté una opción más,

Cambié mi título predeterminado para Terminal para usar el valor Intital, en ~/.bashrclugar de cambiar la ~/.profileconfiguración.

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

Si hace esto, no es necesario cambiar su perfil de terminal.
Cuando ejecuta gnome-terminal --load-configtodos los nombres de pestaña se restauran correctamente. ¡Y también puedes cambiar como quieras y guardar las pestañas de nuevo!


3

Encontré una manera de hacerlo que creo que es más rápida.

  1. Crea un perfil con el título y el nombre que desea, como dijo Yoga.
  2. Tipo:

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

Hice un alias con este comando y funcionó bastante bien para mí. Solo escribo workflowy aparece una Terminal con 3 pestañas y los títulos que elegí en la definición de perfil que se colocan en las pestañas.

En mi .bashrcarchivo coloqué:

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

1

Screen o Byobu son mis métodos preferidos para administrar el flujo de trabajo complejo en el terminal, y ambos permiten guardar sus configuraciones.


1

Una pequeña mejora al script existente que también comprueba xdotool instalado en el sistema y agrega variables para cambiar la ruta

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

Ampliando la respuesta de Nyakin anterior, este script funcionará para múltiples configuraciones de ventanas y pestañas y guardará correctamente los títulos de pestañas para todas las pestañas que las tengan.

Actualmente, esto se prueba en gnome-terminal 3.2, pero podría configurarse para cualquier programa de terminal con una funcionalidad similar de guardar configuración.

Esto requiere las herramientas 'xprop', 'xdotool' y 'wmctrl'.

Código:

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

También busqué esa característica en el terminal Gnome pero no pude encontrarla. La mejor opción que encontré hasta ahora es usar konsole. Le permite marcar sus pestañas para que pueda volver a ellas seleccionándolas en un menú de marcadores. Espero que esto ayude.



0

Similar al método de Yoga, Editar >> Preferencias de perfil >> Título y comando >> Título >> Cuando los comandos de terminal establecen sus propios títulos: >> " Anteponer título inicial "

Luego ejecute: gnome-terminales --save-config = terminales-cfg

cerrar ventanas de terminales

abra una nueva terminal, y en ella ejecute: gnome-terminales --load-config = terminales-cfg

Funciona bien para mí, todos los títulos guardados.


Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.