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


80

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?


Recurso muito interessante, mas acho que não está disponível.
DLIN

Qual aplicativo de terminal você está usando? Terminal Gnome? Konsole? etc
gertvdijk

@ gertvdijk: Aquele chamado "Terminal". Eu acredito que é o gnomo.
false

1
@false Btw., o Xfce won também é chamado de "Terminal". Para qualquer pessoa interessada, ele está documentado no Xfce Goodies , projetos: applications: terminal :) #
582 Nostromov

2
Para tornar isso possível, vote em bugzilla.gnome.org/show_bug.cgi?id=623986
Marius Andreiana

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 

ATUALIZAR

Depois de brincar com o bash, criei o seguinte script que também armazena os nomes das guias 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ê deve executá-lo na primeira guia do seu terminal. Carregando o mesmo de antes:

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

EXPLICAÇÃO:

Posso usar o seguinte para obter o nome da guia:

xprop -id $WINDOWID WM_NAME

Posso usar o seguinte para ir para a próxima guia:

xdotool key ctrl+Page_Down;

Estou recebendo um número de guias depois de grepping o arquivo de configuração que eu salvei antes:

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

Para que eu possa percorrer as 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 estou criando uma matriz de números de linha onde adicionarei linhas.

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

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

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

1
Você pode querer olhar para o comando da tela. Não o uso, mas acredito que ele pode salvar e restaurar todos os tipos de sessões - mesmo remotas.
31513 Joe

1
O título não está funcionando? Certifique-se que no menu Editar Preferências \ Perfil na guia 'Título e Command' 'Quando os comandos do terminal definir seus próprios títulos: 'MANTENHA TÍTULO INICIAL' Espero que isso ajude com as questões de título
Sentient

1
Qual é o comportamento pretendido com esta resposta? Para mim, ele salva as guias e acredito no diretório de trabalho atual. Mas isso não salva a entrada e saída anteriores. O terminal OS X faz isso.
Tyler Collier

11
gnome 3.18: A opção "--save-config" não é mais suportada nesta versão do gnome-terminal.
Marius Andreiana

2
Ubuntu 16.04: A opção "--save-config" não é mais suportada nesta versão do gnome-terminal.
Eugene Kulabuhov

12

Uma alternativa é usar apenas o 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 sempre que desejar. Quando você reabrir o Byobu, todos os seus terminais serão restaurados :)


1
Funciona nas reinicializações? Para mim, o redefine após a reinicialização.
akshay2000

3
Ele não funciona entre as reinicializações
maxgalbu

1
Ele não reabre todas as guias aqui, apenas a primeira.
Leonardo Castro

3
Por que isso é até votado como resposta se não funciona nas reinicializações?
Killjoy

3

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

  1. Vá em Configurações-> Perfis e selecione o 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.

Essa opção evita que seu conjunto de títulos inicial seja substituído.

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

Obrigado!!


3

Tentei mais uma opção,

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

# If this is an xterm set the title to user@host: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-configtodos os nomes de guias são restaurados corretamente. E você também pode mudar como quiser e salvar as guias novamente !!


3

Eu encontrei uma maneira de fazer isso que eu 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
    

Fiz um alias com esse comando e funcionou muito bem para mim. Eu apenas digito workflowe 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 .bashrcarquivo eu coloquei:

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

1

Screen ou Byobu são meus métodos preferidos para gerenciar fluxos de trabalho complexos no terminal, e ambos permitem salvar suas configurações.


1

Um pequeno aprimoramento no script existente que também verifica o xdotool instalado no sistema e adiciona variáveis ​​para alterar 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

1

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

Atualmente, ele é testado no gnome-terminal 3.2, mas pode ser configurado para qualquer programa de terminal com uma funcionalidade de salvar-configuração semelhante.

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

1

Também procurei esse recurso no terminal Gnome, mas não o encontrei. A melhor opção que encontrei até agora é usar o konsole. Ele permite que você marque suas guias como favoritos, para poder voltar a elas escolhendo-as em um menu de favoritos. Eu espero que isso ajude.



0

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

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

fechar janelas dos terminais

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

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


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.