No tmux.conf, defina uma opção diferente se window_index for 0?

1

Aqui está a configuração padrão de uma opção em ~/.tmux.conf :

set -gw window-status-format " #I:#W#{?window_flags,#{window_flags}, } "

O problema que tenho com isso é que o caractere de espaço no início do valor não está sendo aplicado ao nome da primeira janela (na lista da janela na barra de status) quando não está ativo, ao contrário de todas as outras janelas em que é aplicado independentemente. Portanto, há esse movimento na lista do Windows sempre que eu mudo para a primeira janela (devido ao caractere de espaço que está sendo adicionado), o que eu sinto é uma distração. Isso não deveria acontecer.

Então, o que eu quero é definir window-status-format para:

  • "#I:#W#{?window_flags,#{window_flags}, } " if window_index é 0 (ou seja, nome da primeira janela de destino).
  • " #I:#W#{?window_flags,#{window_flags}, } " if window_index é qualquer outra coisa.

Apareceria algo assim:

set -gw window-status-format "#{?window_index=0,"#I:#W#{?window_flags,#{window_flags}, } "," #I:#W#{?window_flags,#{window_flags}, } "}"

Mas definitivamente não é o comando certo do tmux (obviamente, não funciona) por vários motivos:

  1. Certamente, essa não é a sintaxe correta para verificar se window_index é igual a 0 .
  2. Podemos ter várias condicionais na mesma configuração do tmux. comando?

Então, como faço isso direito?

    
por its_me 24.11.2016 / 07:05

1 resposta

1

Parece que, em vez de usar várias condicionais, isso pode ser feito usando especificidade. Tudo o que tive que fazer foi adicionar isso ao meu ~/.tmux.conf :

set -gw window-status-format " #I:#W#{?window_flags,#{window_flags}, } "
set -w -t :0 window-status-format "#I:#W#{?window_flags,#{window_flags}, } "

Se já não é óbvio:

  • O primeiro comando tmux define o valor global para todas as janelas, independentemente da sessão. (Esta também é a configuração padrão, você não precisa dessa linha.)

  • O próximo comando especifica o valor para uma janela de destino (novamente, independentemente da sessão). No nosso caso, estamos dizendo, se o índice da janela de destino, ou seja, window_index , for 0 , ou seja, se a janela de destino também for a primeira janela da sessão, aplique o valor.

    É interessante que a opção -t (target-window) também segmente o nome da respectiva janela na barra de status. Se não fosse por isso, essa solução não seria uma.

NOTAS:

  • Se você estiver usando um índice de base diferente, por exemplo, set -g base-index 1 , para que seja iniciado a partir de 1 em vez de 0 , você teria que usar :1 no comando acima.

  • Você precisará de uma solução para isso , pois verá um erro ao criar um novo sessão, mas é claro, você pode contornar isso como eu descrevi lá.

por 24.11.2016 / 11:16

Tags