urxvt - largura da coluna de força

3

Estou usando o urxvt com um gerenciador de janelas lado a lado (impressionante) e gostaria de ter meus terminais mantendo 80 colunas, independentemente do tamanho da janela.

Então, eu queria saber se existe uma maneira de forçar o urxvt a redimensionar a fonte / espaçamento para manter uma certa largura de coluna?

Os terminais de desova com urxvtc -g 80 não fazem o truque. Eu olhei para man 7 urxvt sem sorte ...

    
por zje 06.02.2015 / 17:06

1 resposta

1

Parece que há duas perguntas:

  • como iniciar urxvt , selecionando automaticamente um tamanho de fonte apropriado, desde que urxvt use 80 colunas, e
  • como manter urxvt usando 80 colunas (e ajustar automaticamente o tamanho da fonte) à medida que se redimensiona a janela.

Aplicativos X podem perguntar por um determinado tamanho de janela, mas o gerenciador de janelas informa o aplicativo qual tamanho ele usará. Os emuladores de terminal geralmente solicitam tamanhos de janela que são múltiplos (linhas) da altura da fonte e (colunas) da largura da fonte. Isso possibilita que o gerenciador de janelas coopere (um pouco ...) ao redimensionar a janela, além de fornecer feedback visual para as colunas e- layout.

Quando urxvt está usando uma fonte TrueType, pode (em princípio) usar qualquer tamanho dimensionado. Quando abre uma fonte, obtém a altura e a largura de uma célula de caractere. Você poderia usar os mesmos valores junto com o tamanho do ecrã e computar uma escala apropriada para pedir, para manter a janela com no máximo 80 colunas.

Mas a parte difícil é que, se o gerenciador de janelas discordar, ele alterará essa solicitação, possivelmente alterando a altura e a largura da janela. Qualquer dimensão pode ser aumentada ou diminuída independentemente da outra. Em um gerenciador de janelas lado a lado, você não pode sequer assumir que a janela pode encolher para manter uma proporção adequada. O resultado final é que urxvt obtém um tamanho de janela e, em seguida, decide como dividi-lo em células de caractere.

As alterações no layout inicial do gerenciador de janelas geralmente são detectadas pelo emulador de terminal, que o transmite para o shell (possivelmente ainda não iniciado) como um evento de alteração do tamanho da janela SIGWINCH .

Da mesma forma, o redimensionamento da janela após a inicialização é transmitido como SIGWINCH .

Dado que, você poderia escrever um aplicativo no shell que captura SIGWINCH e modifica o tamanho da fonte usada por urxvt (que pode então perguntar à janela gerente para um melhor layout).

Isso é factível , mas pronto para uso, urxvt não oferece uma maneira direta de fazê-lo. Isso exigiria alguns scripts / programação:

extend dynamic colors control sequences to allow users to determine the colors and font which are currently active.

que se refere a esse recurso documentado em Sequências de controle do XTerm :

If a "?" is given rather than a name or RGB specification, xterm replies with a control sequence of the same form which can be used to set the corresponding dynamic color. Because more than one pair of color number and specification can be given in one control sequence, xterm can make more than one reply.

e

       Ps = 5 0  -> Set Font to Pt.

Então, um aplicativo poderia fazer

printf '3]50;?
printf '3]50;?%pre%7'
7'

e recupere a fonte atual - até 250 caracteres, de qualquer forma (veja o código fonte )

  • depois de fazer cálculos adequados, seu aplicativo pode atualizar a fonte (mesma sequência de controle).

Estranhamente, em uma verificação rápida, a cópia de urxvt (Debian 7) não funciona para o script de teste em xterm para o recurso. Mas se o recurso puder funcionar para você, esse é o meio pelo qual você poderia implementar o redimensionamento automático de fontes.

    
por 18.08.2016 / 01:13