Alinhamento de texto à direita na legenda da tela GNU ou na hardstatusline

6

Eu tenho isso no meu .screenrc

caption always "%{= Kw} [%0c] %-Lw%{= KW}[%50>%n%f* %t]%{= Kw}%+Lw%=| %l | ${FULLHOST}"

Normalmente, apresenta algo assim:

[01:06] 0$ vim  1$ top  2-$ tail  [3$* ~]          | 0.26 0.54 0.36 | machine.domain.com

No entanto, quando eu tenho muitas janelas abertas, os dados à direita são empurrados para fora da borda e truncados:

[01:07] 0$ vim  1$ top  2$ tail  3$ ~  4$ ~  5$ ~  6-$ ~  [7$* ~] | 0.21 0.46 0.34 | mac

Como posso alterar o comando de legenda para truncar a lista de janelas, se necessário, em vez de empurrar as informações corretas para fora da borda? Pontos de bônus se a janela ativa estiver sempre exibida também.

    
por Alex J 30.05.2009 / 19:16

2 respostas

4

Outra solução que estou usando atualmente. Em vez de '% =' como na linha original, ou '% -30 =' no bender (que se alinha à marca de -30% (aka 70%)), estou usando '% -043 =' (que alinha para a marca de -43 caracteres). Mas é claro que isso tem o mesmo problema que o do bender, onde eu preciso compensar as alterações para cada servidor. A solução é editar o .screenrc por servidor, com um comando como este:

sed -i "s/043/0$(( 19 + $#FULLHOST ))/" ~/.screenrc

(O 19 é o número de caracteres usados pelo display de carga e espaçamento)

Como meu .screenrc é gerado pelo arquivo .rc do meu shell, se não estiver lá, posso executar imediatamente esse comando depois de fazer isso e terminar com um alinhamento de deslocamento correto para cada servidor. Não é elegante, mas funciona!

Problemas remanescentes, que eu realmente não me importo o suficiente para resolver:

  • A lista de janelas (e qualquer coisa à esquerda, incluindo a hora) é empurrada para a esquerda agora. Eu resolvi isso removendo o relógio.
  • Se o nome do host da máquina for alterado, preciso regenerar o .screenrc, que envolve excluí-lo e, em seguida, iniciar um novo shell.
por 01.06.2009 / 10:16
3

Eu uso:

caption always "%-Lw%{= Yk}%50>%n%f*%t%{-}%+Lw%<%-12= %?%F%?%{b}%c %m/%d%?"

Isso exibe algo como:

0*bender@armitage  1 bender@rikki  2 bender@gibson     15:11 05/30

Isso mantém a hora e a data na linha de status e na janela ativa na lista à medida que o tamanho da lista de janelas aumenta. O bit mágico que você está perdendo é uma largura definida para a parte que você deseja manter no lado direito. Esta é a diretiva "% -12=" width no meu comando de legenda.

Tente algo como:

caption always "%{= Kw} [%0c] %-Lw%{= KW}[%50>%n%f* %t]%{= Kw}%+Lw%-30=| %l | ${FULLHOST}"

Você precisará jogar com a largura (% -30 = acima) para exibir seu nome de host completo.

    
por 30.05.2009 / 23:26