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?
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?
Respostas:
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
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 :)
Tentei as opções abaixo depois de restaurar as configurações salvas e o título também é restaurado corretamente.
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!!
Tentei mais uma opção,
Alterei meu título padrão do Terminal para usar o valor Intital ~/.bashrc
, em vez de alterar as ~/.profile
configuraçõ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-config
todos os nomes de guias são restaurados corretamente. E você também pode mudar como quiser e salvar as guias novamente !!
Eu encontrei uma maneira de fazer isso que eu acho que é mais rápido.
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 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 .bashrc
arquivo eu coloquei:
alias workflow='gnome-terminal --tab-with-profile=Git --tab-with-profile=Run | sublime-text &'
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
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
Aqui está um fork do terminal xfce, com possibilidade de salvar / restaurar a sessão apenas no menu: https://github.com/repu1sion/xfce4-terminal
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.
O Hyper ( https://github.com/zeit/hyper ) é uma boa alternativa de plataforma cruzada, escrita em JavaScript e incluída no Electron.
Há um PR que adicionará suporte para salvar / restaurar da sessão imediatamente: https://github.com/zeit/hyper/pull/945