zshで使用できるようにbashスクリプトを変換する

zshで使用できるようにbashスクリプトを変換する

以下のbashスクリプトはここに掲載されています。ワイヤーDWM(X Window Manager)で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']/#}"
}

おすすめ記事