A high-level ncurses alternative written in Haskell
Go to file
coreyoconnor 7b38759846 use alloca instead of mallocBytes for exception safety
Ignore-this: 1d31bef2e227fefafe8bb4b6f9511e1d

darcs-hash:20090904172928-f0a0d-987b6931294fd33f7825eddc0adf04c81716a4dd.gz
2009-09-04 10:29:28 -07:00
cbits use alloca instead of mallocBytes for exception safety 2009-09-04 10:29:28 -07:00
src use alloca instead of mallocBytes for exception safety 2009-09-04 10:29:28 -07:00
test use alloca instead of mallocBytes for exception safety 2009-09-04 10:29:28 -07:00
LICENSE use alloca instead of mallocBytes for exception safety 2009-09-04 10:29:28 -07:00
README use alloca instead of mallocBytes for exception safety 2009-09-04 10:29:28 -07:00
Setup.lhs use alloca instead of mallocBytes for exception safety 2009-09-04 10:29:28 -07:00
TODO use alloca instead of mallocBytes for exception safety 2009-09-04 10:29:28 -07:00
vty.cabal use alloca instead of mallocBytes for exception safety 2009-09-04 10:29:28 -07:00

vty is a very simple terminal interface library.

Vty currently provides:

* Automatic handling of suspend/resume (SIGTSTP+SIGCONT).

* Automatic handling of window resizes.

* Supports Unicode characters on output, automatically setting and
  resetting UTF-8 mode (beware double width and combining characters!)

* Automatic computation of minimal differences.

* Minimizes repaint area, thus virtually eliminating the flicker
  problem that plagues ncurses programs.

* A pure, compositional interface for efficiently constructing display
  images.

* Automatically decodes keyboard keys into (key,[modifier]) tuples.

* Automatically supports refresh on Ctrl-L.

* Automatically supports timeout after 50ms for lone ESC (a barely
  noticable delay)

* Interface is designed for relatively easy compatible extension.

* Supports all ANSI SGR-modes (defined in console_codes(4)) with
  a simple type-safe interface.

* Properly handles cleanup, leaving the cursor at the bottom of
  the screen and erasing the last line.

Current disadvantages:

* No current support for non-ANSI terminals.

* UTF-8 support only works properly on the linux console/xterm,
  and even then only if it is not the system default.

* Minimal support for special keys on terminals other than the
  linux-console.  (F1-5 and arrow keys should work, but anything
  shifted isn't likely to.)

* Uses the TIOCGWINSZ ioctl to find the current window size, which
  appears to be limited to Linux and *BSD.

darcs get --tag=rel-3.0.0 http://code.haskell.org/vty/

To compile the demonstration program: ghc --make Test.hs gwinsz.c

The main documentation consists of the haddock-comments and the
demonstration program