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