ugh.book

(singke) #1
The Magic of Curses 113

As a result, Unix never developed a rational plan or model for programs to
interact with a VDT. Half-implemented hack (such as termcap) after half
implemented hack (such as curses) have been invented to give programs
some form of terminal independence, but the root problem has never been
solved. Few Unix applications can make any use of “smart” terminal fea-
tures other than cursor positioning, line insert, line delete, scroll regions,
and inverse video. If your terminal has provisions for line drawing, protect-
ing fields, double-height characters, or programmable function keys, that’s
just too darn bad: this is Unix. The logical culmination of this catch-as-
catch-can attitude is the X Window System, a monstrous kludge that solves
these problems by replacing them with a much larger and costlier set of
problems.


Interestingly enough, the X Window System came from MIT, while the far
more elegant NeWS, written by James Gosling, came out of Sun. How odd.
It just goes to show you that the Unix world has its vision and it gets what it
wants.


Today, Unix’s handling of character-based VDTs is so poor that making
jokes about it can’t do justice to the horror. The advent of X and bit-
mapped screens won't make this problem go away. There remain scads of
VDTs hooked to Unixes in offices, executives’ pockets, and at the other
end of modem connection. If the Unix aficionados are right, and there
really are many users for each Unix box (versus one user per DOS box),
then well over two-thirds of the people using Unix are stuck doing so on
poorly supported VDTs. The most interactive tool they’re using is probably
vi.


Indeed, the most often used X application is xterm, a VT100 terminal
emulator. And guess what software is being used to control the display of
text? None other than termcap and curses!


The Magic of Curses


Interactive programs need a model of the display devices they will control.
The most rational method for a system to support display devices is
through an abstract API (Application Programmer’s Interface) that
supports commands such as “backwards character,” “clear screen,” and
“position cursor.” Unix decided the simplest solution was to not provide an
API at all.

Free download pdf