[comp.unix.questions] Multiscreen on Unix

lee@minnow.UUCP (06/02/87)

xxxxxx

    I would like to have multiple screens on Unix the way I do on
SCO Xenix and Microport Unix.  

1).    Has anyone written something do this?

2).    Does anyone have any ideas on how to approach doing this?


Thanks in advance


-- 
Gene Lee  UUCP: ...ihnp4!{meccts,dayton,rosevax}!ems!minnow!lee
UNISYS Corporation     ATT:  (612) 635-6334
If not for the courage of the fearless crew, the minnow would be lost.

gwyn@brl-smoke.UUCP (06/04/87)

In article <910@minnow.UUCP> lee@A60.UUCP (Gene Lee ) writes:
>    I would like to have multiple screens on Unix the way I do on
>SCO Xenix and Microport Unix.  

The best ways I know of to acquire this facility are to either purchase
a UNIX system with windows integrated into it (such as a Sun workstation)
or acquire an AT&T (nee Teletype) model 5620 (or follow-on whenever it is
finally announced; we've been expecting one for a while) Dot-Mapped Display
terminal and associated UNIX support software.  There are also some public-
domain implementations of windowing systems for "dumb" CRTs, although
they're not nearly as spiffy.  I imagine others will tell you about those.

dhesi@rb442.UUCP (Rahul Dhesi) (06/06/87)

Followup-To:


lee@A60.UUCP (Gene Lee ) writes:
>    I would like to have multiple screens on Unix the way I do on
                          ^^^^^^^^ ^^^^^^^
>SCO Xenix and Microport Unix.  

gwyn@brl.arpa (Doug Gwyn (VLD/VMB) <gwyn>) replies:
>The best ways I know of to acquire this facility are to either purchase
>a UNIX system with windows integrated into it (such as a Sun workstation)
                    ^^^^^^^
>or acquire an AT&T (nee Teletype) model 5620 (or follow-on whenever it is
>finally announced; we've been expecting one for a while) Dot-Mapped Display
>terminal and associated UNIX support software.  There are also some public-
>domain implementations of windowing systems for "dumb" CRTs, although
                           ^^^^^^^^^ ^^^^^^^
>they're not nearly as spiffy.  I imagine others will tell you about those.


Windows and multiple screens are not the same thing.

My UNIX PC has windows.  You can create them, then you can reshape them
and move them.

My Microport System V/AT has multiple screens.  You can's reshape them
amd move them.

The difference is like night and day.  On my UNIX PC, it's so much
of a bother to use multiple windows that I got rid of them altogether.
It's no fun pressing keys here and there, then finding the mouse,
then location a corner here and here, and then finally (a few minutes
later) getting a new window to work in.

On my Microport system, I can hit a key and be working on a fresh new screen
in about 50 milliseconds.  I don't waste time finding keys and mice, and
I don't waste screen space on fancy but useless borders.

Now, I don't know how Sun implements its windows, and I'm sure they are
implemented better than they are on the UNIX PC.  But it's good to be precise
in our terminlogy, and I just wanted to emphasize that:

     WINDOWS AND MULTIPLE SCREENS ARE NOT THE SAME THING.

guy@gorodish.UUCP (06/07/87)

> Windows and multiple screens are not the same thing.
> 
> My UNIX PC has windows.  You can create them, then you can reshape them
> and move them.
> 
> My Microport System V/AT has multiple screens.  You can's reshape them
> amd move them.

I presume "You can's reshape them and move them" really should have
read "You can't reshape them or move them".

> The difference is like night and day.  On my UNIX PC, it's so much
> of a bother to use multiple windows that I got rid of them altogether.
> It's no fun pressing keys here and there, then finding the mouse,
> then location a corner here and here, and then finally (a few minutes
> later) getting a new window to work in.
> 
> On my Microport system, I can hit a key and be working on a fresh new screen
> in about 50 milliseconds.  I don't waste time finding keys and mice, and
> I don't waste screen space on fancy but useless borders.

There is nothing about a window system that obliges you to have
"fancy but useless borders".  There is also nothing about a window
system that obliges you to use mice or multiple keystrokes (you will
*still* have to find the one key that gets you a new screen, even on
your Microport system, although it may be placed so that "finding" it
is trivial) to create a new window, or that requires the creation of
a window to take minutes.  (Yes, I know, SunView puts stuff on the
borders and can take a while to create windows, and may not make it
possible to pop up a new window and move to that window in one
keystroke.  I'm saying what's possible here.)

> But it's good to be precise in our terminlogy, and I just wanted to
> emphasize that:
> 
>      WINDOWS AND MULTIPLE SCREENS ARE NOT THE SAME THING.

Multiple screens are just windows that are obliged to cover the
entire screen; in other words, a multiple-screen system is just a
window system with a number of restrictions.  The only fundamental
difference between a multiple-screen system and a general window
system is that a multiple-screen system doesn't have to arrange to
multiplex the display, and can possibly use tricks to multiplex the
keyboard.

The person requested multiple screens "on UNIX".  The only way to do
this "on UNIX", rather than on a particular UNIX machine or set of
UNIX machines, is to assume that all you have available is a dumb
terminal.  Doing so requires you to do things like maintaining
virtual screens, separate from the physical screen; after doing this,
the extra work of supporting non full-screen windows isn't much.  All
that you'd get from not making that step is that you wouldn't have to
worry about having programs capable of dealing with variable-size
screens, and there are even ways of providing some of that by playing
games with things like the TERMCAP or TERMINFO environment variables.

In the particular case of a PC, there may be tricks you can play with
multiple screens that won't work with windows.  The programs running
in the "active" window can be given direct access to the screen, and
when switching screens you can just copy the entire screen image to a
holding buffer; you could just freeze programs running in inactive
windows, and thus not have to worry about multiplexing input or
output.
	Guy Harris
	{ihnp4, decvax, seismo, decwrl, ...}!sun!guy
	guy@sun.com

guy@gorodish.UUCP (06/07/87)

>     I would like to have multiple screens on Unix the way I do on
> SCO Xenix and Microport Unix.  

The only way to do multiple screens "on UNIX", rather than on a
particular UNIX machine or set of UNIX machines, is to assume that
all you have available is a dumb terminal.  There's a fair bit of
work involved in this.

> 1).    Has anyone written something do this?

Various people have done this; Mark Horton wrote a window system
whose source can be found in the System V, Release 3.0 source
distribution in the directory "/usr/src/lib/libcurses/demo/window".
(Various games, including what appears to be a version of the Space
Invaders game supplied with 4.1BSD, can also be found in the "demo"
directory.)  I think there may have been such a window system
supplied with the 4.3BSD alpha tape, or something like that; I don't
see it in any obvious place in the 4.3BSD distribution.

> 2).    Does anyone have any ideas on how to approach doing this?

If a program is writing to screen 1, while screen 2 is the
screen currently being displayed, some window manager must keep track
of the "virtual" screen 1.  This either means that:

	1) the window manager must be able to recognize all the
	   various control sequences that can be sent to any of the
	   terminals it supports - it could do a lot of this by
	   reading the "termcap" or "terminfo" description for that
	   terminal (idea courtesy of Dave Rosenthal's "psterm"
	   terminal emulator for NeWS), but this would require that
	   no program use any sequence other than the ones in the
	   description (which may very well be the case)

or

	2) the window manager will have to emulate a virtual
	   terminal of some sort, accepting sequences for that
	   virtual terminal as input and updating the physical
	   display using e.g. "curses".  (Mark Horton's window
	   system works this way.)

Both of these strategies are best done using some sort of pseudo-tty
mechanism, which is not supplied with vanilla System V, but appears
in 4.[23]BSD and a lot of other UNIX systems (including lots of
System V-compatible systems).  (There may be ways of doing this with
pipes, but there are some problems with that - see below.)

Also, the window manager would have to intercept input from the
terminal, in order to know when to switch windows/screens, unless you
added a new "switch windows" character to the tty driver and arranged
to have some event, such as a signal, delivered to the window manager
when this character was typed, without affecting any programs running
in the window.

If this trick were used, the window manager would somehow have to
"freeze" programs running in inactive windows/screens, to prevent
them from reading from the keyboard, or would have to use some
mechanism such as the "sxt" devices used by shell layers to multiplex
screens.  ("sxt" devices would also provide the "switch" character
for switching "shell layers", which could be used to switch between
windows/screens instead - alas, "sxt"s have NO mechanism for
multiplexing output, so you'd have to have something like pseudo-ttys
for this.)

If you have pseudo-terminals, you can use them for input multiplexing
and capturing the screen-switching commands as well.  If not, you
might be able to cobble something together with "sxt"s and pipes,
although some programs might get confused if their standard input
were an "sxt" and their standard output and error were pipes - some
would think they were at a terminal and behave correctly, some
wouldn't and wouldn't act correctly (e.g., not line-buffering their
output), and some might work half-correctly.

Note that pipes could not substitute for pseudo-ttys on the *input*
side, unless you're willing to sacrifice a lot of things; pipes don't
do erase/kill processing, and don't pass "ioctl"s through, so the
window manager would either always have to do the erase/kill
processing, never do it, or be told via a special window-manager
command whether to do it or not.  Would you rather not be able to
correct typing errors, not be able to run screen editors (or other
non-cooked-mode programs) inside a window, or be obliged to switch
modes when entering and leaving screen editors?  Some programs that
do "isatty(0)" to see if they're being run from a terminal (i.e.,
interactively) would get confused as well.

A way of getting around this would be some way of running full-screen
programs from the window manager, rather than from a shell in a
window.  The window manager would make the current screen no longer
be the active screen, without making any other screen the active
screen, and would also hand control of the keyboard over to the
program in question.  When that program exited, it would reclaim
control of the keyboard and would make the current screen the active
screen again.  Of course, this means that when you're running a
full-screen program, you don't have multiple screens or windows....
	Guy Harris
	{ihnp4, decvax, seismo, decwrl, ...}!sun!guy
	guy@sun.com

ram@nucsrl.UUCP (06/08/87)

Guy Harris wrote:

>directory.)  I think there may have been such a window system
>supplied with the 4.3BSD alpha tape, or something like that; I don't
>see it in any obvious place in the 4.3BSD distribution.

     Well, its as obvious as in /usr/src/ucb/window - all 258K of it.
     Its on our 4.3BSD alpha's disk :-).

>	Guy Harris
>	{ihnp4, decvax, seismo, decwrl, ...}!sun!guy
                                        ^^^^^^^^^^^^ 

 	where does machine "..." reside:-?	
        
>	guy@sun.com
>----------

-------------------
Renu Raman				UUCP:...ihnp4!alpha!ram
1410 Chicago Ave., #505			ARPA:ram@eecs.nwu.edu
Evanston  IL  60201			AT&T:(312)-869-4276               

naim@nucsrl.UUCP (Naim Abdullah) (06/08/87)

Guy Harris writes:
> [on the difficulty of implementing a window system that would run
>  on a *GENERIC* unix system]

I remember using a program called "wm" on a 4.1bsd system, that
allowed you to create multiple windows via the cursor keys and
run programs in each one. I don't remember if vi worked in any
of the windows, but I doubt it, since the program used pipes
and Guy already talked about the problems that would occur.

The program was written by somebody at the Naval Postgraduate
School and was supposedly portable to V7 systems. I haven't the
slightest idea where to get either the source or the binary.

	 Naim Abdullah
	 Dept. of EECS
	 Northwestern University
	 {ihnp4, chinet, gargoyle}!nucsrl!naim

jfh@killer.UUCP (John Haugh) (06/08/87)

Yes, it is sort of being done.  I spoke with John Bremsteller (who I wish
would start reading Usenet more) last week and he told me of his current
work putting multiple screens per terminal into his kernel.  You can
reach him at

	Pinnacle Systems, Inc.  Dallas TX. (214)-340-494[12].

He should be able to tell you more than you ever wanted to know.  PS -
this is NOT a IBM-PC clone running SCO-Xenix - so you _should_ be able
to use terminals with this feature.

- John	(not at pinnacle anymore) Haugh

Disclaimer:
	I don't work for them and I don't speak for them either.

rjk@mrstve.UUCP (06/10/87)

In article <20550@sun.uucp> guy%gorodish@Sun.COM (Guy Harris) writes:
>The person requested multiple screens "on UNIX".  The only way to do
>this "on UNIX", rather than on a particular UNIX machine or set of
>UNIX machines, is to assume that all you have available is a dumb
>terminal.  Doing so requires you to do things like maintaining
>virtual screens, separate from the physical screen; after doing this,
>the extra work of supporting non full-screen windows isn't much.  All
>that you'd get from not making that step is that you wouldn't have to
>worry about having programs capable of dealing with variable-size
>screens, and there are even ways of providing some of that by playing
>games with things like the TERMCAP or TERMINFO environment variables.
>	Guy Harris
>	{ihnp4, decvax, seismo, decwrl, ...}!sun!guy
>	guy@sun.com


Has anyone done anything like this with STREAMS-oriented tty drivers?
It seems to me that windows/multiple screens would be relatively
easy to implement by just PUSHing an appropriate module onto the
stream that controlled your physical terminal that kept track of
what was on your (physical) screen at all times, similar to curses.

It could also be handy to have a `virtual' screen of, say, 66 lines,
allowing one to scroll both up and down.

The more I think about it, the more I could do with a STREAM-based
tty driver.  Now all I need do is figure out how to get one...

-- 
				       !pur-ee!pur-phy!mrstve!rjk
Rich Kuhns	{ihnp4, decvax, etc...}
				       !itivax!mrstve!rjk

roy@phri.UUCP (06/10/87)

In article <3680021@nucsrl.UUCP> naim@nucsrl.UUCP (Naim Abdullah) writes:
> I remember using a program called "wm" on a 4.1bsd system, that allowed
> you to create multiple windows via the cursor keys and run programs in
> each one. I don't remember if vi worked in any of the windows, but I
> doubt it, since the program used pipes and Guy already talked about the
> problems that would occur.

	We've got wm running on our 4.3 Vax, and before that, under 4.2; it
doesn't get much use, partly because not many people know about it, partly
becuase you just don't have enough real estate on a 24 x 80 screen to make
windows practical, and partly because our Suns do a much better job.
There's no denying, however, that it's handy for those times when you're
stuck with with an ASCII crt.

	I just fired up a wm and sure enough, vi works fine.  Emacs won't
run but that's only because emacs uses terminfo and I havn't bothered to
convert the supplied wmvirt termcap entry to terminfo.  4.3 comes with
"window" which does pretty much the same thing as wm.

	If anybody wants the wm source, I can send you a copy (it was in
mod.sources in August, 1985).  The uncompressed distribution kit is 6 files
totaling just under 200 kbytes.  The version I have is advertised as being
"horribly 4.2 dependent", but apparantly early versions (with pipes instead
of ptys) ran under v6.
-- 
Roy Smith, {allegra,cmcl2,philabs}!phri!roy
System Administrator, Public Health Research Institute
455 First Avenue, New York, NY 10016

mberkley@watmath.UUCP (06/10/87)

In article <3680021@nucsrl.UUCP> naim@nucsrl.UUCP (Naim Abdullah) writes:
>I remember using a program called "wm" on a 4.1bsd system, that
>allowed you to create multiple windows via the cursor keys and
>run programs in each one. I don't remember if vi worked in any
>of the windows, but I doubt it, since the program used pipes
>and Guy already talked about the problems that would occur.

vi certainly does work inside of the "wm" that's on our systems here.
If all you've got is a dumb ascii terminal, then "wm" is the program
for you.  It's awfully nice to be able to start up a compile or
something and then switch to another window to read news while it's
running.  There are other ways of doing this (GNUemacs for one), but
"wm" is one of the nicest.

The version of "wm" that used pipes was the one for version 7.  The
Berkeley version has lots of nifty new features (most of which depend
on Berkeley'isms).  For example, each window has it's own TERMCAP
environment variable, created by "wm" according to the size of the
window.

Mike Berkley, University of Waterloo

************************************************************************
*UUCP:		{allegra,ihnp4,utcsri,utzoo}!watmath!watsup!mberkley   *
*Bitnet:		mberkley@watdcs.BITNET                         *
************************************************************************

greg@xios.XIOS.UUCP (Greg Franks) (06/10/87)

In article <20550@sun.uucp> guy@gorodish.UUCP writes:
>In the particular case of a PC, there may be tricks you can play with
>multiple screens that won't work with windows.  The programs running
>in the "active" window can be given direct access to the screen, and
>when switching screens you can just copy the entire screen image to a
>holding buffer; you could just freeze programs running in inactive
>windows, and thus not have to worry about multiplexing input or
>output.

PC's use memory mapped output for the console.  To write to the screen,
simply write to memory.  The screen controller attends to the rest of
the nonsense.  To switch screens, simply point the screen controller at
a new place in memory.  No multiplexing, synchronization, or copying is
needed.  I think that implmenting something like this on a
run-of-the-mill terminal may be a bit difficult (and a wee bit slow
too). 

Microport does not freeze output going to a "virtual console".  Thus,
you can run a "tar cv..." on one virtual console while doing something
else on another.  In fact, one could think of the console proper as
being four terminals in the package of one. 

And if you really wanted to get inspired, you could have multiple
windows in each of the virtual consoles - yeah - that's the ticket! :-)


-- 
Greg Franks     (613) 725-5411          "Vermont ain't flat"
{net-land}!utzoo!dciem!nrcaer!xios!greg
(Other paths will undoubtably work too - your mileage will vary)

guy@gorodish.UUCP (06/10/87)

> Has anyone done anything like this with STREAMS-oriented tty drivers?
> It seems to me that windows/multiple screens would be relatively
> easy to implement by just PUSHing an appropriate module onto the
> stream that controlled your physical terminal that kept track of
> what was on your (physical) screen at all times, similar to curses.

"Relatively easy"?  "Similar to curses"?  "curses" is a pretty big
library, and even something just handling this would be pretty big.
It would either have to implement a virtual terminal, and support
*lots* of different kinds of physical terminals, or would have to
keep track of the screen image by understanding how the physical
terminal works, and would still have to support lots of different
kinds of physical terminals.

STREAMS modules live in the kernel, and I don't want something that
big living in my kernel.  (There are enough big things living there
already.)  Furthermore, it would also have to maintain a copy of the
screen, which means even more big things in the kernel.

Sorry, but putting this into a STREAMS module would be the wrong
thing to do.  Pseudo-ttys make much more sense, since most of the
support can be moved into user mode.  Under the right circumstances,
a STREAMS-based tty driver could make it easier to do pseudo-ttys; a
pseudo-tty might be something similar to a streams pipe, with any
other modules pushed atop the "slave" side.
	Guy Harris
	{ihnp4, decvax, seismo, decwrl, ...}!sun!guy
	guy@sun.com

rjk@mrstve.UUCP (06/19/87)

In article <20837@sun.uucp> guy%gorodish@Sun.COM (Guy Harris) writes:
(earlier, I wrote)
>> Has anyone done anything like this with STREAMS-oriented tty drivers?
>> It seems to me that windows/multiple screens would be relatively
>> easy to implement by just PUSHing an appropriate module onto the
>> stream that controlled your physical terminal that kept track of
>> what was on your (physical) screen at all times, similar to curses.
>
>"Relatively easy"?  "Similar to curses"?  "curses" is a pretty big
>library, and even something just handling this would be pretty big.
>It would either have to implement a virtual terminal, and support
>*lots* of different kinds of physical terminals, or would have to
>keep track of the screen image by understanding how the physical
>terminal works, and would still have to support lots of different
>kinds of physical terminals.
[...]
>	Guy Harris
>	{ihnp4, decvax, seismo, decwrl, ...}!sun!guy
>	guy@sun.com

I didn't mean to emulate the entire curses library -- I just want to
keep track of what is on 1 or more virtual screens (via an array/structure
indicating size/location/etc).  On receipt of (say) a certain escape
sequence, the appropriate module of the terminal driver would redraw
the physical screen so it looked like the requested virtual screen.

The terminal driver shouldn't have to care about the *type* of the
terminal at all -- it just passes whatever terminal control sequences
it receives right on thru (thru to the structure (a queue, maybe), anyhow,
which would later, when requested, just dump to the terminal).

...so I don't always explain myself very well...  ...I knew what I meant...
-- 
				       !pur-ee!pur-phy!mrstve!rjk
Rich Kuhns	{ihnp4, decvax, etc...}
				       !itivax!mrstve!rjk

chris@mimsy.UUCP (06/19/87)

>In article <3680021@nucsrl.UUCP> naim@nucsrl.UUCP (Naim Abdullah) writes:
>>I remember using a program called "wm" on a 4.1bsd system....
>>I don't remember if vi worked in any of the windows, but I doubt it....

In article <13537@watmath.UUCP> mberkley@watmath.UUCP writes:
>vi certainly does work inside of the "wm" that's on our systems here.

But you are not running 4.1BSD.  Your `wm' uses pseudo terminals,
which of course look like terminals to vi.  (4.1BSD actually had
pty code, but it did not quite work.  I recall installing a fix
from, I think, CMU.)

Once again, vi misbehaves rather horridly when it is writing to
a pipe (in 4.1BSD and 4.3BSD, at least).  Try `vi | tee /dev/null',
and see if it says `Missing lhs' for you too.
-- 
In-Real-Life: Chris Torek, Univ of MD Comp Sci Dept (+1 301 454 7690)
Domain:	chris@mimsy.umd.edu	Path:	seismo!mimsy!chris

guy%gorodish@Sun.COM (Guy Harris) (06/20/87)

> I didn't mean to emulate the entire curses library

Please reread what I said.  I never said you had to emulate the
entire curses library, just that you'd have to do enough of the same
thing that you're talking about putting LOTS of stuff into the
kernel.

> -- I just want to keep track of what is on 1 or more virtual screens (via
> an array/structure indicating size/location/etc).  On receipt of (say) a
> certain escape sequence, the appropriate module of the terminal driver
> would redraw the physical screen so it looked like the requested virtual
> screen.

OK, so how is it going to "keep track" of what's on the screen?  It
can't just blindly remember everything sent to the screen, unless it
remembers everything you sent since you first started talking to that
terminal, or until you last sent the terminal something that *this
module* recognized as somehow resetting the state of the terminal.
Frankly, the notion of redrawing the screen by retransmitting
everything sent to it since the screen was last cleared doesn't
appeal to me somehow; the fact that it's generally transmitted at no
better than 19.2KB, and could thus take a LONG time to redraw, may
have something to do with it.  (We won't even discuss the memory
required to hold this information.)

> The terminal driver shouldn't have to care about the *type* of the
> terminal at all -- it just passes whatever terminal control sequences
> it receives right on thru (thru to the structure (a queue, maybe), anyhow,
> which would later, when requested, just dump to the terminal).

See above.  Without large amounts of memory on the machine, and large
amounts of patience on the part of the user, this isn't going to work
very well at all.

You can do this sort of thing on PCs because their displays tend to
be memory-mapped, and the kernel could just stash the entire screen
image away somewhere and restore another one from its stored copy;
this takes a bounded amount of memory.  Doing this on arbitrary
terminals just won't fly.
	Guy Harris
	{ihnp4, decvax, seismo, decwrl, ...}!sun!guy
	guy@sun.com

allbery@ncoast.UUCP (06/21/87)

As quoted from <699@mrstve.UUCP> by rjk@mrstve.UUCP (Richard Kuhns):
+---------------
| I didn't mean to emulate the entire curses library -- I just want to
| keep track of what is on 1 or more virtual screens (via an array/structure
| indicating size/location/etc).  On receipt of (say) a certain escape
| sequence, the appropriate module of the terminal driver would redraw
| the physical screen so it looked like the requested virtual screen.
| 
| The terminal driver shouldn't have to care about the *type* of the
| terminal at all -- it just passes whatever terminal control sequences
| it receives right on thru (thru to the structure (a queue, maybe), anyhow,
| which would later, when requested, just dump to the terminal).
+---------------

Ah, but it does!  How is the protocol module to know that ESC [ is a lead-in
for an escape sequence on ANSI terminals and "position cursor to row" (may
be column?) on Wyse 50's?  It'll get the current cursor position wrong if
it treats ESC [1;1H as "home" when the Wyse 50 moves to line 18 and prints
";1H".
-- 
Copyright (C) 1987 Brandon S. Allbery.  Redistribution permitted only if the
    redistributor permits further redistribution.  (Stargate take heed!)
     ---- Moderator for comp.sources.misc and comp.binaries.ibm.pc ----
Brandon S. Allbery	{decvax,cbosgd}!cwruecmp!ncoast!allbery
aXcess Company		{ames,mit-eddie,talcott}!necntc!ncoast!allbery
6615 Center St. #A1-105	necntc!ncoast!allbery@harvard.HARVARD.EDU
Mentor, OH 44060-4101	+01 216 974 9210	(also eddie.MIT.EDU)

wagner@iaoobelix.UUCP (06/22/87)

Some time ago (I don't remember the date exactly) Oliver Laumann (TU Berlin,
West Germany) posted a program called `screen'. I think, it does exactly what
we have been talking about so long: You don't get multiple windows but
multiple screens you can switch between. `screen' uses `libtermcap.a'.

The email address of Oliver Laumann is seismo!unido!tub!net (which seems to be
a collective account).

Juergen Wagner,		     (USENET) ...seismo!unido!iaoobel!wagner
("Gandalf")			 Fraunhofer Institute IAO, Stuttgart

chris@mimsy.UUCP (Chris Torek) (06/23/87)

>As quoted from <699@mrstve.UUCP> by rjk@mrstve.UUCP (Richard Kuhns):
>+---------------
>| I didn't mean to emulate the entire curses library -- I just want to
>| keep track of what is on 1 or more virtual screens....
>+---------------

In article <2690@ncoast.UUCP> allbery@ncoast.UUCP (Brandon Allbery) writes:
>Ah, but it does!  How is the protocol module to know that ESC [ is a lead-in
>for an escape sequence on ANSI terminals and "position cursor to row" (may
>be column?) on Wyse 50's?

I am not sure I should be feeding this discussion, but I would point
out that this is not necessary.  Any screen management system, whether
user or kernel based, can provide a virtual terminal with a private
termcap to each separate screen or window.  The protocol module could
interpret ANSI sequences, while the ultimate screen refersh is done
with Wyse sequences.  (The Maryland Window System, which was all user
code, worked this way.)
-- 
In-Real-Life: Chris Torek, Univ of MD Comp Sci Dept (+1 301 454 7690)
Domain:	chris@mimsy.umd.edu	Path:	seismo!mimsy!chris

net@tub.UUCP (06/23/87)

> Some time ago (I don't remember the date exactly) Oliver Laumann (TU Berlin,
> West Germany) posted a program called `screen'. I think, it does exactly what
> we have been talking about so long: You don't get multiple windows but
> multiple screens you can switch between. `screen' uses `libtermcap.a'.

I have published "screen" in net.sources about three months ago.
I'm going to publish a new (better, faster, etc.) release in the now
moderated comp.sources.unix as soon as

   1)  I get the impression that this newsgroup is really alive again
       (we have received only very few articles since comp.sources.unix
       has been reactivated); and

   2)  I have figured out how to send mail to "sources@uunet.uu.net"
       from Germany.

> The email address of Oliver Laumann is seismo!unido!tub!net (which seems to be
> a collective account).

Please avoid sending mail to me over seismo, this costs us about $1 per
KByte; use the addresses listed in my signature instead.
"net" is not a collective account; my account has always been "net" for
certain, well, historical reasons...

--
    Oliver Laumann, Technical University of Berlin, Germany.
    ...!pyramid!tub!net   or   net@TUB.BITNET

joey@tessi.UUCP (Joe Pruett) (06/25/87)

Many people have been saying how hard it would be to make a program
present multiple sessions on one terminal line and be able to
repaint the screen when switching back and forth... Well, such
a program exists.  The version I've seen is called screen and it
works with termcap.  It presents a VT100 like command set and then
maps that to whatever your terminal really needs (including doing
intelligent insert/delete stuff).  You type ^A^C to create a new
screen and ^A<space> to cycle through the screens.  Other ^A pairs
do other things.  It works with vi and rogue and other such programs.
I'll try to find the sources and author and see about posting it
to comp.sources.{appropriate}.

	Joe Pruett
	Test Systems Strategies
	...!tektronix!tessi!joey