[comp.unix.questions] "screen" vs. "wm"

mkhaw@teknowledge-vaxc.ARPA (Mike Khaw) (08/26/87)

I'd appreciate any comments from anyone who has used both the "screen"
program recently posted to comp.sources.whatever and the "wm" program
of an earlier vintage, comparing/contrasting the two.

Thanks,
Mike Khaw
-- 
internet:  mkhaw@teknowledge-vaxc.arpa
usenet:	   {hplabs|sun|ucbvax|decwrl|sri-unix}!mkhaw%teknowledge-vaxc.arpa
USnail:	   Teknowledge Inc, 1850 Embarcadero Rd, POB 10119, Palo Alto, CA 94303

net@tub.UUCP (08/28/87)

> I'd appreciate any comments from anyone who has used both the "screen"
> program recently posted to comp.sources.whatever and the "wm" program
> of an earlier vintage, comparing/contrasting the two.

I use neither "screen" nor "wm", but as the author of "screen" I think I'm
in a position to comment on this.

Both window managers manage a set of virtual UNIX terminals that have a set
of processes connected to it (usually -- but not necessarily -- interactive
login shells) and map this set to a single real (or virtual) terminal.
While window managers like "wm" split the screen into multiple windows
(vertically), "screen" manages a set of independent equally-sized "logical
screens".

In contrast to "wm", where all windows are visible at each point of time,
"screen" always displays exactly one logical screen.  You can switch to a
different screen by means of a sequence of control characters; for
instance, Ctl-A Ctl-A activates the screen that has been displayed
previously.

Processes connected to a logical screen that is currently not displayed do
not get blocked or stopped.  You can arrange that each time a bell is
output to a background screen, a notification is displayed in the status
line of the currently displayed screen; this can be used to indicate that a
"make" or something has terminated in a currently not visible screen and to
draw one's attention to a background screen when someone directed a talk(1)
or write(1) to that screen.

I personally don't think that it makes much sense to divide an ordinary
24x80 screen into even smaller areas.  If you *do* need this functionality
together with the function offered by "screen", you can run a "wm"-like
window manager (or an Emacs) under "screen" (you can even have a separate
window manager in each logical screen, if you like).

Another big problem with "wm"-like window managers is that they require a
terminal with scrolling regions or insert/delete line, otherwise the only
way for a window to scroll it's contents up is to redraw the entire window.
Even with the aid of scrolling regions or insert/delete line, displaying a
long text (e.g. "cat /etc/termcap") is unacceptably slow (at least with the
window managers I have seen so far).

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

randy@umn-cs.UUCP (08/31/87)

In article <50000002@tub.UUCP> net@tub.UUCP writes:
>> I'd appreciate any comments from anyone who has used both the "screen"
>> program recently posted to comp.sources.whatever and the "wm" program
>> of an earlier vintage, comparing/contrasting the two.
>
>I use neither "screen" nor "wm", but as the author of "screen" I think I'm
>in a position to comment on this.
>
>Both window managers manage a set of virtual UNIX terminals that have a set
>of processes connected to it (usually -- but not necessarily -- interactive
>login shells) and map this set to a single real (or virtual) terminal.
>While window managers like "wm" split the screen into multiple windows
>(vertically), "screen" manages a set of independent equally-sized "logical
>screens".
>

(goes on to characterize "wm")

This is WRONG.  I have been using wm for quite a while now.  It does give
you the ability to split your screen up into windows, vertically and
horizontally, but all are not necessarily displayed at the same time.
Windows can overlap, in whole or in part.  In fact, the way that I usually
used wm was with 3 or 4 full-screen sized windows, in which case it functioned
exactly like screen.   However, wm would also allow me to have two windows on
the screen at the same time, for example an error list and an editor.
Your terminal doesn't need to be able to define scrolling regions, insert-
and delete-line is plenty.

WM is a very nice package, more flexible than screen.  Neither one is useful
at low baud rates, though since it takes too long to re-draw the screen.

Another added feature of wm is that a command will send a string to whatever
is running in a window, of the form "setenv TERM xxx<nl>setenv TERMCAP 'xxx'"
so that if you're telneted to another machine, you can let it know what your
terminal looks like.

	-randy
-- 
Randy Orrison, University of Minnesota School of Mathematics
UUCP:	{ihnp4, seismo!rutgers!umnd-cs, sun}!umn-cs!randy
ARPA:	randy@ux.acss.umn.edu		 (Yes, these are three
BITNET:	randy@umnacvx			 different machines)

kai@uicsrd.csrd.uiuc.edu (09/01/87)

Screen blows wm away for features and ease of use.  I have tried a number of
virtual window programs including "window", "wm", "wms", and "screen", and
screen is the only one that remains on our systems.

Screen is 4.2 BSD dependant (it uses UNIX sockets), and compiled the first
time on both our Sequent Balance 8000 (as I expected) and our Alliant FX/8 (a
rarity).

It only handles full screen windows, but in doing so, eliminates the awful
speed problems some others have. This also avoid the weird situation that both
"window" and "wm" caused when resizing a window near the right edge of my
VT220 compatible terminal. Just before the right edge of the window moved off
the terminal screen, the terminal was "reset". It was as if I pressed
control-reset on my keyboard, or turned the terminal off and back on.

Screen is also the only package (so far) that re-draws the window correctly.
All of the others end up leaving something on the screen that you don't want,
requiring you to request your pgm to redraw the screen.

Screen is also the only package that handles window logins correctly (as far
as I know).  Screen creates an entry in /etc/utmp for each window. This solved
the problem all the other packages had with any program that wanted your login
id (like talk, shutdown, su).  Talk under wm generates a message at the
receivers terminal something like "respond by typing 'talk @myhost'" (a null
login id). Even if the person DID know who wanted to talk, the talk daemon
didn't, and would ask you to "respond by typing 'talk yourid@yourhost'",
which of course is how you started.

Of course the disadvantage to this is that each window counts against your
user limit if you have a limited UNIX license, making it possible for a single
user to create 11 login sessions (one original session, and ten "screens"). On
a system with a 16-user license, this has to be kept in mind.

Along this line, just today I sent the diffs to the author that allows screen
to check the current user count against the maximum limit that our UNIX
license allows, to make sure the limit isn't exceeded. While you might think
it handy to be able to exceed this limit, our Sequent panicked with "illegal
number of users" when we had 18 screen windows between two users (a 16 user
license). The fix simply makes sure you don't exceed your limit so the system
stays up.

Screen also doesn't handle VT100 line graphics or double high/wide characters,
but this is not a problems for us. The other window managers are probably more
terminal independant, screen emulates a vt100 terminal with some ANSI
extentions. I haven't the slightest idea about how any of the window managers
perform on non-VT compatible terminals.

To create a new "window" in screen, you type "^ac". In wm, you must type all
kinds of characters to size the new window.  Of course wm will remember your
window sizes between invocations, but screen gets by that by only having one
size.  Actually I would love to have a "split" screen once in a while (for
reading the C compiler error messages while editing the source), but I don't
mind typing ^A^A to swap back and forth between two windows.

What I have done is program most of the function keys of my Televideo TVS9220
to perform the most often used screen functions (create a window, display the
list of windows, move back and forth between two windows, move forward or
backward along the list of windows, create a window to rlogin to our other
host, create a window that runs the monitor pgm, etc). This means only one
keystroke to perform most screen functions (instead of two).

Screen also allows you to create a new window from the command like. I have
created an SU script that checks if I am running screen (by checking for the
STY environment variable), does an "exec screen /bin/su" if I am, and an "exec
/bin/su" if not. All kinds of possibilities exist.

Anyone who has never tried an virtual window manager should. They really do
make using UNIX much easier.  Being a system administrator for three systems,
I am always being interrupted with "can you take a look at ...". Screen lets
me pause, create a new screen, handle the simple user problem (hopefully), and
return to EXACTLY where I was before. Same command history, same display on
the window, same half of a command typed in as when I left.

The software is VERY stable. Not a coredump or bug (other than the userlimit
problem mentioned above) found in approximately eight months constant use.


To summarize, I highly recommend the SCREEN program, especially if you have
ever used any of the other packages and have been annoyed by their
deficiencies.


#include <local/standard_disclaimer.h>

Patrick Wolfe                   Internet:  pat@kai.com
System Manager                  UUCP:      {seismo,ihnp4,uiucuxc}!kai.com!pat
Kuck & Associates, Inc.         Arpanet:   pat%kailand@uxc.cso.uiuc.edu
1808 Woodfield Dr.              Bitnet:    pat%kailand@uiucuxc
Savoy, IL  USA  61874           CSnet:     pat%kailand%uxc@uiuc.csnet
Phone:     217-356-2288         Milnet:    pat%kailand@uiucuxc.arpa
Easylink:  6201 1628            Telex:     910 240 9772 (KUCK ASSOC)

blair@ncrwic.UUCP (09/01/87)

In article <50000002@tub.UUCP> net@tub.UUCP writes:
>I use neither "screen" nor "wm", but as the author of "screen" I think I'm
>in a position to comment on this.
> [ ... much glowing praise of "screen" ... ]

If it's so spectacular, why don't you use it?  :-)
-- 
___________________________________________________________________________
Brian R. Lair  NCR Corporation, E&M Wichita, Product Technology Development
               <brian.lair@Wichita.NCR.COM>
               <{ece-csc,hubcap,gould,rtech}!ncrcae!ncrwic!brian.lair>

jte@psuvax1.psu.edu (Jon Eckhardt) (09/02/87)

What abouut BSD window?  It is a lot better then wm, although I use
screen because I feel that a normal terminal windowing package should
be invisable, (You don't know your in it unless you want to know about it)
and it is quite fast.  If you are in BSD window or wm and you type clear
you can actuly see it write over the other chars on the screen and then 
home.  Screen on the other hand clears the screen in a snap.  The only
thing I don't like about screen is that it should emulate a vt220 or something
more advanced then a vt100.

--Jon

gwyn@brl-smoke.ARPA (Doug Gwyn ) (09/04/87)

In article <45000012@uicsrd> kai@uicsrd.csrd.uiuc.edu writes:
>Screen is also the only package that handles window logins correctly (as far
>as I know).  Screen creates an entry in /etc/utmp for each window. This solved
>the problem all the other packages had with any program that wanted your login
>id (like talk, shutdown, su).

The problem is not with other utmp-manipulating software such as
"wm" or "layers", but with software such as "talk" that does not
follow the procedure spelled out in the programmer's manual for
determining the user name.  Some applications simply can't permit
"talk" etc. to certain windows (e.g. those running special
communication protocols to terminal-resident processes), and they
therefore make sure the coresponding utmp entry is voided.  This
is perfectly reasonable and should not cause problems if software
follows the rules.

This was discussed in comp.unix.wizards something like a year ago.

len@array.UUCP (Leonard Vanek) (09/04/87)

In article <16048@teknowledge-vaxc.ARPA> mkhaw@teknowledge-vaxc.ARPA (Mike Khaw) writes:
>I'd appreciate any comments from anyone who has used both the "screen"
>program recently posted to comp.sources.whatever and the "wm" program
>of an earlier vintage, comparing/contrasting the two.
>
>Thanks,
>Mike Khaw

screen works beautifully! So far the only places it has failed are with
a program that test the TERM shell variable before sending the appropriate
string to convert a vt100 to 132 column mode and back and with file
transmission using kermit in remote host mode.

I tried to install wm a while back, but I did not succeed. I forget exactly
what the reason was, but I seem to remember something about having to
change some things in curses and not having the source to do so because
I do not have a source license. By contrast, screen compiled without a hitch.

I recommend screen.

Len Vanek

len@array.UUCP (Leonard Vanek) (09/04/87)

In article <535@array.UUCP> len@array.UUCP (Leonard Vanek) writes:
>In article <16048@teknowledge-vaxc.ARPA> mkhaw@teknowledge-vaxc.ARPA (Mike Khaw) writes:
>>I'd appreciate any comments from anyone who has used both the "screen"
>>program recently posted to comp.sources.whatever and the "wm" program
>>of an earlier vintage, comparing/contrasting the two.
>>
>
>I recommend screen.

I forgot to mention that I am using screen on a Sun 3 system. The
documentation to wm mentions that there are versions of it that use
pipes and run under AT&T systems. Screen only works on BSD systems.

Len


Len Vanek
>

stpeters@dawn.steinmetz (09/08/87)

> While window managers like "wm" split the screen into multiple windows
> (vertically), "screen" manages a set of independent equally-sized "logical
> screens".
>
> In contrast to "wm", where all windows are visible at each point of time,
> "screen" always displays exactly one logical screen.

'wm' *can* split your screen into multiple windows, but don't misread
this capability as a requirement.  In fact, displaying a single full-
screen window, just as 'screen' does, is both the usual and the
default mode of 'wm' usage.

It takes just two keystrokes to switch to any other window, and
contrary to one claim, it takes exactly four strokes to make a new
(full-screen) window.

> Screen is also the only package that handles window logins correctly (as far
> as I know).

Whether 'screen' or 'wm' handle logins "correctly" depends on whether
you want such a program fiddling with /etc/utmp.  Personally, I would
choose not, so I consider 'wm' and not 'screen' to handle this
correctly.

This does cause 'getlogin()' to return an empty string, which is the
cause the of problem with 'talk'.  'wm' comes with an alternative to
'getlogin()' that does work within wm, which you can use to make a
working 'talk' if you have source.

> "window" and "wm" caused when resizing a window near the right edge of my
> VT220 compatible terminal. Just before the right edge of the window moved off
> the terminal screen, the terminal was "reset".

This is hardly an argument in favor of 'screen', which can't resize
its windows at all!  Anyway, it sounds like a termcap problem to me.
In nearly two years of daily use of 'wm' with a VT220, I never
encountered this reset problem.

> Anyone who has never tried an virtual window manager should.

Absolutely!  I've used 'wm' on ULTRIX VAXen, Sun's (1's, 2's, and
3's), and an Alliant, and I highly recommend it.

Dick St.Peters                        
GE Corporate R&D, Schenectady, NY
stpeters@ge-crd.arpa              
uunet!steinmetz!stpeters