使用 xterm 和屏幕设置 Terminal.app 代理图标

使用 xterm 和屏幕设置 Terminal.app 代理图标

很长一段时间以来,我一直在使用提供的答案恢复 Zsh 终端 (OS X Lion)在 下运行时为 Terminal.app 设置代理图标zsh,到目前为止,它运行良好。但是,我最近注意到在zsh下运行时screenzsh无法再更新 Terminal.app 的当前工作目录。

经过一番寻找,似乎screen接受不同的转义序列(或类似的序列)来设置其标题,并且screen和之间似乎存在一些沟通不畅xterm,但总的来说,我还没有找到解决此问题的方法。

我已将以下行添加到我的.screenrc文件中,但无济于事:

termcapinfo xterm* 'hs:ts=\E]2;:fs=\007:ds=\E]2;screen\007'

我见过很多不同的“解决方案”,但没有一个专门支持这一点——有什么帮助吗?


为了澄清起见,按照克里斯下面的评论:以前,我使用以下行来更新终端:

printf '\e]7;%s\a' "${PWD// /%20}"

这在屏幕下不起作用,要么是因为printf功能方式,要么是因为使用的转义序列。

答案1

最终解决了我自己的问题。我使用以下代码添加了一个zsh钩子:chpwd

# Update Terminal about the current working directory.
if [[ "$TERM_PROGRAM" = "Apple_Terminal" ]]; then
    update_terminal_pwd() {
        echo -n "<ESC>]0;${$(pwd -P)//\/Users\/itaiferber/~}/"
    }

    autoload add-zsh-hook
    add-zsh-hook chpwd update_terminal_pwd
    update_terminal_pwd
fi

这会将终端窗口的标题更新为当前工作目录(在跟随符号链接时显示缩写路径而不是完整文件路径),以及文档代理图标。

需要澄清的是,这需要与问题中提到的线路一起使用.screenrc- 它不能立即起作用。


再次,根据 Chris 的评论,我想明确一点:这个答案似乎提供了正确的转义序列来触发终端标题更新。我认为通过此配置,screen现在可以正确更新终端的标题。

相关内容