1*4887Schin# add to (+), delete from (-), set [=], or print (.) window title 2*4887Schin# arguments are eval'd before printing 3*4887Schin# title text string exported in TITLE_TEXT 4*4887Schin 5*4887Schinfunction title # [ + | - | = | . ] title ... 6*4887Schin{ 7*4887Schin typeset x t="$TITLE_TEXT" 8*4887Schin 9*4887Schin case $1 in 10*4887Schin +) shift 11*4887Schin case $# in 12*4887Schin 0) ;; 13*4887Schin *) for x 14*4887Schin do case " $t " in 15*4887Schin *" $x "*) ;; 16*4887Schin " ") t=$x ;; 17*4887Schin *) t="$t $x" ;; 18*4887Schin esac 19*4887Schin done 20*4887Schin case $t in 21*4887Schin $TITLE_TEXT) return 1 ;; 22*4887Schin esac 23*4887Schin ;; 24*4887Schin esac 25*4887Schin ;; 26*4887Schin -) shift 27*4887Schin case $# in 28*4887Schin 0) ;; 29*4887Schin *) for x 30*4887Schin do case " $t " in 31*4887Schin *" $x "*) t="${t%?( )$x*}${t##*$x?( )}" ;; 32*4887Schin esac 33*4887Schin done 34*4887Schin case $t in 35*4887Schin $TITLE_TEXT) return 1 ;; 36*4887Schin esac 37*4887Schin ;; 38*4887Schin esac 39*4887Schin ;; 40*4887Schin .) print -r -- "$TITLE_TEXT" 41*4887Schin return 0 42*4887Schin ;; 43*4887Schin =) shift 44*4887Schin t="$*" 45*4887Schin ;; 46*4887Schin *) t="$*" 47*4887Schin ;; 48*4887Schin esac 49*4887Schin export TITLE_TEXT="$t" 50*4887Schin eval x=\"$t\" 51*4887Schin case $TERM in 52*4887Schin 630*) print -nr -- $'\E[?'"${#x}"$';0v'"${x}" ;; 53*4887Schin uwin*|*vt100|xterm*) print -nr -- $'\E]0;'"${x}"$'\a' ;; 54*4887Schin *) return 1 ;; 55*4887Schin esac 56*4887Schin return 0 57*4887Schin} 58