從 Mutt 設定終端標題?

從 Mutt 設定終端標題?

在...的幫助下在 xterm 標題列中顯示指令我已經gnome-terminal更改了標題以反映正在運行的命令,以便我可以看到 Mutt 正在哪個終端機運行它。但我真正想要的是將我的雜種狗地位提升到標題。我的.muttrc

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

我很樂意將整個地位推向我的gnome-terminal頭銜。有沒有辦法在我的中做到這一點.bashrc?或其他方式?

有一個關於如何在 vim 中執行此操作的討論:http://vim.wikia.com/wiki/Automatically_set_screen_title但是...那是vim。

答案1

mutt 已經可以做到這一點。

男人穆特克

  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 郵件列表中對此進行了描述阿米特·拉蒙,使用管道符號|,即有記錄的作為:

任何以垂直線(“|”)結尾的格式字串都會被擴展並透過字串中的第一個單字進行管道傳輸,使用空格作為分隔符號。傳回的字串將用於顯示。如果傳回的字串以 % 結尾,它將再次通過格式化程式。這允許過濾器產生包括 % Expandos 的替換格式字串。

Ramon 的例子是這個字串:

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

在他的範例中,mutt_status是一個簡單的 shell 腳本,它將第一個參數回顯到標準輸出(並顯示在狀態列中),而第二個參數則寫入裝置/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

Ramon 的註釋說$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_enabledts_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 中找到它。相反,自那時以來,擴展TS一直是推薦的替代方案2012年

除了 xterm 之外,恢復由於擔心轉義序列格式錯誤,從 mutt 退出後的標題多年來一直沒有得到廣泛支持。 xterm 提供了在大多數軟體包中預設為停用的查詢/回應。此外,它還提供了另一個控制序列,使標題字串堆疊的。 GNU 畫面使用此功能(新增2009年11月);對於大多數其他應用程序,tsl“/”的(誤)使用fsl過於根深蒂固,無法對典型用戶產生任何影響。

這個問題似乎是一個轉自 LQ2015 年初,有趣的是,這表明是一隻年長的雜種狗發佈公告:

Mutt 1.5.15 於 2007 年 4 月 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 本身)。一些打包者可能已經應用了這個補丁,但該功能在最終(大約十多年)合併時被重命名進入雜種狗。

相關內容