Alguma maneira rápida de salvar e restaurar guias do Terminal?

74

Eu tenho uma janela do Terminal com uma dúzia de abas nomeadas abertas.

Gostaria de salvar a configuração atual e restaurá-la com nomes e diretórios.

Existe uma maneira de fazer isso?

    
por false 20.06.2013 / 18:31

12 respostas

44

Para salvar a configuração em /tmp/cfg :

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

Para carregá-lo de volta:

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

UPDATE

Depois de brincar com o bash eu criei o seguinte script que também armazena nomes de abas no arquivo /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 atribuir nomes corretamente, você precisa executá-lo na primeira guia do seu terminal. Carregando como antes:

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

EXPLICAÇÃO:

Posso usar o seguinte para obter o nome da guia:

xprop -id $WINDOWID WM_NAME

Eu posso usar o seguinte para ir para a próxima guia:

xdotool key ctrl+Page_Down;

Estou recebendo o número de guias após o arquivo de configuração do grepping que salvei antes:

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

Então, posso iterar pelas guias dentro de um loop. Eu tenho que adicionar a entrada "Title = titlename" para cada seção de configuração da guia no arquivo salvo anteriormente. Para fazer isso, primeiro eu estou criando uma matriz de números de linha onde eu adicionarei linhas.

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

Estou adicionando a linha "Title = titlename" dentro do loop que percorre as guias:

sed -ri "$((${LINES[$i]}+$i))s/.*/&\nTitle=$TITLE/" /tmp/test 
    
por Nykakin 20.06.2013 / 21:04
12

Uma alternativa é apenas usar Byobu . Pressione F2 para abrir novos terminais dentro dele. Use F3 e F4 para alternar entre os terminais esquerdo e direito.

Feche a janela da GUI quando quiser. Quando você reabrir Byobu todos os seus terminais são restaurados:)

    
por Ashwin Nanjappa 05.07.2013 / 06:40
3

Eu tentei as opções abaixo depois de restaurar as configurações salvas e o título também foi restaurado corretamente.

  1. Vá para Configurações- > Perfis e selecione no Perfil atual que você está usando
  2. Clique em Editar e vá para a guia "Título e comando"
  3. Tornar o título inicial em branco
  4. Selecione a opção "Manter título inicial" na caixa suspensa abaixo.

Esta opção evita que seu conjunto de títulos inicial seja sobrescrito.

Espero que isso ajude e um ótimo roteiro, de fato. Economize muito tempo sempre que você reiniciar e eu posso reiniciar minha caixa virtual com freqüência.

Obrigado !!

    
por Yoga 07.12.2013 / 05:57
3

Eu tentei mais uma opção,

Alterei meu título padrão do Terminal para usar o valor do Intital em ~/.bashrc , em vez de alterar as configurações de ~/.profile .

# If this is an xterm set the title to [email protected]:dir
case "$TERM" in
xterm*|rxvt*)
    PS1="$PS1"
    ;;
*)
    ;;
esac

Se você fizer isso, não há necessidade de alterar seu perfil de terminal.
Quando você executa gnome-terminal --load-config , todos os nomes das guias são restaurados corretamente. E você também pode mudar como quiser e salvar as abas novamente!

    
por Yoga 11.12.2013 / 02:56
3

Eu encontrei uma maneira de fazer isso que acho que é mais rápido.

  1. Cria um perfil com o título e o nome que você deseja, como o Yoga disse.
  2. Tipo:

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

Eu fiz um alias com este comando e funcionou muito bem para mim. Acabei de digitar workflow e um Terminal aparece com 3 guias e os títulos que escolhi na definição de perfil que são colocados nas guias.

No meu arquivo .bashrc , coloquei:

alias workflow='gnome-terminal --tab-with-profile=Git --tab-with-profile=Run | sublime-text &'
    
por giacobo1 27.12.2013 / 04:01
1

A tela ou o Byobu são meus métodos preferidos para gerenciar o fluxo de trabalho complexo no terminal, e ambos permitem salvar suas configurações.

    
por orbatos 24.09.2014 / 11:08
1

Uma pequena melhoria para o script existente que também verifica o xdotool instalado no sistema e adiciona variável para mudar o caminho

#!/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
    
por pulse 25.09.2014 / 00:53
1

Expandindo a resposta de Nyakin acima, esse script funcionará para várias configurações de janelas e guias e salvará corretamente os títulos das guias para todas as guias que os tiverem.

Isso é atualmente testado no gnome-terminal 3.2, mas pode ser configurado para qualquer programa de terminal com uma funcionalidade similar de save-config.

Isso requer as ferramentas 'xprop', 'xdotool' e '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
    
por Bobby Jones 04.08.2016 / 21:49
1

Eu também procurei por esse recurso no terminal do Gnome, mas não consegui encontrá-lo. A melhor opção que encontrei até agora é usar o konsole. Ele permite que você marque suas guias para que você possa voltar a elas escolhendo-as em um menu de favoritos. Espero que isso ajude.

    
por fitsum 01.08.2017 / 09:39
1

Aqui está um fork do terminal xfce, com possibilidade de salvar / restaurar a sessão apenas no menu: link

    
por pulse 06.04.2018 / 03:50
0

Semelhante ao método do Yoga, Editar > > Preferências de perfil > > Título e comando > > título > > Quando os comandos do terminal definem seus próprios títulos: > > " Prefira o título inicial "

Em seguida, execute: gnome-terminals --save-config = terminais-cfg

fechar janelas dos terminais

abra um novo terminal e execute: gnome-terminals - carga-config = terminais-cfg

Funciona bem para mim, todos os títulos mantidos.

    
por ImLeo 03.02.2016 / 02:40
0

O Hyper ( link ) é uma boa alternativa entre plataformas, escrita em JavaScript e empacotada com a Electron.

Há um PR que adicionará suporte para salvar / restaurar da sessão fora da caixa: link

    
por Eugene Kulabuhov 14.05.2017 / 10:55