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 | Update: the answer is most likely "because applications which use curses |
---|
8 | have more detailed information than that which is found in termcap". |
---|
9 | |
---|
10 | * What does VTE include? |
---|
11 | - VTE includes a library (libvte) which implements such a terminal emulator |
---|
12 | widget for GTK+ 2.2/2.4, and a sample application (vte) which wraps that |
---|
13 | widget in a GTK window. Because I'm more concerned with whether or not it |
---|
14 | works, all settings are hard-coded to whatever I needed to test the last time |
---|
15 | I touched it. If you actually want to use the widget to get work done, you |
---|
16 | should probably be using gnome-terminal. |
---|
17 | |
---|
18 | * How does it work? |
---|
19 | - The VTE library inserts terminal capability strings into a tree of tables, |
---|
20 | and then uses it to determine if data received from a pseudo-terminal is a |
---|
21 | control sequence or just random data. The sample program "interpret" |
---|
22 | illustrates more or less what the widget sees after it filters incoming data. |
---|
23 | |
---|
24 | * What's missing? |
---|
25 | - Accessibility doesn't work quite right yet. |
---|
26 | - Mouse hilite tracking isn't implemented yet. If you'll pardon the pun, for |
---|
27 | certain applications we're terminally unusable without it. |
---|
28 | - No support for bidirectional text display. No support for shaping. More |
---|
29 | on these topics: |
---|
30 | http://www.opengroup.org/onlinepubs/9638399/overview.htm#tagcjh_03_03_01 |
---|
31 | http://www.opengroup.org/onlinepubs/9638399/overview.htm#tagcjh_03_03_02 |
---|
32 | http://www.unet.univie.ac.at/aix/aixprggd/genprogc/layout_over.htm |
---|
33 | http://www.ecma-international.org/publications/techreports/E-TR-053.htm |
---|
34 | - Most control sequences are recognized, but many aren't implemented. There |
---|
35 | are enough to run ls, vim, less, emacs and mutt, but more need to be |
---|
36 | implemented (ds, ff, hd, hu, i1, i3, iP, is, LF, LO, MC, ML, mm, mo, pf, pk, |
---|
37 | pl, pn, po, pO, ps, px, r1, r2, r3, RA, RF, rp, rs, RX, SA, SX, wi, several |
---|
38 | more from the XTerm set). |
---|
39 | - I'm not sure the widget implementation itself is correct. There are many |
---|
40 | changes in going from GTK+ 1.2 to 2.x, and examples of the proper way to do |
---|
41 | things is currently scarce, so some of it's guesswork. |
---|
42 | - An actual property interface needs to be retrofitted over the various options |
---|
43 | which are only presented as get/set accessors. |
---|
44 | |
---|
45 | * What's weird? |
---|
46 | - Relative cursor motion is weird. When the character to the left of the |
---|
47 | cursor is a 3-byte UTF-8 sequence for a character which occupies two |
---|
48 | columns on the screen, three things may happen when the application sends |
---|
49 | the "cursor left" control sequence: |
---|
50 | * the cursor moves two columns (one character) to the left |
---|
51 | This eliminates the possibility of moving the cursor into the middle of |
---|
52 | a multi-column character. |
---|
53 | * the cursor moves one column (one half-character) to the left |
---|
54 | This makes determining where the cursor is easier, but requires the |
---|
55 | application to emit a control sequence more than once for multi-column |
---|
56 | characters. |
---|
57 | * the cursor moves one "byte" to the left |
---|
58 | This is what most OS kernels do when reading input using "cat". It |
---|
59 | happens to work for a few locales, and is otherwise just plain broken. |
---|
60 | Currently VTE follows the second convention. More on this topic: |
---|
61 | http://czyborra.com/unicode/terminals.html |
---|
62 | http://mail.nl.linux.org/linux-utf8/1999-10/msg00014.html |
---|
63 | http://www.debian.org/doc/manuals/intro-i18n/ch-output.en.html |
---|
64 | - Depending on your locale, the current encoding, and possibly the strengh |
---|
65 | of cosmic rays, the display width of certain Unicode characters changes. |
---|
66 | For the most part this works correctly now, but if you find that it |
---|
67 | doesn't, please file a bug report including a screenshot, the typescript |
---|
68 | file produced by the incorrectly displayed program run under "script", and |
---|
69 | the contents of your LANG/LC_* environment variables. |
---|