如何更改 mintty 窗口的标题?

Leo*_*nel 41 cygwin mintty

MinTTY 是 Cygwin 的新默认控制台。

什么是用于更改 MinTTY 窗口标题的 shell 命令(我可以将其放入 .bashrc 中,或者甚至更好地放入 .zshrc 中)?

我希望窗口的标题是当前目录的路径,并在我在控制台内切换目录时更新它。

小智 59

怎么了

以下命令对我不起作用:

echo -ne "\e]0;MYTITLE\a"
Run Code Online (Sandbox Code Playgroud)

事实证明,我的默认 Cygwin 安装在 .bashrc 中包含以下提示定义:

PS1=\[\e]0;\w\a\]\n\[\e[32m\]\u@\h \[\e[33m\]\w\[\e[0m\]\n$
Run Code Online (Sandbox Code Playgroud)

请注意,提示 ( \e]0;\w\a)的第一部分是每次出现提示时设置窗口标题。

解决方案

在您的.bashrc定义 2 个函数中添加这些行:

function settitle() {
      export PS1="\[\e[32m\]\u@\h \[\e[33m\]\w\[\e[0m\]\n$ "
      echo -ne "\e]0;$1\a"
}
function settitlepath() {
      export PS1="\[\e]0;\w\a\]\n\[\e[32m\]\u@\h \[\e[33m\]\w\[\e[0m\]\n$ "
}
Run Code Online (Sandbox Code Playgroud)

然后您可以使用以下命令设置自定义标题:

settitle "MYWonderfullTest here"
Run Code Online (Sandbox Code Playgroud)

或者您可以使用以下命令恢复到 cygwin 的默认值(当前路径):

settitlepath
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助

  • 这应该被接受作为答案,因为它与投票最高的答案完全不同 (3认同)

小智 27

为此,您可以使用 xterm 控制序列更改它,如下所示:

echo -ne '\e]0;Title\a'
Run Code Online (Sandbox Code Playgroud)

请参阅:http : //code.google.com/p/mintty/issues/detail?id=241

  • 可能问题是命令提示符已经配置为更新标题(例如使用当前路径),所以命令可以工作,但它突然被提示覆盖。 (10认同)
  • 对我没有影响:/也许这个技巧在过去的 6 个月里已经失效了? (5认同)
  • 从屏幕内发出时它不起作用。 (2认同)
  • 测试它“echo -ne '\e]0;Title\a' && cat”。此方法可防止提示立即重置它。(如果可行,您可以按照其他答案中的描述在您的个人资料中更改 PS1) (2认同)

Leo*_*nel 4

将其放入 .zshrc 中:

# Change title of MinTTY to current dir
function settitle() {
    echo -ne "\033]2;"$1"\007"
}
function chpwd() {
    settitle $(cygpath -m `pwd`)
}
Run Code Online (Sandbox Code Playgroud)

函数settitle中的特殊字符序列使MinTTY改变窗口的标题。

zsh中,如果您定义一个具有特殊名称 chpwd 的函数,它将在每个 chdir 之后调用

适用于 WinXP,Cygwin 1.7 和 MinTTY 运行 zsh。