Impedir que a tela gnu redimensione o tamanho da tela

21

Sempre que inicio a tela (tela -A) ou tento conectar-me a uma sessão de tela já em execução (tela -Ax), meu terminal é redimensionado para 80 colunas. 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 de centos (eu uso o bash como meu shell).

Asa negra
fonte

Respostas:

30

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 termcapinfolinha é isdefinida (sequência de inicialização) para qualquer terminal com um nome começando com "xterm" em uma sequência de códigos de escape. \Erepresenta escapee 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 os seguintes 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: XTerm Control Sequences )

Dennis Williamson
fonte
obrigado! adicionou esta resposta a serverfault.com/questions/158508/…
Joshua D'Alton
Você se importaria de decodificar a linha termcapinfo?
Huckle
2
@ Huckle: eu adicionei uma explicação dos códigos de escape.
Dennis Williamson
1

A explicação (e os equivalentes sugeridos) para a sequência de inicialização do xterm não são completamente precisas.

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 DECSTRredefine 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 com application / modos normais ( DECCKM, KAM, DECKPAM)
  • envolvente (e envolvente reversa)
  • modo de origem

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

O motivo do uso DECSTR( desde 1997 ) é manter o tamanho do termcap pequeno 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 - tela: tem algum tipo de problema de emulação estranho mais perceptível no irssi e no konsole , de 2002. screennão reconhece essa sequência e, aliás, o KDE konsole não implementa essa sequência, como visto no KDE # 134892 , enquanto, ao mesmo tempo, seus desenvolvedores declaram no KDE # 145977 que preferem não usar um TERMvalor diferente 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 tela clara espúria, a parte relevante da personalização da tela é

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

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

A \E7e \E8na seqüência de inicialização salvar / restaurar a posição do cursor para ajustar as margens de rolagem. Assim como no modo de inserção, alguns usuários notariam a ausência do recurso.

O objetivo da personalização é suprimir a DECCOLMcomutação (coluna 80/132), e trabalhar com o corte da tela e com a personalização antiga pode não funcionar tão bem quanto com a adaptação de uma descrição do terminal escrita para o terminal.

Leitura adicional:

Thomas Dickey
fonte