Defina o título do terminal dentro do Mutt?

6

Com a ajuda do comando de exibição na barra de título do xterm gnome-terminal alterando o título para refletir o comando em execução, para que eu possa ver qual terminal o Mutt está executando. Mas o que eu realmente gosto é empurrar o meu status de Mutt para o título. Eu tenho isso no meu .muttrc :

set status_format = "%n new | %M in %f [%v]."

e adoraria transmitir todo esse status para o meu gnome-terminal title. Existe uma maneira de fazer isso no meu .bashrc ? Ou outro jeito?

Há uma discussão de como fazer isso a partir do w / in vim no link mas ... isso é vim.

    
por Amanda 04.11.2015 / 00:07

2 respostas

3

mutt já pode fazer isso.

man muttrc

  ts_enabled
          Type: boolean
          Default: no

         Controls whether mutt tries to set the terminal status line and
          icon name.  Most terminal emulators emulate the status line in
          the window title.



  ts_status_format
          Type: string
          Default: “Mutt with %?m?%m messages&no messages?%?n? [%n NEW]?”

         Controls the format of the terminal status line (or window
          title), provided that “$ts_enabled” has been set. This string is
          identical in formatting to the one used by “$status_format”.

Infelizmente, isso não altera o título de volta, quando você sai do mutt.

    
por 04.11.2015 / 08:02
3

É 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;$2
set 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;$2
set 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.

    
por 04.11.2015 / 02:29