Convertendo um script bash para usar em zsh

Convertendo um script bash para usar em zsh

O seguinte script bash foi postado nestefiocomo meio de definir um título ST (janela de terminal) no DWM (gerenciador de janelas X). Embora adicionar este segmento a by .bashrc tenha o resultado desejado, eu gostaria de poder usar isso em 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

Já tentei chamá-lo como um script bash no meu .zshrc, mas isso não altera o título da janela conforme o esperado. Qualquer ajuda para converter isso para uso em zsh seria apreciada.

Responder1

Poderia ser algo como:

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

informação relacionada