É possível fazer o status_format executar um script externo que pode definir o título. Isto foi descrito na lista de discussão do mutt há vários anos por Amit Ramon , usando um símbolo de pipe |
, que é documentado como:
Any format string ending in a vertical bar (“|”) will be expanded and piped through the first word in the string, using spaces as separator. The string returned will be used for display. If the returned string ends in %, it will be passed through the formatter a second time. This allows the filter to generate a replacement format string including % expandos.
O exemplo de Ramon foi esta string:
set status_format="mutt_status \"$my_status\" \"$my_title\"|"
No seu exemplo, mutt_status
é um script simples que ecoa o primeiro parâmetro para a saída padrão (e é exibido na linha de status), enquanto o segundo é gravado no dispositivo /dev/tty
(e é exibido no a barra de título do xterm):
#!/bin/sh
# Demonstration of format string pipes. Sets the xterm title to the 2nd argument,
# and returns the first unchanged.
#
# this sets the title
printf "3]0;$2set status_format = "mutt_status \"%n new | %M in %f [%v].\" \"%n new | %M in %f [%v].\"|"
7" > /dev/tty
echo "$1"
# end of script
A nota de Ramon dizia que $my_status
e $my_title
são variáveis que ele definiu em sua configuração (mas não deu detalhes além de apontar para a documentação do Mutt para status_format
.
Para o seu exemplo,
1.5.24 (2015-08-31):
+ terminal status-line (TS) support, a.k.a. xterm title. see the
following variables: $ts_enabled, $ts_icon_format, $ts_status_format
enviaria as mesmas informações para as linhas de status e de título.
Ao analisar isso, não notei ts_enabled
e ts_status_format
, que @ Thomas Weinbrenner descreve. Isso foi adicionado ao mutt há apenas alguns meses, em agosto de 2015 :
to_status_line tsl ts move to status line,
column #1
Esse recurso usa o recurso terminfo tsl
, que de acordo com o terminfo (5) requer um parâmetro:
2007-03-14 14:45 -0700 Brendan Cully <[email protected]> (35b8facdbdda)
* contrib/Makefile.am, contrib/mutt_xtitle, muttlib.c: Add demo
mutt_xtitle script
No entanto, a cadeia de título do xterm não aceita um parâmetro. É largamente ignorado em ncurses como tal por este motivo, embora exista (por uma questão de discussão) um xterm+sl
entrada adicionada pela primeira vez em 1999 . Você não encontrará o usado no terminfo "xterm". Em vez disso, a extensão TS
tem sido a alternativa recomendada desde 2012 .
Com exceção do xterm, restaurando o título após a saída do mutt não tem sido amplamente suportado por vários anos, devido a preocupações com seqüências de escape malformadas. O xterm fornece uma consulta / resposta que é desativada por padrão na maioria dos pacotes. Além disso, ele fornece outra seqüência de controle que torna as sequências de títulos empilhadas . A tela do GNU usa esse recurso (adicionado novembro de 2009 ); para a maioria das outras aplicações, o (des) uso de tsl
/ fsl
está muito firmemente estabelecido para fazer alguma diferença para o usuário típico.
Esta pergunta parece ser uma repostagem de LQ no início de 2015, o que curiosamente aponta para um anúncio de lançamento :
Mutt 1.5.15 was released on April 6, 2007. This version has several new and long-standing feature patches applied in anticipation of a feature freeze toward 1.6. These include built-in SMTP, flowed mail support improvements, xterm title updating, charset improvements, GPG PKA support, etc. See the ChangeLog for full details.
No entanto, isso parece se referir a um patch :
#!/bin/sh
# Demonstration of format string pipes. Sets the xterm title to the 2nd argument,
# and returns the first unchanged.
#
# this sets the title
printf "3]0;$2set status_format = "mutt_status \"%n new | %M in %f [%v].\" \"%n new | %M in %f [%v].\"|"
7" > /dev/tty
echo "$1"
# end of script
que eu já conhecia de discussão anterior (e ignorada porque não foi incorporada ao próprio mutt). Alguns empacotadores podem ter aplicado este patch, mas o recurso foi renomeado quando foi finalmente (mais de dez anos) incorporado em mutt.