Restaurar janelas do terminal após a reinicialização

4

Existe alguma ferramenta nativa ou de terceiros que possa restaurar todas as janelas de terminal abertas com seus caminhos e históricos de linha de comando?

(NÃO hibernação, eu preciso disso após a reinicialização (por exemplo, após a atualização do kernel).)

Ubuntu 15.04, shell Unity.

    
por vladon 08.12.2015 / 07:56

1 resposta

1

Em primeiro lugar, não sei de nada que exista assim. Em segundo lugar, esta não é uma resposta completa, apenas partes, mas não posso postar um comentário apenas respostas.

Eu fiz parte disso, abrindo um terminal gnome que resume o histórico de comandos de uma sessão de terminal anterior (usei isso para capturar comandos durante longos testes de software). Você não precisa capturar o histórico separadamente, apenas especifique qual arquivo o terminal deve usar. Chame esse script de "myterm":

#/bin/bash

TERMDIR=~/.myterms
if [ ! -d $TERMDIR ] ; then
    mkdir $TERMDIR
fi

TERMUID=
if [ -z "$TERMUID" ] ; then
    # generate unique id for new terminal
    TERMUID="'basename \'tty\''-'date +'%s''"
fi

HISTFILE=$TERMDIR/$TERMUID gnome-terminal

Portanto, executar myterm sem um argumento colocará um novo arquivo de histórico em TERMDIR. Se mais tarde você executar myterm com um dos nomes de arquivos em TERMDIR como argumento, ele retoma o histórico desse terminal. Se você tiver um conjunto fixo de terminais, também poderá dispensar a geração de uid aleatória e usar apenas nomes fixos.

Eu sei que você quer fazer muito mais do que isso, mas um requisito não está claro para mim - se você fechar um terminal manualmente, você precisa esquecê-lo? ou seja, remover seu histórico e não reabrir no login? Isso pode ser um pouco complicado, pois não tenho certeza de como detectar fechamento manual em oposição a fechamento forçado durante logout ou desligamento.

A reabertura dos terminais no login é simples o suficiente pela varredura do TERMDIR; ou seja, a existência do arquivo de histórico sinaliza que o terminal é necessário.

Mais difícil está mudando para o último diretório de trabalho. Cada terminal filho conhece seu diretório no momento em que ele é fechado, via $ PWD, mas ofc myterm não pode ler o ambiente filho para gravar isso em uma loja. Não há problema se é conhecido, no entanto; é só usar

HISTFILE=$TERMDIR/$TERMUID gnome-terminal --working-directory somedir

Você pode precisar escrever um monitor que seja executado durante sua sessão de usuário para

  1. detecta quando um terminal está fechado e remove seu histórico
  2. periodicamente detecta o diretório de trabalho e armazena isso

dependendo de suas necessidades.

    
por steve.sims 08.12.2015 / 15:48