ref: 92b2606926a90158e8c9c6ecb0c73c93e5ac424b
dir: /riow/
#!/bin/rc
rfork ne
alt=0
ctl=0
glenda=0
shift=0
fn scrsize {
s=`{syscall -o read 0 buf 60 </dev/screen >[2]/dev/null}
screenw=$s(4)
screenh=$s(5)
}
fn fullscreen {
scrsize
for(f in /dev/wsys/*){
a=`{syscall -o read 0 buf 64 <$f/wctl >[2]/dev/null}
if(~ $a(5) current){
winid=`{basename $f}
if(~ $a(1) 0 && ~ $a(2) 0 && ~ $a(3) $screenw && ~ $a(4) $screenh)
echo resize -r `{eval echo '$winsize_'^$winid} >$f/wctl
if not {
eval 'winsize_'^$winid'=$a(1 2 3 4)'
echo resize -r 0 0 9999 9999 >$f/wctl
}
}
}
}
fn handle {
# remember old states
oalt=$alt
octl=$ctl
oglenda=$glenda
oshift=$shift
m=$1
state=0
if(~ $1 k)
state=1
shift
key=''
if(~ $state K && ~ $#* 0){
alt=0
ctl=0
glenda=0
shift=0
}
if not {
while(! ~ $#* 0){
if(~ $1 alt || ~ $1 ctl || ~ $1 glenda || ~ $1 shift){
eval '$1=$state'
}
if not {
# only react to 'c'
if(~ $m c)
key=$1
}
shift
}
}
if(~ $key enter)
window
if(~ $key f)
fullscreen
}
while(s=`{read}){
handle $s
}