The MGR Window System

Note well that this is mostly of historic interest. I haven't done any work on MGR for many years. MGR itself has gone into oblivion for most uses, largely being replaced by the much more feature filled X Window System. I have kept this around because people seem to link to it.

Introduction

MGR (short for ManaGeR) is a network transparent window system originally developed for the Sun 3 series of workstations by Stephen Uhler and colleagues while at Bellcore (now Telcordia) and later enhanced by many others.

The window system ran on many different hardware platforms, at least these: Sun 3/xx workstations (SunOS), Sun SPARCstations (SunOS and Solaris), Intel x86 based PCs (Coherent, Minix, FreeBSD or Linux), Atari ST (under MiNT) and AT&T UnixPC (SysV).

I first got acquainted with MGR while using Sun 3/50 and 3/60 workstations at the Lysator Academic Computing Society.

Most people at Lysator prefered MGR instead of using Sun's own SunView (nee SunTools) and, later, many still preferred MGR instead of running X Window System (X11). X11, even on the high-end 3/80 workstations we later had, was not a pleasant experience, probably mostly because of memory starvation. It wasn't until we had SPARC CPUs that most users started abandoning MGR.

The old MGR HOWTO had this to say about MGR:

MGR (ManaGeR) is a graphical window system. The MGR server provides a builtin window manager and windowed graphics terminal emulation on color and monochrome bitmap displays. MGR is controlled by mousing pop-up menus, by keyboard interaction, and by escape sequences written on pseudo-terminals by client software.

MGR provides each client window with: curses-like terminal control functions, graphics primitives such as line and circle drawing; facilities for manipulating bitmaps, fonts, icons, and pop-up menus; commands to reshape and position windows; and a message passing facility enabling client programs to rendezvous and exchange messages. Client programs may ask to be informed when a change in the window system occurs, such as a reshaped window, a pushed mouse button, or a message sent from another client program. These changes are called events. MGR notifies a client program of an event by sending it an ASCII character string in a format specified by the client program. Existing applications can be integrated into the windowing environment without modification by having MGR imitate keystrokes in response to user defined menu selections or other events.

If you want to compare MGR to the X Window System, you might consider the MGR server as something like a combination of an X server + window manager + xterm, but with xterm's Tektronix 4014 graphics terminal emulation and its DEC VT100 emulation in the same window.

A window in MGR doesn't emulate any existing hardware terminal. It has a new set of terminal codes combining text, vector graphics and basic bitmap graphics. See the termcap entry in the distribution.

Compared to X11, MGR has a very small memory footprint and demands very little of the graphics hardware. MGR isn't very fast on graphics and doesn't provide any form of access to direct access to framebuffers or hardware acceleration as modern X servers do. It is, however, comfortably fast for every day use if you mainly use text windows and occassionally view an image.

MGR was usually run on the same workstation where most of the programs ran but an MGR window is completely network transparent. Indeed, there is not even a need for a network: If you run, say, kermit and use a dial-up modem in an MGR window you can run graphical programs on the other end just as easy.

Included in the MGR distribution there are also no less than two multiplexer programs (rmgr and mtx), which makes it possible to run several remote programs in their own windows over the same connection. rmgr works surprisingly well over a modem connection, although it's certainly less painful if you have at least 9600 b/s.

These are the remaining MGR files I could find in my directories. Perhaps it might be interesting for some of you.

I once ported the MGR server and many MGR clients to Solaris and started on a port to SPARC/Linux, but I couldn't find the sources when I last looked. The only trace of my porting efforts is the working binary for Solaris/SPARC included below.

The source tarballs below might not compile out of the box on modern systems. You might need to tinker with it in some ways. Most likely, you will have to be sure that the binaries in src/tools are successfully built first, otherwise the server won't build.

If you would like to hack MGR, one nice thing to do would to use the stub libbitblit and write calls to the Linux fb device or use something similar (SDL, perhaps?). This way, MGR could live again and this time on modern graphics hardware. If you pick this up, please notify me. I would love to see this happen.

Screenshot

This screenshot was taken on a Sun workstation, a SPARCstation ELC. MGR never looked as good for me on PC hardware running FreeBSD or Linux. On a PC, I have only managed to run MGR on a VGA card in 640x480 and in inverse sense of black and white. It was not a nice experience. I never did much with the PC port of MGR and rarely used it. It was great on the Suns, though.

image

Click on the image above for the real screenshot.

Download

MC


Last updated: <2012-03-24 12:02:15 MET>