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?
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?
Respuestas:
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
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 :)
Intenté las siguientes opciones después de restaurar la configuración guardada y el Título también se restauró correctamente.
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!!
Intenté una opción más,
Cambié mi título predeterminado para Terminal para usar el valor Intital, en ~/.bashrc
lugar de cambiar la ~/.profile
configuració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-config
todos los nombres de pestaña se restauran correctamente. ¡Y también puedes cambiar como quieras y guardar las pestañas de nuevo!
Encontré una manera de hacerlo que creo que es más rápida.
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 workflow
y 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 .bashrc
archivo coloqué:
alias workflow='gnome-terminal --tab-with-profile=Git --tab-with-profile=Run | sublime-text &'
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
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
Aquí hay una bifurcación de terminal xfce, con posibilidad de guardar / restaurar sesión solo desde el menú: https://github.com/repu1sion/xfce4-terminal
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.
Hyper ( https://github.com/zeit/hyper ) es una buena alternativa multiplataforma escrita en JavaScript y incluida con Electron.
Hay un RP que agregará soporte para guardar / restaurar sesión de inmediato: https://github.com/zeit/hyper/pull/945