This patch implements a new advanced text mode driver using libcaca. As the developers of this library, I am perfectly aware that this terminal driver "is the waste of time it looks to be. No need to tell me about that." (http://caca.zoy.org/wiki/libcaca). Still, it was fun implementing it.
In contrast to the dumb terminal, this is a full-fledged terminal and includes support for (RGB) colors, box fill, images, enhanced, rotated text, filled polygons and mouse interaction. It supports display on screen and export to a file. See `set term caca driver list` for a list of supported backend drivers on your platform.
Restrictions: Note that the number of colors supported by different libcaca backends differs. Most backends support 16 foreground and 16 background colors only, whereas e.g. the "x11" backend supports truecolor. Some backends only offer 8 different background colors and interpret the most significant bit of the background color as indicator for blinking text. If supported by the backend, the canvas size will be automatically adjusted to the current window/terminal size.
The caca terminal supports mouse interaction. Please beware that some backends of libcaca (e.g. slang, ncurses) only update the mouse position on mouse clicks. Modifier keys (ctrl, alt, shift) are not supported by libcaca and are thus unavailable.
So far, this terminal has been tested on Windows using MinGW (windowed and console mode), Ubuntu 12.04 and CentOS 6.
In the course of the development of this terminal, the Windows libcaca backend `win32` was extended considerably. A patch will be submitted to libcaca developers.
Current limitations/bugs I am aware of:
- rotated enhanced text not yet implemented
- alignment (right/center) of enhanced text is wrong
- alignment of rotated center|right aligned text is wrong
- hypertext not implemented
- size option is not considered for on-screen display
- key entry of filled polygons drawn at wrong position
- (sometimes) no blinking text cursor in wgnuplot text window
- endless loop in libcaca in case of illegal utf8 characters (bug in caca_put_str)
- Ctrl-C not working for CACA_DRIVER=slang