Initial revision
[vte.git] / README
1 * What is VTE?
2 - You could say that VTE is something of a research project of mine, based on
3   the simple question:  "if programs can use a termcap file (through either
4   libtermcap or curses or ncurses) to determine how to drive a terminal, why
5   can't a terminal emulator use a termcap file to determine how to behave?"
6
7 * What does VTE include?
8 - VTE includes a library (libvte) which implements such a terminal emulator
9   widget for GTK+ 2.0, and a sample application (vte) which wraps that widget
10   in a GTK window.
11
12 * How does it work?
13 - The VTE library inserts terminal capability strings into a trie, and then
14   uses it to determine if data received from a pseudo-terminal is a control
15   sequence or just random data.  The sample program "interpret" illustrates
16   what the widget actually sees after it filters incoming data.
17
18 * What's missing?
19 - Entries in the termcap file also don't contain the sequences which a terminal
20   is supposed to send to the application when a specific sequence is received
21   (for example, the query-cursor-position control sequence).  I haven't figured
22   out how to do those yet.
23 - Most commands specific to Xterm or dtterm are recognized, but very few of
24   their behaviors are implemented.
25 - Certain termcap-specific commands aren't implemented yet.  There are enough
26   to run ls, vim, less, and probably emacs and mutt, but more need to be
27   implemented.
28 - I'm not sure the widget implementation itself is correct.  There are many
29   changes in going from GTK+ 1.2 to 2.0, and examples of the proper way to do
30   things is currently scarce, so some of it's guesswork.
31 - An actual property interface needs to be retrofitted over the various options
32   which are currently hard-coded at startup-time.
33 - The widget uses wide characters internally, converting from the narrow streams
34   it interfaces with for internal storage using iconv, but it doesn't handle
35   changes to the terminal encoding in the middle of a block of characters until
36   after it's processed the entire block, meaning that sometimes encoding isn't
37   handled properly.
38 - Selection and copy/paste support isn't started yet.
39 - Input method support isn't started yet.
40 - Mouse tracking isn't started yet.