![从 Mutt 中设置终端标题?](https://linux22.com/image/76556/%E4%BB%8E%20Mutt%20%E4%B8%AD%E8%AE%BE%E7%BD%AE%E7%BB%88%E7%AB%AF%E6%A0%87%E9%A2%98%EF%BC%9F.png)
在...的帮助下在 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_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 中找到它。相反,自那时以来,扩展TS
一直是推荐的替代方案2012年。
除了 xterm 之外,恢复由于担心转义序列格式错误,从 mutt 退出后的标题多年来一直没有得到广泛支持。 xterm 提供了在大多数软件包中默认禁用的查询/响应。此外,它还提供了另一个控制序列,使标题字符串堆叠的。 GNU 屏幕使用此功能(添加2009年11月);对于大多数其他应用程序来说, tsl
“/”的(误)使用fsl
过于根深蒂固,无法对典型用户产生任何影响。
这个问题似乎是一个转自 LQ2015 年初,有趣的是,这表明是一只年长的杂种狗发布公告:
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 本身中)。一些打包者可能已经应用了这个补丁,但该功能在最终(大约十多年)合并时被重命名进入杂种狗。