Convertir un script bash para usarlo en zsh

Convertir un script bash para usarlo en zsh

El siguiente script bash fue publicado en estehilocomo una forma de configurar un título ST (ventana de terminal) en DWM (administrador de ventanas X). Si bien agregar este segmento a by .bashrc tiene el resultado deseado, me gustaría poder usarlo en 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

Ya intenté llamarlo como un script bash en mi .zshrc, sin embargo, esto no cambia el título de la ventana como se esperaba. Se agradecería cualquier ayuda para convertir esto para su uso en zsh.

Respuesta1

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

información relacionada