Os terminais "redimensionáveis", como tais, são o resultado do NAWS ( Negotiate About Window Size
da opção de tamanho de janela Telnet RFC 1073 ).
Se você estiver conectado diretamente ao computador usando uma porta serial, não há negociação envolvida e o computador não tem conhecimento direto do tamanho da tela do seu terminal.
Se um terminal puder negociar o tamanho, o computador enviará SIGWINCH
para aplicativos em execução no terminal, solicitando que eles atualizem sua noção do tamanho da tela.
Quando o computador não conhece o tamanho da tela, normalmente define o tamanho mostrado por stty -a
(linhas e colunas) como zero. Para uso interativo, isso é um pouco hostil, e alguns sistemas usam variáveis de ambiente LINES
e COLUMNS
para ajudar. Os valores atribuídos podem ser derivados da descrição do terminal; mais frequentemente, eles são simplesmente codificados. A convenção para essas variáveis exige que elas entrem em vigor, a menos que sejam explicitamente suprimidas, por exemplo, na use_env
função de aplicações malditas . No lado positivo, essas variáveis podem ser úteis quando nenhuma informação confiável estiver disponível. No lado negativo, não existe um método conveniente para alterar essas variáveis.
O resize
programa (um utilitário fornecido com xterm
) pode usar a sequência de escape do relatório de posição do cursor no estilo VT100 para determinar o tamanho da tela. Isso pode ser executado na linha de comando; não há (novamente) nenhuma maneira conveniente de fazer isso automaticamente. Como efeito colateral, resize
atualiza as informações nas linhas / colunas vistas por stty
. Seu uso para fornecer variáveis de ambiente atualizadas é útil principalmente para casos como este, onde LINES
e COLUMNS
são definidos, e deve ser atualizado.
[[ $(tty) == /dev/ttyS0 ]] && trap res2 DEBUG
a uma das configurações em seu perfil shell (por exemplo,/etc/profile
,~/.bash_profile
). Isso fará com que seja executado após cada comando (o que seria bom se você estiver redimensionando janelas / painéis com screen / tmux / emulador de terminal).