Terminal-Titel in Mutt festlegen?

7

Mit Hilfe des Befehls Anzeige in der xterm-Titelleiste habe ich gnome-terminalden Titel geändert , um den laufenden Befehl wiederzugeben , damit ich sehen kann, auf welchem ​​Terminal Mutt ihn ausführt . Aber was ich wirklich möchte, ist, meinen Mutt-Status auf den Titel zu bringen. Ich habe dies in meinem .muttrc:

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

und ich würde gerne diesen ganzen Status auf meinen gnome-terminalTitel übertragen. Gibt es eine Möglichkeit, das in meinem zu tun .bashrc? Oder anders?

Es gibt eine Diskussion darüber, wie dies von w / in vim unter http://vim.wikia.com/wiki/Automatically_set_screen_title gemacht wird, aber ... das ist vim.

Amanda
quelle

Antworten:

5

Köter kann das schon.

Mann 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”.

Leider ändert es den Titel nicht zurück, wenn Sie mutt verlassen.

Thomas Weinbrenner
quelle
Huh. Vielleicht eine Versionssache. Für mich ist es xterm_set_titlesaber genau dort. Fabelhaft.
Amanda
Ich glaube, das xterm_set_titleswar ein Patch für Mutt, aber vor 2 Jahren haben sie die ts_Optionen hinzugefügt .
Thomas Weinbrenner
3

Es ist möglich, das status_format ein externes Skript ausführen zu lassen, das den Titel festlegen kann. Dies wurde vor einigen Jahren von Amit Ramon auf der Mutt-Mailingliste unter Verwendung eines Pipe-Symbols beschrieben |, das wie folgt dokumentiert ist :

Jede Formatzeichenfolge, die in einem vertikalen Balken („|“) endet, wird erweitert und durch das erste Wort in der Zeichenfolge geleitet, wobei Leerzeichen als Trennzeichen verwendet werden. Die zurückgegebene Zeichenfolge wird zur Anzeige verwendet. Wenn die zurückgegebene Zeichenfolge mit% endet, wird sie ein zweites Mal durch den Formatierer geleitet. Dadurch kann der Filter eine Ersatzformatzeichenfolge mit% expandos generieren.

Ramons Beispiel war diese Zeichenfolge:

set status_format="mutt_status \"$my_status\" \"$my_title\"|"

In seinem Beispiel mutt_statushandelt es sich um ein einfaches Shell-Skript, das den ersten Parameter in die Standardausgabe überträgt (und in der Statuszeile angezeigt wird), während der zweite in das /dev/ttyGerät geschrieben wird (und in der xterm-Titelleiste angezeigt wird):

#!/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 "\033]0;$2\007" > /dev/tty
echo "$1"
# end of script

Ramons Notiz besagte, dass $my_statusund $my_titleVariablen sind, die er in seiner Konfiguration definiert hat (gab aber keine Einzelheiten an, außer auf die Mutt-Dokumentation für zu verweisen status_format.

Für Ihr Beispiel

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

würde die gleichen Informationen sowohl an Status- als auch an Titelzeilen senden.

Bei der Überprüfung habe ich nicht bemerkt ts_enabledund ts_status_format, was @ Thomas Weinbrenner beschreibt. Das wurde Mutt erst vor wenigen Monaten im August 2015 hinzugefügt :

    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

Diese Funktion verwendet die terminfo-Funktion tsl, für die gemäß terminfo (5) ein Parameter erforderlich ist:

   to_status_line            tsl    ts   move to status line,
                                         column #1

Die Titelzeichenfolge für xterm akzeptiert jedoch keinen Parameter. Aus diesem Grund wird es in Flüchen als solches weitgehend ignoriert, obwohl (zur Diskussion) ein xterm+slEintrag hinzugefügt wurde, der erstmals 1999 hinzugefügt wurde . Sie werden das in der Terminfo "xterm" nicht finden. Vielmehr ist die Erweiterung TShat sich seit der empfohlene Alternative gewesen 2012 .

Mit Ausnahme von xterm wird die Wiederherstellung des Titels nach dem Verlassen von mutt seit einigen Jahren nicht mehr umfassend unterstützt, da Bedenken hinsichtlich fehlerhafter Fluchtsequenzen bestehen. xterm bietet eine Abfrage / Antwort, die in den meisten Paketen standardmäßig deaktiviert ist. Außerdem bietet es eine weitere Steuersequenz, mit der Titelzeichenfolgen gestapelt werden . Der GNU-Bildschirm verwendet diese Funktion (hinzugefügt im November 2009 ). Für die meisten anderen Anwendungen ist die (falsche) Verwendung von tsl/ fslzu fest verankert, um für den typischen Benutzer einen Unterschied zu machen.

Diese Frage scheint eine Neuveröffentlichung von LQ Anfang 2015 zu sein, die interessanterweise auf eine Ankündigung einer älteren Mutt- Veröffentlichung hinweist :

Mutt 1.5.15 wurde am 6. April 2007 veröffentlicht. In dieser Version wurden mehrere neue und langjährige Feature-Patches angewendet, um ein Einfrieren der Features in Richtung 1.6 zu erwarten. Dazu gehören integriertes SMTP, Verbesserungen der Flow- Mail-Unterstützung, Aktualisierung des xterm-Titels, Verbesserungen des Zeichensatzes, GPG-PKA-Unterstützung usw. Ausführliche Informationen finden Sie im ChangeLog .

Jedoch , dass scheint einen Bezug zu nehmen Patch :

2007-03-14 14:45 -0700  Brendan Cully  <brendan@kublai.com>  (35b8facdbdda)

    * contrib/Makefile.am, contrib/mutt_xtitle, muttlib.c: Add demo
    mutt_xtitle script

was ich bereits aus früheren Diskussionen wusste (und ignorierte, weil es nicht in Mutt selbst enthalten war). Einige Packager haben diesen Patch möglicherweise angewendet, aber die Funktion wurde umbenannt, als sie schließlich (ungefähr mehr als zehn Jahre) in Mutt integriert wurde.

Thomas Dickey
quelle