mirror of https://github.com/tLDP/LDP
602 lines
28 KiB
Plaintext
602 lines
28 KiB
Plaintext
<!doctype linuxdoc system>
|
|
<article>
|
|
<title>The MGR Window System HOWTO
|
|
<author>Vincent Broman
|
|
</author>
|
|
<date>v0.1, 1996-05-30
|
|
<abstract>
|
|
Information on the installation, configuration and running of the MGR Window
|
|
System.
|
|
<p>
|
|
<bf>Archived Document Notice:</bf> This document has been archived by the LDP
|
|
because it does not apply to modern Linux systems. It is no longer
|
|
being actively maintained.
|
|
</p>
|
|
</abstract>
|
|
|
|
<toc>
|
|
|
|
<sect>This HOWTO
|
|
<p><verb>
|
|
Copyright Vincent Broman 1995.
|
|
Permission granted to make and distribute copies of this HOWTO
|
|
under the conditions of the GNU General Public License.</verb>
|
|
<sect1>Archiving
|
|
<p>
|
|
This HOWTO is archived in
|
|
<tt>ftp://archimedes.nosc.mil/pub/Mgr/MGR-HOWTO.sgml</tt>,
|
|
and also distributed from
|
|
<tt>ftp://sunsite.unc.edu/pub/Linux/docs/HOWTO/MGR-HOWTO</tt>.
|
|
In nearby directories the same document may appear in
|
|
alternate formats like <tt>MGR-HOWTO.txt</tt>.
|
|
<sect1>Authentication
|
|
<p>
|
|
Copies of the MGR distribution due to Broman should be accompanied
|
|
by PGP signature files, signed by "Vincent Broman <broman@nosc.mil>".
|
|
<sect1>Credit for the HOWTO
|
|
<p>
|
|
While Vincent Broman first put together this HOWTO,
|
|
much of the information and text was obtained from FAQs,
|
|
READMEs, etc. written by Stephen Uhler, Michael Haardt,
|
|
and other public-spirited net-persons.
|
|
Email corrections and suggested changes to <tt>broman@nosc.mil</tt>.
|
|
|
|
Uhler was the main architect of <bf>MGR</bf> -- see the Credit section below.
|
|
|
|
<sect>What is the MGR window system?
|
|
<p>
|
|
<sect1>Function
|
|
<p>
|
|
<bf>MGR</bf> (ManaGeR) is a graphical window system.
|
|
The <bf>MGR</bf> server
|
|
provides a builtin window manager and windowed graphics terminal
|
|
emulation on color and monochrome bitmap displays. <bf>MGR</bf> is
|
|
controlled by mousing pop-up menus, by keyboard interaction, and by
|
|
escape sequences written on pseudo-terminals by client software.
|
|
<p>
|
|
<bf>MGR</bf> provides each client window with: termcap-style 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.
|
|
<bf>MGR</bf> 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 <bf>MGR</bf> imitate keystrokes in response
|
|
to user defined menu selections or other events.
|
|
|
|
<sect1>Requirements
|
|
<p>
|
|
<bf>MGR</bf> currently runs on Linux, FreeBSD,
|
|
Sun 3/4 workstations with SunOS, and
|
|
Coherent. Various older versions of <bf>MGR</bf> run on the Macintosh,
|
|
Atari ST MiNT, Xenix, 386-Minix, DEC 3100, and the 3b1 Unix-pc.
|
|
Many small, industrial, real-time systems under OS9 or Lynx in Europe
|
|
use (another variant of) Mgr for their user interface.
|
|
The programming interface is implemented in C and in ELisp,
|
|
although supporting clients written in other languages is quite
|
|
easy.
|
|
|
|
Running <bf>MGR</bf> requires much less in resources than X, or even gcc.
|
|
It does not have the user-base, software repertory, or high-level
|
|
libraries of X or MS-Windows, say, but it is quite elegant
|
|
and approachable.
|
|
|
|
It has been said that <bf>MGR</bf> is to X as Unix was to Multics.
|
|
|
|
<sect1>How do MGR, X11, and 8.5 compare?
|
|
<p>
|
|
<bf>MGR</bf> consists of a server with builtin window manager and terminal
|
|
emulator, and clients which run in this terminal emulator and use it
|
|
to communicate with the server. No resource multiplexing is done.
|
|
|
|
X11 consists of a server and clients, which usually connect to the
|
|
server using a socket. All user visible things like terminal
|
|
emulators, window managers etc are done using clients. No resource
|
|
multiplexing is done.
|
|
|
|
8.5, the Plan 9 window system, is a resource multiplexer, as each
|
|
process running in a window can access <tt>/dev/bitblt</tt>,
|
|
<tt>/dev/mouse</tt> and
|
|
<tt>/dev/kbd</tt> in its own namespace. These are multiplexed to the
|
|
<tt>/dev/bitblit</tt>, <tt>/dev/mouse</tt> and <tt>/dev/kbd</tt>
|
|
in the namespace of 8.5.
|
|
This approach allows one to run 8.5 in an 8.5 window,
|
|
a very clean design. 8.5 further has an integrated window manager
|
|
and terminal emulator.
|
|
|
|
<sect>Installing MGR
|
|
<p>
|
|
The latest source distribution can be FTPed from the directory
|
|
<tt>ftp://archimedes.nosc.mil/pub/Mgr/69</tt>
|
|
or Mosaiced from <tt>http://archimedes.nosc.mil/Mgr/69</tt>.
|
|
The same should be found at
|
|
<tt>ftp://sunsite.unc.edu/pub/Linux/apps/MGR</tt> and its mirrors.
|
|
Older versions of this distribution
|
|
from Haardt can be found on <tt>tsx-11.mit.edu</tt> and perhaps elsewhere.
|
|
Pre-Linux versions of <bf>MGR</bf> from Uhler and others have been found at
|
|
<tt>ftp://bellcore.com/pub/mgr</tt>, but I think they are gone now.
|
|
I have saved a copy of everything about <bf>MGR</bf> seen on the Internet,
|
|
but I am not aware of anything weighty
|
|
that is missing from this Linux/Sun distribution.
|
|
<bf>MGR</bf> has been through a lot of versions and releases,
|
|
but the current *Linux* version number is 0.69. This version number
|
|
could jump to 1.0 when stable 256-color VGA code for Linux appears
|
|
(for more than one video card type).
|
|
RCS version numbers have increased from Bellcore's 4.3 up to our 4.13 now.
|
|
|
|
Required tools to build this distribution of <bf>MGR</bf> are m4 (GNU, or
|
|
perhaps another supporting the -D option), make (GNU, or perhaps
|
|
another supporting include) and *roff for the docs. Also sh,
|
|
awk, and POSIX install. Binary distributions are not assembled often
|
|
so you need an ANSI C compiler environment, e.g. gcc.
|
|
|
|
A Linux installation requires Linux 0.99.10 or better
|
|
(1.2.13 is what I actually test on now),
|
|
an HGC, EGA, VGA, or SVGA graphics card, and a mouse. Mouses supported
|
|
are: serial Microsoft mouse, serial MouseSystems 3 and 5 byte
|
|
mouse, serial MMSeries mouse, serial Logitech mouse, PS/2 mouse,
|
|
or a bus mouse.
|
|
With Buckey (Meta) hot keys enabled, even a mouseless system could
|
|
do a certain amount of useful work under <bf>MGR</bf>.
|
|
The VGA 640x480 monochrome graphics mode is
|
|
supported out of the box, as is 640x350 and 640x200. To run
|
|
800x600, or other modes that your BIOS can initialize and which
|
|
do not require bank-switching, you need to run a small program
|
|
(supplied as <tt>src/vgamisc/regs.exe</tt>)
|
|
under DOS or an emulator to read the VGA registers
|
|
and write a header file which you place in the
|
|
directory <tt>src/libbitblit/linux</tt>,
|
|
so that it can be <tt>#include</tt>'d
|
|
by the <tt>vga.c</tt> file there.
|
|
Samples of these files are supplied, but please create your own.
|
|
Some VGA cards can use 128k
|
|
windows, and these might run higher monochrome resolutions.
|
|
|
|
The Linux-colorport code also runs in the standard
|
|
320x200x256 color VGA mode without difficulty, because no bank switching
|
|
is required. If you think of how few 64000 pixels is, you would
|
|
realize this color mode is quite limited.
|
|
Non-fast, but simple, bank-switching code has
|
|
been added in version 0.65, and it works with a Tseng ET4000 card
|
|
in 640x480x256 and 800x600x256 modes. The S3 code does not
|
|
work in super VGA resolutions, yet. Supporting new super VGA cards
|
|
requires writing one function to switch banks and then making sure that
|
|
the desired screen mode can be initialized from a register dump,
|
|
possibly with hand-tweaking. The Linux color servers generally
|
|
mangle the screen fonts, necessitating use of restorefont as in runx.
|
|
If someone were to extract the VGA initialization code out of X,
|
|
this might make MGR work on a lot more color systems.
|
|
|
|
Suns with SunOS 4.1.2+ and <tt>bwtwo</tt>, <tt>cgthree</tt>, or
|
|
<tt>cgsix</tt> frame buffers are supported.
|
|
Their speed handling color is good.
|
|
Coherent installations should refer to the
|
|
<tt>Versions/README.Coh</tt> file in the source distribution.
|
|
Porting the
|
|
latest-and-greatest <bf>MGR</bf> to another POSIX-like system which
|
|
provides <tt>select()</tt> and pty's and direct access to a bitmapped
|
|
frame-buffer ought to be straightforward, just implementing the
|
|
<tt>libbitblit</tt> library based on the <tt>sunmono</tt> or
|
|
<tt>colorport</tt> code, say.
|
|
|
|
If you want to install everything, you need 7 MB disk space for
|
|
binaries, fonts, manual pages etc. The sources are about 4.5 MB,
|
|
plus object files during compilation.
|
|
|
|
Normally, <tt>/usr/mgr</tt> should be either the directory or a link to the
|
|
directory where you install <bf>MGR</bf> stuff for runtime use. Typing
|
|
<tscreen><verb>
|
|
cd /usr/mgr; tar xvfz whereveryouputit/mgrusr-0.69.tgz
|
|
</verb></tscreen>
|
|
and optionally
|
|
<tscreen><verb>
|
|
cd /usr/mgr; tar xvfz wherever/morefonts-0.69.tgz
|
|
</verb></tscreen>
|
|
will unpack these. The source can be put anywhere, e.g. typing
|
|
<tscreen><verb>
|
|
cd /usr/src/local/mgr; tar xvfz wherever/mgrsrc-0.69.tgz
|
|
</verb></tscreen>
|
|
to unpack the sources from <tt>archimedes.nosc.mil</tt>.
|
|
|
|
The source tree can be compiled from one top-level Makefile which
|
|
invokes lower-level Makefiles, all of which &dquot;include&dquot;
|
|
a <tt>&dquot;Configfile&dquot;</tt>
|
|
at the top level. The <tt>Configfile</tt> is created by an interactive sh
|
|
script named <tt>Configure</tt>, which asks you questions,
|
|
then runs m4 on a <tt>Configfile.m4</tt>.
|
|
So you type something like this:
|
|
|
|
<tscreen><verb>
|
|
chdir /usr/src/local/mgr
|
|
sh ./Configure
|
|
make first
|
|
make depend
|
|
make install
|
|
make clean
|
|
</verb></tscreen>
|
|
|
|
It might be wise, before running make, to eyeball the <tt>Configfile</tt>
|
|
generated by the <tt>Configure</tt> script, checking that it looks reasonable.
|
|
(At least one m4 poops out (Sun <tt>/usr/bin/m4</tt>),
|
|
creating a very short <tt>Configfile</tt>.
|
|
If this happens, try hand editing a copy of <tt>Configfile.sun</tt> or
|
|
<tt>Configfile.lx</tt>)
|
|
One can also <tt>make all</tt> in any directory with a Makefile
|
|
as soon as the libraries have been compiled and installed.
|
|
The server, libraries, and some clients have been linted, but several
|
|
clients are K&R C code that generates many compiler warnings.
|
|
<p>
|
|
Several flags in MGRFLAGS can be added/omitted in the Configfile
|
|
to change some
|
|
optional features in the server, viz:
|
|
<descrip>
|
|
<tag/-DWHO/ muck utmp file so &dquot;who&dquot; works
|
|
<tag/-DVI/ code for clicking the mouse in vi moving the cursor
|
|
<tag/-DDEBUG/ enable debugging output selectable with -d options.
|
|
<tag/-DFASTMOUSE/ XOR the mouse track
|
|
<tag/-DBUCKEY/ for hot-key server commands without mousing
|
|
<tag/-DPRIORITY/ for priority window scheduling instead of
|
|
round-robin; the active window gets higher priority
|
|
<tag/-DCUT/ for cut/paste between windows and a global snarf buffer
|
|
<tag/-DMGR_ALIGN/ forces window alignment for fast scrolling (monochrome)
|
|
<tag/-DKILL/ kills windows upon tty i/o errors
|
|
<tag/-DSHRINK/ use only some of the screen ($MGRSIZE in environment)
|
|
<tag/-DNOSTACK/ don't permit event stacking
|
|
<tag/-DBELL/ audibly ring the bell
|
|
<tag/-DKBD/ read <tt>mgr</tt> input from the sun kbd, instead of stdin.
|
|
This permits redirection of console msgs to a window.
|
|
<tag/-DFRACCHAR/ fractional character movement for proportional fonts
|
|
<tag/-DXMENU/ extended menu stuff (experimental)
|
|
<tag/-DMOVIE/ movie making extension which logs all operations to a
|
|
file for later replay -- not quite working under Linux
|
|
<tag/-DEMUMIDMSBUT/ Emulate a missing middle mouse button by chording
|
|
</descrip>
|
|
Not all combinations of these options have been tested on all systems.
|
|
|
|
The BITBLITFLAGS macro should contain <tt>-DBANKED</tt> if you're trying
|
|
out the super VGA color.
|
|
<p>
|
|
C code for the static variables in the server containing icons and fonts
|
|
is generated by a translator from icon and font files.
|
|
|
|
Not all the clients are compiled and installed by the Makefiles.
|
|
Clients found under <tt>src/clients</tt> having capitalized names or
|
|
not compiled by the supplied Makefiles may have problems compiling
|
|
and/or running, but they may be interesting to hack on.
|
|
Most of the screen drivers found under the <tt>libbitblit</tt> directory are
|
|
of mainly archeological interest. Grave robbing can be profitable.
|
|
<p>
|
|
At some point check that your <tt>/etc/termcap</tt> and/or
|
|
<tt>terminfo</tt> file
|
|
contain entries for <bf>MGR</bf> terminals such as found in the <tt>misc</tt>
|
|
directory. If all your software checks $TERMCAP in the environment,
|
|
this is not needed, as long as you run <tt>eval `set_termcap`</tt>
|
|
in each window.
|
|
<p>
|
|
<bf>MGR</bf> works better if run setuid root, because it wants to chown
|
|
ptys and write in the utmp file. This helps the ify iconifier
|
|
client work better and the event passing mechanism be more secure.
|
|
On Linux, root permissions are <em>required</em> in order to do in/out on the
|
|
screen device. Otherwise, you decide whether to trust it.
|
|
<p>
|
|
In versions around 0.62 there are troubles on the Sun with using
|
|
the csh as the default shell. Programs seem to run in a different
|
|
process group than the foreground process group of the window's pty,
|
|
in contradiction to man pages and posix specs.
|
|
There is no trouble with bash, sh, or rc. Ideas why?
|
|
|
|
<sect>Running MGR
|
|
<p>
|
|
The only file <em>required</em> in an <bf>MGR</bf> installation is the server
|
|
itself. That would give you terminal emulator windows with shells
|
|
running in them and cutting and pasting with the mouse,
|
|
but no nice clocks, extra fonts, fancy graphics,
|
|
etc. Depending on options, a monochrome server needs about 200K of RAM
|
|
plus dynamic space for windows, bitmaps, etc.
|
|
<p>
|
|
If <tt>/usr/mgr/bin</tt> is in your PATH,
|
|
then just type &dquot;<tt>mgr</tt>&dquot; to start up.
|
|
After enjoying the animated startup screen, press any key.
|
|
When the hatched background and mouse pointer appear, hold down
|
|
the left mouse button, highlight the &dquot;new window&dquot; menu item, and
|
|
release the button. Then drag the mouse from corner to corner
|
|
where you want a window to appear. The window will have your
|
|
default shell running in it. Hold down the left mouse button over
|
|
an existing window to see another menu for doing things to that
|
|
window. Left-clicking on an obscured window raises it to the top.
|
|
The menu you saw that pops-up over the empty background
|
|
includes the quit command.
|
|
For people with a two button mouse:
|
|
press both buttons together to emulate the missing middle button
|
|
used by some clients.
|
|
<p>
|
|
The quit submenu includes the &dquot;really quit&dquot; option,
|
|
a suspend option which should only be used if you run a
|
|
job-control shell, and a screen saver and locker option, which
|
|
waits for you to type your login password when you come back
|
|
to your machine.
|
|
<p>
|
|
When trying to run <bf>MGR</bf>, if you get:
|
|
<descrip>
|
|
<tag/can't find the screen/
|
|
make sure you have a <tt>/dev</tt> entry for your display device,
|
|
e.g. on
|
|
a Sun <tt>/dev/bwtwo0</tt>. If not, as root cd to <tt>/dev</tt>, and type
|
|
&dquot;MAKEDEV bwtwo0&dquot;. Otherwise, you might need the
|
|
<tt>-S/dev/bwtwo0</tt>
|
|
or (on Linux) the <tt>-S640x480</tt> command line option when starting <tt>mgr</tt>.
|
|
On Linux, you might also make sure that <tt>/usr/mgr/bin/mgr</tt> was
|
|
installed setuid root.
|
|
|
|
<tag/can't find the mouse/
|
|
make sure <tt>/dev/mouse</tt> exists, usually as a symbolic link to the
|
|
real device name for your mouse. If you haven't permission to
|
|
write in <tt>/dev</tt>, then something like a <tt>-m/dev/cua0</tt>
|
|
option can be
|
|
given when starting <tt>mgr</tt>. Also, make sure you've supplied the
|
|
right mouse protocol choice when you configured <tt>mgr</tt>. The mouse
|
|
may speak Microsoft, even if that is not the brand name.
|
|
|
|
<tag/can't get a pty/
|
|
make sure all of <tt>/dev/[tp]ty[pq]?</tt>
|
|
are owned by root, mode 666,
|
|
and all programs referenced with the &dquot;shell&dquot; option in
|
|
your <tt>.mgrc</tt> startup file (if any) exist and are executable.
|
|
|
|
<tag/none but the default font/
|
|
make sure <bf>MGR</bf> is looking in the right
|
|
place for its fonts. Check the <tt>Configfile</tt> in the source or
|
|
see whether a <tt>-f/usr/mgr/font</tt> option to <tt>mgr</tt> fixes the problem.
|
|
|
|
<tag/completely hung (not even the mouse track moves)/
|
|
login to your machine from another terminal (or rlogin) and kill the
|
|
<tt>mgr</tt> process.
|
|
A buckey-Q key can quit <bf>MGR</bf> if the keyboard still works.
|
|
</descrip>
|
|
|
|
<sect1>Applications not aware of MGR
|
|
<p>
|
|
Any tty-oriented application can be run in an <bf>MGR</bf> window
|
|
without further ado. Screen-oriented applications using
|
|
termcap or curses can get the correct number of lines and
|
|
columns in the window by your using <tt>shape(1)</tt>
|
|
to reshape the window or using
|
|
<tt>set_termcap(1)</tt> to obtain the correct termcap entry.
|
|
|
|
<sect1>MGR Applications (clients) distributed with the server
|
|
<p>
|
|
<descrip>
|
|
<tag/bdftomgr/ converts some BDF fonts to MGR fonts
|
|
<tag/browse/ an icon browser
|
|
<tag/bury/ bury this window
|
|
<tag/c_menu/ vi menus from C compiler errors
|
|
<tag/clock/ digital display of time of day
|
|
<tag/clock2/ analog display of time of day
|
|
<tag/close/ close this window, iconify
|
|
<tag/color/ set the foreground and background color for text in this window
|
|
<tag/colormap/ read or write in the color lookup table
|
|
<tag/cursor/ change appearance of the character cursor
|
|
<tag/cut/ cut text from this window into the cut buffer
|
|
<tag/cycle/ display a sequence of icons
|
|
<tag/dmgr/ crude ditroff previewer
|
|
<tag/fade/ fade a home movie script from one scene to another
|
|
<tag/font/ change to a new font in this window
|
|
<tag/gropbm/ a groff to PBM driver using Hershey fonts
|
|
<tag/hpmgr/ hp 2621 terminal emulator
|
|
<tag/ico/ animate an icosahedron or other polyhedron
|
|
<tag/iconmail/ notification of mail arrival
|
|
<tag/iconmsgs/ message arrival notification
|
|
<tag/ify/ iconify and deiconify windows
|
|
<tag/loadfont/ load a font from the file system
|
|
<tag/maze/ a maze game
|
|
<tag/mclock/ micky mouse clock
|
|
<tag/menu/ create or select a pop-up menu
|
|
<tag/mgr/ bellcore window system server and window manager
|
|
<tag/mgrbd/ boulder-dash game
|
|
<tag/mgrbiff/ watch mailbox for mail and notify
|
|
<tag/mgrload/ graph of system load average
|
|
<tag/mgrlock/ lock the console
|
|
<tag/mgrlogin/ graphical login controller
|
|
<tag/mgrmag/ magnify a part of the screen, optionally dump to file
|
|
<tag/mgrmail/ notification of mail arrival
|
|
<tag/mgrmode/ set or clear window modes
|
|
<tag/mgrmsgs/ message arrival notification
|
|
<tag/mgrplot/ Unix &dquot;plot&dquot; graphics filter
|
|
<tag/mgrsclock/ sandclock
|
|
<tag/mgrshowfont/ browse through mgr fonts
|
|
<tag/mgrsketch/ a sketching/drawing program
|
|
<tag/mgrview/ view mgr bitmap images
|
|
<tag/mless/ start up less/more in separate window, menu added for less
|
|
<tag/mnew/ startup up any program in a separate, independent window
|
|
<tag/mphoon/ display the current phase of the moon
|
|
<tag/mvi/ start up vi in a separate window, with mouse pointing
|
|
<tag/oclose/ (old) close a window
|
|
<tag/omgrmail/ (old) notification of mail arrival
|
|
<tag/pbmrawtomgr, pgmrawtomgr, ppmrawtomgr/ convert raw PBM/PGM/PPM image files to mgr bitmap format
|
|
<tag/pbmstream/ split out a stream of bitmaps
|
|
<tag/pbmtoprt/ printer output from PBM
|
|
<tag/pgs/ ghostscript patch and front end, a PS viewer
|
|
<tag/pilot/ a bitmap browser, or image viewer
|
|
<tag/resetwin/ cleanup window state after client crashes messily
|
|
<tag/rotate/ rotate a bitmap 90 degrees.
|
|
<tag/screendump/ write graphics screen dump to a bitmap file
|
|
<tag/set_console/ redirect console messages to this window
|
|
<tag/set_termcap/ output an appropriate TERM and TERMCAP setting
|
|
<tag/setname/ name a window, for messages and iconifying
|
|
<tag/shape/ reshape this window
|
|
<tag/square/ square this window
|
|
<tag/squeeze/ compress mgr bitmap using run-length encoding
|
|
<tag/startup/ produce a skeleton startup file for current window layout
|
|
<tag/texmgr/ TeX dvi file previewer
|
|
<tag/text2font, font2text/ convert between mgr font format and text dump
|
|
<tag/unsqueeze/ uncompress mgr bitmap using run length encoding
|
|
<tag/vgafont2mgr, mgrfont2vga/ convert between mgr font format and VGA
|
|
<tag/window_print/ print an image of a window
|
|
<tag/zoom/ an icon editor
|
|
<tag/bounce, grav, grid, hilbert, mgreyes, stringart, walk/ graphics demos
|
|
</descrip>
|
|
|
|
<sect1>MGR-aware clients distributed separately, see &dquot;SUPPORT&dquot; file
|
|
<p>
|
|
<descrip>
|
|
<tag/calctool/ on-screen calculator
|
|
<tag/chess/ frontend to <tt>/usr/games/chess</tt>
|
|
<tag/gnu emacs/ editor with <tt>lisp/term/mgr.el</tt> mouse & menu support
|
|
<tag/gnuplot/ universal scientific data plotting
|
|
<tag/metafont/ font design and creation
|
|
<tag/origami/ folding editor
|
|
<tag/pbmplus/ portable bitmap format conversions, manipulations
|
|
<tag/plplot/ slick scientific data plotting
|
|
</descrip>
|
|
<p>
|
|
The Emacs support in <tt>misc/mgr.el</tt> and <tt>misc/mailcap</tt>
|
|
includes very usable MIME support, via Rmail and metamail.
|
|
<p>
|
|
A general image viewer could be cobbled together from <tt>pilot</tt>
|
|
and the netPBM filters, but I have not taken the time to do it.
|
|
|
|
<sect>Programming for MGR
|
|
<p>
|
|
The <bf>MGR</bf> programmers manual, the C language applications interface,
|
|
is found in the doc directory in troff/nroff form. It covers
|
|
general concepts, the function/macro calls controlling the server,
|
|
a sample application, with an index and glossary.
|
|
|
|
Porting client code used with older versions of <bf>MGR</bf> sometimes
|
|
requires the substitution of
|
|
<tscreen><verb>
|
|
#include <mgr/mgr.h>
|
|
</verb></tscreen>
|
|
for
|
|
<tscreen><verb>
|
|
#include <term.h>
|
|
#include <dump.h>
|
|
</verb></tscreen>
|
|
and clients using old-style B_XOR, B_CLEAR, et al instead of
|
|
BIT_XOR, BIT_CLR, et al can be accommodated by writing
|
|
<tscreen><verb>
|
|
#define OLDMGRBITOPS
|
|
#include <mgr/mgr.h>
|
|
</verb></tscreen>
|
|
|
|
Compiling client code generally requires compiler options like
|
|
the following.
|
|
<tscreen><verb>
|
|
-I/usr/mgr/include -L/usr/mgr/lib -lmgr
|
|
</verb></tscreen>
|
|
|
|
One can get some interactive feel for the <bf>MGR</bf> server functions by
|
|
reading and experimenting with the <tt>mgr.el</tt> terminal driver for GNU
|
|
Emacs which implements the <bf>MGR</bf> interface library in ELisp.
|
|
|
|
The usual method of inquiring state from the server has the
|
|
potential of stumbling on a race condition if the client also
|
|
expects a large volume of event notifications. The problem arises
|
|
if an (asynchronous) event notification arrives when a
|
|
(synchronous) inquiry response was expected. If this arises in
|
|
practice (unusual) then the <bf>MGR</bf> state inquiry functions would have
|
|
to be integrated with your event handling loop.
|
|
|
|
The only major drawing function missing from the <bf>MGR</bf> protocol, it
|
|
seems, is an area fill for areas other than upright rectangles.
|
|
There is new code for manipulating the global colormap, as well as
|
|
(advisory) allocation and freeing of color indices owned by windows.
|
|
|
|
If you are thinking of hacking on the server, you can find the mouse
|
|
driver in <tt>mouse.*</tt> and <tt>mouse_get.*</tt>,
|
|
the grotty parts of the keyboard
|
|
interface in <tt>kbd.c</tt>, and the interface to the display in the
|
|
<tt>src/libbitblit/*</tt> directories. The main procedure, much
|
|
initialization, and the top level input loop are in <tt>mgr.c</tt>, and the
|
|
interpretation of escape sequences is in <tt>put_window.c</tt>.
|
|
|
|
<sect>More documentation
|
|
<p>
|
|
The programmer's manual is essential for concepts.
|
|
|
|
Nearly all the clients supplied come with a man page which is installed
|
|
into <tt>/usr/mgr/man/man1</tt> or <tt>man6</tt>.
|
|
Other useful man pages are <tt>bitblit.3</tt>, <tt>font.5</tt>, and
|
|
<tt>bitmap.5</tt>.
|
|
There is some ambiguity in the docs in distinguishing the
|
|
internal bitmap format found in your frame-buffer and the external
|
|
bitmap format found in files, e.g. icons.
|
|
|
|
The <tt>mgr.1</tt> man page covers command line options, commands in
|
|
the <tt>~/.mgrc</tt> startup file, mouse and menu interaction with the server,
|
|
and hot-key shortcuts available on systems with such hot-keys.
|
|
|
|
Many of the fonts in <tt>/usr/mgr/font/*</tt> are described to some
|
|
extent in <tt>/usr/mgr/font/*.txt</tt>, e.g. <tt>/usr/mgr/font/FONTDIR.txt</tt>
|
|
gives X-style font descriptions for the fonts obtained
|
|
in .bdf format. Font names end in <tt>WxH</tt>, where <tt/W/ and <tt/H/
|
|
are the
|
|
decimal width and height in pixels of each character box.
|
|
|
|
<sect>Credit for MGR
|
|
<p>
|
|
Stephen Uhler, with others working at Bellcore, was the original
|
|
designer and implementer of <bf>MGR</bf>, so Bellcore has copyrighted much
|
|
of the code and documentation for <bf>MGR</bf> under the following conditions.
|
|
|
|
<verb>
|
|
* Permission is granted to copy or use this program, EXCEPT that it
|
|
* may not be sold for profit, the copyright notice must be reproduced
|
|
* on copies, and credit should be given to Bellcore where it is due.
|
|
</verb>
|
|
|
|
One required showing of the copyright notice is the startup title screen.
|
|
|
|
Other credits to:
|
|
<itemize>
|
|
<item> Stephen Hawley for his wonderful icons.
|
|
<item> Tommy Frandsen for the VGA linux library.
|
|
<item> Tom Heller for his Gasblit library.
|
|
<item> Andrew Haylett for the Mouse driver code.
|
|
<item> Dan McCrackin for his gasblit->linux patches.
|
|
<item> Dave Gymer, dgymer@gdcarc.co.uk, for the Startrek effect fix.
|
|
<item> Alex Liu for first releasing a working Linux version of <bf>MGR</bf>.
|
|
<item> Lars Aronsson (aronsson@lysator.liu.se) for text2font and
|
|
an ISO8859-1 8-bit font.
|
|
<item> Harry Pulley (hcpiv@grumpy.cis.uoguelph.ca,
|
|
hcpiv@snowhite.cis.uoguelph.ca) for the Coherent port.
|
|
<item> Vance Petree & Grant Edwards & Udo Munk for their work on Hercules.
|
|
<item> Udo Munk for his work on serial mouse initialization & select.
|
|
<item> Norman Bartek & Hal Snyder at Mark Williams Co. for their help
|
|
with some bugs & with Coherent device drivers.
|
|
<item> Extra thanks to Zeyd Ben Halim for lots of helpful patches,
|
|
especially the adaptation of selection.
|
|
<item> Bradley Bosch, brad@lachman.com, for lots of patches from his 3b1
|
|
port, which fix bugs and implement new and desirable features.
|
|
<item> Andrew Morton, applix@runxtsa.runx.oz.au, who first wrote the
|
|
cut-word code.
|
|
<item> Kapil Paranjape, kapil@motive.math.tifr.res.in, for the EGA
|
|
support.
|
|
<item> Michael Haardt for MOVIE support fixes, bug fixes, separation of the
|
|
libbitblit code into output drivers, expansion of the libmgr, and
|
|
origami folding of the code.
|
|
<item> Yossi Gil for many fonts.
|
|
<item> Carsten Emde, carsten@thlmak.pr.net.ch, for mphoon.
|
|
<item> Vincent Broman for middle mouse-button emulation, linting, Sun cgsix
|
|
support, VGA colormap acess, integration of the sunport code
|
|
into Haardt's layering scheme, font gathering, the screen saver,
|
|
and continued maintenance.
|
|
<item> Kenneth Almquist, ka@socrates.hr.att.com, for helpful bug reports.
|
|
<item> Tim Pierce, twpierce@midway.uchicago.edu, for the port to FreeBSD
|
|
2.0R with Trident VGA.
|
|
</itemize>
|
|
|
|
All bitmap fonts from any source are strictly public domain in the
|
|
USA. The 583 fixed-width fonts supplied with <bf>MGR</bf> were obtained
|
|
from Uhler, the X distribution, Yossi Gil, and elsewhere.
|
|
The Hershey vector fonts and the code for rendering them
|
|
are probably freely redistributable.
|
|
|
|
</article>
|