【发布时间】:2014-01-10 17:43:51
【问题描述】:
如何在 Zsh shell 中将 Urxvt 的窗口标题设置为当前正在运行的(交互式)命令?
例如,如果我正在运行journalctl,我希望journalctl 显示为窗口标题。目前窗口标题只显示urxvt,如果我不运行任何命令就可以了。
【问题讨论】:
如何在 Zsh shell 中将 Urxvt 的窗口标题设置为当前正在运行的(交互式)命令?
例如,如果我正在运行journalctl,我希望journalctl 显示为窗口标题。目前窗口标题只显示urxvt,如果我不运行任何命令就可以了。
【问题讨论】:
这可以通过 precmd 和 preexec 钩子实现。我将它用于我的 xterm。它可能未经修改就可以工作。如果没有,调整的地方是设置终端标题的转义序列,这里是 ESC, ], 0, ;.
case $TERM in
(*xterm* | rxvt)
# Write some info to terminal title.
# This is seen when the shell prompts for input.
function precmd {
print -Pn "\e]0;zsh%L %(1j,%j job%(2j|s|); ,)%~\a"
}
# Write command and args to terminal title.
# This is seen while the shell waits for a command to complete.
function preexec {
printf "\033]0;%s\a" "$1"
}
;;
esac
【讨论】:
可能是一个矫枉过正的解决方案,但安装 oh-my-zsh 并使用其默认配置会给我一个动态窗口标题。以如下截图为例:
【讨论】:
lib/termsupport.zsh看到。