# add to (+), delete from (-), set [=], or print (.) window title # arguments are eval'd before printing # title text string exported in TITLE_TEXT function title # [ + | - | = | . ] title ... { typeset x t="$TITLE_TEXT" case $1 in +) shift case $# in 0) ;; *) for x do case " $t " in *" $x "*) ;; " ") t=$x ;; *) t="$t $x" ;; esac done case $t in $TITLE_TEXT) return 1 ;; esac ;; esac ;; -) shift case $# in 0) ;; *) for x do case " $t " in *" $x "*) t="${t%?( )$x*}${t##*$x?( )}" ;; esac done case $t in $TITLE_TEXT) return 1 ;; esac ;; esac ;; .) print -r -- "$TITLE_TEXT" return 0 ;; =) shift t="$*" ;; *) t="$*" ;; esac export TITLE_TEXT="$t" eval x=\"$t\" case $TERM in 630*) print -nr -- $'\E[?'"${#x}"$';0v'"${x}" ;; uwin*|*vt100|xterm*) print -nr -- $'\E]0;'"${x}"$'\a' ;; *) return 1 ;; esac return 0 }