xref: /onnv-gate/usr/src/lib/libshell/common/fun/title (revision 4887:feebf9260c2e)
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