Como persistir o layout `gnu screen` após a reinicialização

13

Estou usando a screendivisão em 3 com o vim à esquerda e duas outras telas divididas horizontalmente à direita. Sei que, ao desanexar de uma tela, posso salvar o layout :layout save my_layout_name.

Já tenho layout autosave onno meu .screenrcarquivo, mas isso não ajuda no meu problema.

Como posso persistir o layout de uma tela entre diferentes sessões de terminal e após a reinicialização do pc? Ou, talvez, como alternativa, existe uma maneira de executar a tela (parâmetros) que a divide, configurar o bash em todas as janelas e salvar o layout?

randunel
fonte

Respostas:

13

Layout padrão para novas telas

Gerencie suas regiões e execute o código dentro da tela :

  • Para salvar seu layout atual em arquivo .screen_layout:

    rm -f $ HOME / .screen_layout
    despejo de layout de tela -X .screen_layout
    
  • Para fazer o carregamento automático com economia de layout:

    fonte de eco .screen_layout >> $ HOME / .screenrc
    layout de eco save def >> $ HOME / .screenrc
    

Como funciona

  1. Você digita screen.
  2. Tela lê $HOME/.screenrc:
  3. source .screen_layout- ler e executar comandos das $HOME/.screen_layout
    regiões agora criadas.
  4. layout save def- salve as regiões atuais como layout para mantê-lo ao desanexar.

layout dump .screen_layout

  • Despejar ( anexar ) o layout atual no arquivo no $HOMEdiretório

screen -X command

  • Executar commandna sessão de tela atual (se executada dentro).
    Semelhante a ctrlaentão: command

Voce pode tambem

  • Desative o aviso de direitos autorais na inicialização:

    eco startup_message off >> $ HOME / .screenrc
  • Aumentar o buffer de rolagem (def. 100)

    echo defscrollback 1000 >> $ HOME / .screenrc
  • Escreva próprio .screen_layout(50% / 50% vertical, com 2 conchas):

    dividir -v
    tela -t s1
    
    foco
    tela -t s2
    
    foco
    
befzz
fonte
Você está certo. Esse método persiste no layout da tela despejando os comandos em um arquivo e repetindo-os .screenrc. O .screen_layoutarquivo pode ser editado com todos os comandos a serem executados sempre que screenfor executado, inclusive layout save defaultno final. Sugiro que outros leitores adicionem screendepois focusno .screen_layoutarquivo para executar o bash.
Randunel
7

Ctrl- aem seguida, :em seguida, layout save default a tela Fornecido é a versão mais recente (com recurso de layout) Boa sorte.

ATUALIZAÇÃO: Aqui está o arquivo .screenrc que tornará a alteração permanente , além de adicionar outros recursos interessantes.

Mir Dunaev
fonte
Alguma idéia de por que o layout autosave onno .screenrcnão funcionou? Isso seria preferível para mim.
Spinlock
Você está certo, isso não funciona. Mas testei o .screenrc a partir daqui: gist.github.com/joaopizani/2718397 e funciona.
Mir Dunaev
2

O " salvamento automático do layout ativado " funciona apenas para layouts nomeados explicitamente em .screenrc.

Nomeadamente, se você especificou um layout como ABC, mudou para ele na sessão Screen e desanexou, esse último layout será restaurado depois que a sessão for retomada.

Se você não especificou nenhum layout no arquivo de configuração, execute o comando interno " layout save your_layout_name " antes de desanexar.

Este é um .screenrc com layouts predefinidos para escolher:

 0 — one (the only region)
 1 — two-v (the screen is splitted vertically into two regions, default layout)
 2 — two-h (the screen is splitted horizontally into two regions)
 3 — three (three regions — two in the upper part of the screen and one underneath)
 4 — four (four regions)

Layouts predefinidos

Uma vez selecionados na Tela, esses layouts são preservados após o desapego até a próxima retomada da sessão (devido ao comando "layout autosave on").

Se você criou seu próprio layout, ele deve ser salvo com o comando " layout dump filename ". Então você pode usar um código de arquivo "nome do arquivo" para adicionar o seu layout em #layouts seção deste .screenrc para escolher.

Por padrão, o layout " dois-v " é carregado com a única janela com bash.

Oleg Bolden
fonte
Isso é ótimo, embora eu tenha perdido a maneira de alternar de um layout para outro, depois vi o comentário de que a ligação de teclas foi removida. Apenas fyi - essa combinação de teclas funciona para mim (Ubuntu 16.04) para alternar layouts: bind ' ' layout next # <- actually means Ctrl-a + Space
Bachi
0

Segundo esta fonte , não é possível devido ao modo como screenfunciona. Existe um hack fornecido lá, no entanto. Basicamente, tudo se resume à tela de aninhamento dentro de outra tela, o que pode não ser muito conveniente. (Resposta encontrada aqui )

Se você usa a tela para divisão de terminal em sua máquina local (o que eu deduzo do reinício do PC mencionado), você pode conferir o emulador de terminal chamado terminator. Ele suporta divisões de terminais horizontais e verticais (também aninhadas) e você pode salvar seu layout favorito para uso posterior. Então você simplesmente executar terminador com uma opção adequada: terminator -l <name of saved layout>.

Erathiel
fonte
Estou ciente de aninhar uma tela dentro de outra tela, mas todas as telas são encerradas na reinicialização. A tela dentro de uma tela foi resolvida quando layoutfoi adicionada. Portanto, sua resposta está além da pergunta e está desatualizada. Agradeço a terminatorsugestão embora.
Randunel