Преобразование bash-скрипта для использования в zsh

Преобразование bash-скрипта для использования в zsh

Следующий скрипт bash был опубликован в этомнитькак средство установки заголовка ST (терминального окна) в DWM (менеджере окон X). Хотя добавление этого сегмента в .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

Я уже пробовал вызывать его как скрипт bash в моем .zshrc, однако это не меняет заголовок окна, как ожидалось. Любая помощь в конвертации этого для использования в 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']/#}"
}

Связанный контент