Evita que o gnu tela redimensione o tamanho da tela

19

Sempre que inicio a tela (tela -A) ou tento conectar a uma sessão de tela já em execução (tela -Ax), meu terminal é redimensionado para 80 colunas. Eu quero impedir que a tela redimensione meu terminal.

Estou usando o iTerm no Snow Leopard e minhas sessões de tela estão em uma máquina centos (eu uso o bash como meu shell).

    
por blackwing 01.12.2010 / 08:56

2 respostas

27

Tente adicionar isso (de /etc/screenrc ) ao seu ~/.screenrc :

# Change the xterm initialization string from is2=\E[!p\E[?3;4l\E[4l\E>
# (This fixes the "Aborted because of window size change" konsole symptoms found
#  in bug #134198)
termcapinfo xterm* 'is=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;4;6l'

Pode ser necessário alterar o "xterm" para corresponder ao seu $TERM .

A linha termcapinfo define is (sequência de ininitialização) para qualquer terminal cujo nome comece com "xterm" para uma sequência de códigos de escape. \E representa escape e os códigos são os seguintes:

\E[r       - set scrolling region to default (full size of window)
\E[m       - reset all resources (keyboard) to their initial values
\E[2J      - Erase in Display (ED). 2 -> Erase All.
\E[H       - set cursor position to default (1, 1)
\E[?7h     - DEC Private Mode Set. 7 -> Wraparound Mode
\E[?1;4;6l - DEC Private Mode Reset. 1 -> Normal Cursor Keys; 4  -> Jump (Fast) Scroll; 6 -> Normal Cursor Mode

A linha substituída tinha esses códigos:

\E[!p      - Soft terminal reset
\E[?3;4l   - DEC Private Mode Reset. 3 -> 80 Column Mode; 4 -> Jump (Fast) Scroll
\E[4l      - Reset Mode. 4 -> Replace Mode
\E>        - Normal keypad

(fonte: Sequências de controle do XTerm )

    
por 01.12.2010 / 20:22
0

A explicação (e os equivalentes sugeridos) para a string de inicialização xterm não são completamente precisos.

Começando com a string da descrição do terminal do xterm:

is2=\E[!p\E[?3;4l\E[4l\E>

temos

CSI ! p   Soft terminal reset (DECSTR).
CSI ? Pm l
      DEC Private Mode Reset (DECRST).
...
        Ps = 3  -> 80 Column Mode (DECCOLM).
        Ps = 4  -> Jump (Fast) Scroll (DECSCLM).
CSI Pm l  Reset Mode (RM).
...
        Ps = 4  -> Replace Mode (IRM).
ESC >     Normal Keypad (DECKPNM).

Mas DECSTR redefine várias coisas não encontradas na substituição:

  • a forma e a aparência do cursor
  • conjuntos de caracteres
  • outros modos de teclado relacionados a aplicativos / modos normais ( DECCKM , KAM , DECKPAM )
  • envolvente (e envolvente inversa)
  • modo de origem

Além disso, não limpa a tela.

O motivo para usar DECSTR ( desde 1997 ) é manter os tamanhos termcap pequenos o suficiente para caber no limite de 1024 bytes do termcap.

A configuração para screen é do pacote Debian; o relatório de bug mencionado no comentário é Debian # 134198 - screen: tem algum tipo de problema de emulação ímpar mais perceptível com o irssi e o konsole , de 2002. screen não reconhece essa sequência e, por acaso, o KDE não implementa essa sequência, como visto em KDE # 134892 , enquanto ao mesmo tempo seus desenvolvedores informam KDE # 145977 que preferem não usar um valor TERM diferente de xterm . Como alguns usuários podem querer uma descrição do terminal que corresponda aos recursos do konsole, isso é ncurses como konsole , por exemplo,

is2=\E[m\E[?7h\E[4l\E>\E7\E[r\E[?1;3;4;6l\E8

versus

is2=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;4;6l

Removendo a falsa clear-screen, a parte relevante da customização da tela é

is2=\E[r\E[m\E[?7h\E[?1;4;6l

então o que ficou de fora foi (além de DECCOLM ) \E[4l .

O \E7 e \E8 na cadeia de inicialização salvam / restauram a posição do cursor ao ajustar as margens de rolagem. Assim como o modo de inserção, alguns usuários notariam a ausência do recurso.

O ponto da personalização é suprimir a comutação de DECCOLM (coluna 80/132), e trabalhar a partir de uma personalização antiga e bem cortada da tela pode não funcionar tão bem quanto a adaptação de uma descrição do terminal escrita para o terminal.

Leitura adicional:

por 27.07.2016 / 23:00

Tags