다음 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']/#}"
}