Algumas informações coletadas para ajudar na busca de uma solução:
-
Fazer
#(echo #{session_name})
não produz nada, mas#(echo \"#{session_name}\")
mostra o nome da sessão, que parece promissor, mas ... -
A razão pela qual funciona quando citada é que o comando echo obtém literalmente o texto
#{session_name}
, onde, sem as aspas, o shell considera um comentário e, com as aspas, retorna-o textualmente ao tmux. Tmux expande a sequência depois que o comando sai -
Isso significa que não podemos manipular a string expandida dentro do shell.
Abordagens alternativas
-
A tentativa de definir um limite, como
#7S
para limitar o nome da sessão a 7 caracteres, sempre aplica o limite, mas não permite que você teste isso. Portanto,#7...
sempre mostrará as reticências mesmo quando não desejadas , então isso não funciona -
A tentativa de acessar diretamente via comandos do tmux não parece obter resultados razoáveis. Por exemplo,
tmux list-sessions -F "#{client_session}"
não mostra nada etmux list-clients -F "#{client_session}"
mostra as sessões de cada cliente, mas se você tiver mais de um cliente, não há uma maneira óbvia de dizer qual é o que está executando o comando.
Ainda não investiguei a fonte, mas suspeito que o tmux execute o comando antes mesmo de saber para qual sessão ele pode ser.
Sua melhor aposta para obter essa funcionalidade pode ser ajustar o código-fonte.
A versão 1.8 faz o cálculo do comprimento em status_redraw_get_left(
em torno da linha 79 de status.c e a gravação dele em status_redraw(
na linha 322.