Konvertieren eines Bash-Skripts zur Verwendung in zsh

Konvertieren eines Bash-Skripts zur Verwendung in zsh

Das folgende Bash-Skript wurde in diesem gepostetFadenals Mittel zum Festlegen eines ST-Titels (Terminalfenster) in DWM (X Window Manager). Das Hinzufügen dieses Segments zu .bashrc führt zwar zum gewünschten Ergebnis, ich möchte dies jedoch in zsh verwenden können.

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

Ich habe bereits versucht, es als Bash-Skript in meiner .zshrc aufzurufen, dies ändert den Fenstertitel jedoch nicht wie erwartet. Für jede Hilfe bei der Konvertierung für die Verwendung in zsh wäre ich dankbar.

Antwort1

Könnte so etwas sein wie:

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

verwandte Informationen