2009-11-09 01:57:27 +03:00
|
|
|
vty is a terminal interface library.
|
2009-09-04 21:29:28 +04:00
|
|
|
|
2013-03-22 11:11:13 +04:00
|
|
|
Project is hosted on github.com: https://github.com/coreyoconnor/vty
|
|
|
|
|
|
|
|
git clone git://github.com/coreyoconnor/vty.git
|
|
|
|
|
|
|
|
# Features
|
2009-09-04 21:29:28 +04:00
|
|
|
|
2014-10-30 07:50:05 +03:00
|
|
|
* Support for a large number of terminals. vt100, ansi, hurd, linux, screen etc
|
|
|
|
etc. Anything with a sufficient terminfo entry.
|
|
|
|
|
2009-09-04 21:29:28 +04:00
|
|
|
* Automatic handling of window resizes.
|
|
|
|
|
2014-10-30 07:50:05 +03:00
|
|
|
* If the terminal support UTF-8 then vty supports Unicode output.
|
|
|
|
|
|
|
|
* Handles multi-column glyphs. (Requires user to properly configure terminal.)
|
2009-09-04 21:29:28 +04:00
|
|
|
|
2014-10-30 07:50:05 +03:00
|
|
|
* Efficient output. Output buffering and terminal state changes are minimized.
|
2009-09-04 21:29:28 +04:00
|
|
|
|
2014-10-30 07:50:05 +03:00
|
|
|
* Minimizes repaint area. Virtually eliminating the flicker problems that
|
|
|
|
plagues ncurses programs.
|
2009-09-04 21:29:28 +04:00
|
|
|
|
2014-10-30 07:50:05 +03:00
|
|
|
* A pure, compositional interface for efficiently constructing display images.
|
2009-09-04 21:29:28 +04:00
|
|
|
|
|
|
|
* Automatically decodes keyboard keys into (key,[modifier]) tuples.
|
|
|
|
|
|
|
|
* Automatically supports refresh on Ctrl-L.
|
|
|
|
|
2014-10-30 07:50:05 +03:00
|
|
|
* Automatically supports timeout after for lone ESC. The timeout is
|
|
|
|
customizable.
|
2009-09-04 21:29:28 +04:00
|
|
|
|
2014-10-30 07:50:05 +03:00
|
|
|
* Interface is designed for easy compatible extension.
|
2009-09-04 21:29:28 +04:00
|
|
|
|
2014-10-30 07:50:05 +03:00
|
|
|
* Supports ANSI graphics modes (SGR as defined in console_codes(4)) with a
|
|
|
|
type-safe interface. Gracefull fallback for terminals that do not support, or
|
|
|
|
partially support the standard ANSI graphics modes.
|
2009-09-04 21:29:28 +04:00
|
|
|
|
2013-12-23 12:06:10 +04:00
|
|
|
* Properly handles cleanup, but not due to signals.
|
2009-09-04 21:29:28 +04:00
|
|
|
|
2014-10-30 07:50:05 +03:00
|
|
|
* Comprehensive test suite.
|
|
|
|
|
2013-03-22 11:11:13 +04:00
|
|
|
# Known Issues
|
2009-09-04 21:29:28 +04:00
|
|
|
|
2014-10-30 07:50:05 +03:00
|
|
|
* Terminals have numerous quirks and bugs. vty picks what works best for the
|
|
|
|
author in ambigious, or buggy situations.
|
|
|
|
|
2013-12-23 12:06:10 +04:00
|
|
|
* Signal handling of STOP, TERM and INT are non existent.
|
2009-09-04 21:29:28 +04:00
|
|
|
|
2014-10-30 07:50:05 +03:00
|
|
|
* The character encoding of the terminal is assumed to be UTF-8 if
|
|
|
|
unicode is used.
|
2013-12-23 12:06:10 +04:00
|
|
|
|
2014-10-30 07:50:05 +03:00
|
|
|
* Terminfo is assumed to be correct unless there is an override configured.
|
|
|
|
Some terminals will not have correct special key support (shifted F10 etc).
|
|
|
|
See Config for customizing vty's behavior for a particular terminal.
|
2009-09-04 21:29:28 +04:00
|
|
|
|
2014-10-30 07:50:05 +03:00
|
|
|
* Uses the TIOCGWINSZ ioctl to find the current window size, which appears to be
|
|
|
|
limited to Linux and BSD.
|
2009-09-04 21:29:28 +04:00
|
|
|
|
2013-03-22 11:11:13 +04:00
|
|
|
# Platform Support
|
2011-05-25 05:07:33 +04:00
|
|
|
|
2013-03-22 11:11:13 +04:00
|
|
|
## Posix Terminals
|
|
|
|
|
2014-10-30 07:50:05 +03:00
|
|
|
Uses terminfo to determine terminal protocol. With some special rules to handle
|
|
|
|
some omissions from terminfo.
|
2009-09-04 21:29:28 +04:00
|
|
|
|
2013-03-22 11:11:13 +04:00
|
|
|
## Windows
|
2009-09-04 21:29:28 +04:00
|
|
|
|
2014-10-30 07:50:05 +03:00
|
|
|
cygwin only.
|
2013-07-02 20:42:42 +04:00
|
|
|
|
|
|
|
# Development Notes
|
|
|
|
|
2014-09-22 01:51:01 +04:00
|
|
|
## Under NixOS
|
|
|
|
|
|
|
|
After installing ncurses to user env.
|
|
|
|
|
|
|
|
~~~
|
|
|
|
LIBRARY_PATH=$HOME/.nix-profile/lib/ cabal configure --enable-tests --extra-lib-dirs=$HOME/.nix-profile/lib
|
|
|
|
LIBRARY_PATH=$HOME/.nix-profile/lib/ cabal build
|
|
|
|
LIBRARY_PATH=$HOME/.nix-profile/lib/ cabal test
|
|
|
|
~~~
|
|
|
|
|
2013-07-02 20:42:42 +04:00
|
|
|
## Coverage
|
|
|
|
|
2014-10-30 07:50:05 +03:00
|
|
|
As of last testing, profiling causes issues with coverage when enabled. To
|
|
|
|
evaluate coverage configure as follows:
|
2013-07-08 00:55:23 +04:00
|
|
|
|
|
|
|
~~~
|
2013-07-27 12:00:25 +04:00
|
|
|
rm -rf dist ; cabal configure --enable-tests --enable-library-coverage \
|
2013-07-08 00:55:23 +04:00
|
|
|
--disable-library-profiling \
|
|
|
|
--disable-executable-profiling
|
|
|
|
~~~
|
2013-07-28 01:29:46 +04:00
|
|
|
|
|
|
|
## Profiling
|
|
|
|
|
|
|
|
|
|
|
|
~~~
|
|
|
|
rm -rf dist ; cabal configure --enable-tests --disable-library-coverage \
|
|
|
|
--enable-library-profiling \
|
|
|
|
--enable-executable-profiling
|
|
|
|
~~~
|