以下 bash 脚本发布在此线作为在 DWM(X 窗口管理器)中设置 ST(终端窗口)标题的一种方法。虽然通过 .bashrc 添加此段具有所需的结果,但我希望能够在 zsh 中使用它。
set_title(){
local cmd=$BASH_COMMAND
case $cmd in
fg) cmd=$(jobs %); cmd=${cmd##"${cmd% *} "};;
fg\ *|%*) cmd=$(jobs "${cmd#fg }"); cmd=${cmd##"${cmd% *} "};;
esac
printf '\e]2;%s\e\\' "${TERM%%-*} ${cmd//[$'\e\a']/#}"
}
trap set_title DEBUG
我已经尝试在 .zshrc 中将其称为 bash 脚本,但这不会按预期更改窗口标题。任何将其转换为在 zsh 中使用的帮助将不胜感激。
答案1
可能是这样的:
TRAPDEBUG() {
[[ $zsh_eval_context[1] = toplevel ]] || return
local cmd=$ZSH_DEBUG_CMD
case $cmd in
(fg)
cmd=$jobtexts[${(k)jobstates[(r)*:+:*]}];;
(('fg '|%)<->)
cmd=$jobtexts[${(M)cmd%%<->}];;
esac
printf '\e]2;%s\e\\' "${TERM%%-*} ${cmd//[$'\e\a']/#}"
}