以下の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']/#}"
}