如何更改 mintty 窗口的标题?

如何更改 mintty 窗口的标题?

MinTTY 是 Cygwin 的新默认控制台。

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

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

答案1

怎么了

以下命令对我来说不起作用:

echo -ne "\e]0;MYTITLE\a"

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

PS1=\[\e]0;\w\a\]\n\[\e[32m\]\u@\h \[\e[33m\]\w\[\e[0m\]\n$

请注意,提示的第一部分(\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$ "
}

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

settitle "MYWonderfullTest here"

或者你可以用这个命令恢复到 cygwin 的默认设置(当前路径):

settitlepath

希望这可以帮助

答案2

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

echo -ne '\e]0;Title\a'

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

答案3

将其放在.zshrc 中:

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

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

,如果你用特殊名称 chpwd 定义一个函数,它将是在每个 chdir 之后调用

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

答案4

我使用了 Leonel 的答案,但我发现这样做时标题只会闪烁,这意味着至少 echo 命令可以按预期工作。我使用以下方法以交互方式运行 zsh,并启用调试模式

zsh -xv

更改目录显然会调用另一个title()precmd()和之后调用的函数chpwd(),从而有效地覆盖它们。所以我将它插入到我的 .zshrc 中,它成功了。

function settitle() {
    echo -ne "\033]2;"$1"\007"
}
function title() {
    settitle $(cygpath -m `pwd`)
}

如果您更喜欢使用chpwd()precmd(),只需禁用标题功能:title(){}

相关内容