vty is a terminal interface library. Project is hosted on github.com: https://github.com/coreyoconnor/vty git clone git://github.com/coreyoconnor/vty.git # Features * Automatic handling of window resizes. * Supports Unicode characters on output, automatically setting and resetting UTF-8 mode for xterm. Other terminals are assumed to support * Efficient output. * 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 type-safe interface. * Properly handles cleanup. # Known Issues * The character encoding of the output terminal is assumed to be UTF-8. * 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. # Platform Support ## Posix Terminals Uses terminfo to determine terminal protocol. Some special rules for Mac terminal applications. The special rules might be invalid on newer Mac OS. ## Windows None! # Development Notes ## Coverage Profiling appears to cause issues with coverage when enabled. To evaluate coverage configure as follows: ~~~ rm -rf dist ; cabal configure --enable-tests --enable-library-coverage \ --disable-library-profiling \ --disable-executable-profiling ~~~ ## Profiling ~~~ rm -rf dist ; cabal configure --enable-tests --disable-library-coverage \ --enable-library-profiling \ --enable-executable-profiling ~~~