resize.sh revision d522f475
1#!/bin/sh 2# $XFree86: xc/programs/xterm/vttests/resize.sh,v 1.5 2003/05/19 00:52:30 dickey Exp $ 3# 4# -- Thomas Dickey (1999/3/27) 5# Obtain the current screen size, then resize the terminal to the nominal 6# screen width/height, and restore the size. 7 8ESC="" 9CMD='echo' 10OPT='-n' 11SUF='' 12TMP=/tmp/xterm$$ 13eval '$CMD $OPT >$TMP || echo fail >$TMP' 2>/dev/null 14( test ! -f $TMP || test -s $TMP ) && 15for verb in printf print ; do 16 rm -f $TMP 17 eval '$verb "\c" >$TMP || echo fail >$TMP' 2>/dev/null 18 if test -f $TMP ; then 19 if test ! -s $TMP ; then 20 CMD="$verb" 21 OPT= 22 SUF='\c' 23 break 24 fi 25 fi 26done 27rm -f $TMP 28 29exec </dev/tty 30old=`stty -g` 31stty raw -echo min 0 time 5 32 33$CMD $OPT "${ESC}[18t${SUF}" > /dev/tty 34IFS=';' read junk high wide 35 36$CMD $OPT "${ESC}[19t${SUF}" > /dev/tty 37IFS=';' read junk maxhigh maxwide 38 39stty $old 40 41wide=`echo $wide|sed -e 's/t.*//'` 42maxwide=`echo $maxwide|sed -e 's/t.*//'` 43original=${ESC}[8\;${high}\;${wide}t${SUF} 44 45test $maxwide = 0 && maxwide=`expr $wide \* 2` 46test $maxhigh = 0 && maxhigh=`expr $high \* 2` 47 48if ( trap "echo exit" EXIT 2>/dev/null ) >/dev/null 49then 50 trap '$CMD $OPT "$original" >/dev/tty; exit' EXIT HUP INT TRAP TERM 51else 52 trap '$CMD $OPT "$original" >/dev/tty; exit' 0 1 2 5 15 53fi 54 55w=$wide 56h=$high 57a=1 58while true 59do 60# sleep 1 61 echo resizing to $h by $w 62 $CMD $OPT "${ESC}[8;${h};${w}t" >/dev/tty 63 if test $a = 1 ; then 64 if test $w = $maxwide ; then 65 h=`expr $h + $a` 66 if test $h = $maxhigh ; then 67 a=-1 68 fi 69 else 70 w=`expr $w + $a` 71 fi 72 else 73 if test $w = $wide ; then 74 h=`expr $h + $a` 75 if test $h = $high ; then 76 a=1 77 fi 78 else 79 w=`expr $w + $a` 80 fi 81 fi 82done 83