Mutt 内からターミナルのタイトルを設定しますか?

Mutt 内からターミナルのタイトルを設定しますか?

の助けを借りてxterm タイトルバーにコマンドを表示する実行中のコマンドを反映するようにタイトルを変更しましたgnome-terminal。これにより、どのターミナル Mutt がコマンドを実行しているかがわかります。しかし、私が本当に望んでいるのは、Mutt のステータスをタイトルまで押し上げることです。私は次のようにしています.muttrc:

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

そして、そのステータス全体を自分のタイトルにプッシュしたいのですがgnome-terminal、 でそれを実行する方法はありますか.bashrc? または別の方法はありますか?

vim内でこれをどうやって行うかについての議論がここにありますhttp://vim.wikia.com/wiki/自動設定スクリーンタイトルしかし...それはvimです。

答え1

mutt はすでにこれを実行できます。

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

残念ながら、Mutt を終了してもタイトルは元には戻りません。

答え2

status_formatにタイトルを設定できる外部スクリプトを実行させることも可能です。これは数年前にmuttメーリングリストで説明されました。アミット・ラモンパイプ記号を使用して|文書化されたとして:

縦棒 (“|”) で終わるフォーマット文字列は展開され、スペースを区切り文字として使用して文字列の最初の単語にパイプされます。返された文字列は表示に使用されます。返された文字列が % で終わる場合、フォーマッタにもう一度渡されます。これにより、フィルターは % 展開を含む置換フォーマット文字列を生成できます。

Ramon の例は次の文字列でした:

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

この例では、mutt_status最初のパラメータを標準出力にエコーし(ステータス ラインに表示)、2 番目のパラメータをデバイスに書き込む/dev/tty(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 "\033]0;$2\007" > /dev/tty
echo "$1"
# end of script

ラモンのメモには、$my_statusと は$my_title彼が設定で定義した変数であると書かれていた(ただし、Muttのドキュメントを参照する以外に具体的なことは何も書かれていなかった)。status_format

あなたの例を挙げると、

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

ステータス行とタイトル行の両方に同じ情報を送信します。

これをレビューする際に、私はts_enabledと に気付きませんでしたts_status_formatトーマス・ウェインブレナー説明します。これは数か月前にmuttに追加されました。2015年8月:

    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

この機能は terminfo 機能を使用しますtslが、terminfo(5) によれば、次のパラメータが必要です。

   to_status_line            tsl    ts   move to status line,
                                         column #1

しかし、xtermのタイトル文字列はパラメータを受け入れません。このため、ncursesでは大部分が無視されますが、(議論のために)xterm+slエントリが最初に追加されたのは1999. "xterm" terminfoでは使用されていません。むしろ、この拡張機能はTS2012

xtermを除いて、復元mutt 終了時のタイトルは、不正なエスケープシーケンスに関する懸念から、ここ数年間広くサポートされていません。xterm は、ほとんどのパッケージでデフォルトで無効になっているクエリ/応答を提供します。また、タイトル文字列を積み重ねられたGNU screenはこの機能を使用します(追加2009年11月); 他のほとんどのアプリケーションでは、tsl/の (誤った) 使用法fslがあまりにも定着しているため、一般的なユーザーには違いが生じません。

この質問はLQからの再投稿2015年初頭、興味深いことに、これは年老いた雑種犬を指している。リリースのお知らせ:

Mutt 1.5.15 は 2007 年 4 月 6 日にリリースされました。このバージョンには、1.6 に向けた機能凍結を見越して、いくつかの新しい機能パッチと長期にわたる機能パッチが適用されています。これには、組み込み SMTP、フローメールサポートの改善、xterm タイトルの更新、文字セットの改善、GPG PKA サポートなどが含まれます。変更履歴詳細についてはこちらをご覧ください。

しかし、それを参照しているようですパッチ:

2007-03-14 14:45 -0700  Brendan Cully  <[email protected]>  (35b8facdbdda)

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

私はすでに知っていた以前の議論(そして、Mutt自体に組み込まれなかったため無視されました)。一部のパッケージ作成者はこのパッチを適用したかもしれませんが、この機能は最終的に(約10年以上)組み込まれたときに名前が変更されました。の中へ雑種。

関連情報