a project of Eta Labs
uuterm is a portable VT100-like terminal emulator with minimal code and memory footprint and maximal Unicode support. I haven't gotten around to making a real website or release, but you can check out the code from svn at:
svn://svn.mplayerhq.hu/uuterm/trunk/
The included README file is copied below:
Quick and dirty uuterm README file: First and foremost, uuterm is EXPERIMENTAL software. It lacks many features expected of a terminal emulator, and may even crash or do bad things, though it seems to be behaving pretty well these days. Both Linux-fbcon and X11 versions of uuterm are available, each optimized for the nature of the environment it runs in. Porting the fbcon version to other framebuffer devices (wscons, PC hardware, SDL, ...) is left as an easy exercise for the reader. With that said, building is just a matter of running "make". If you need special CFLAGS options or a nondefault compiler (CC), put them in a file named config.mak and they will automatically be used. Should be self-explanatory. uuterm-fb is not built by default since it depends on Linux fbcon. Either run "make uuterm-fb" or edit config.mak to have it built if you wish to use it. To start using uuterm, simply run "uuterm-fb" or "uuterm-x11" with the TERM environment variable set to "linux", or "uuterm" if you install the provided uuterm.ti terminfo file, and the UUTERM_FONT environment variable set to a valid pathname to a UCF font file: A simple 'VGA' fallback font with ASCII and linedrawing characters is built into uuterm, but in order to appreciate uuterm you need a real font. uuterm uses 'UCF' (U**code/Ucs/Universal/... Charcell Font) font files. The included ucfcomp tool (nowhere near mature) can generate such fonts from a text-based source format. The ytty (pronounced yeti) font which I developed for uuterm is now included with the uuterm source and will be built during the build process. Further information on UCF (mostly outdated) may be found at: http://brightrain.aerifal.cx/~dalias/ucf/fonts/ By default uuterm runs the default SHELL when started. If you want it to directly run another program, simply put the name of the program on the command line, followed by any arguments. The idea of uuterm: Use of any/all of the world's scripts and languages on *nix should not be limited to fancy gui applications. Proper rendering of text is needed all the way down to the console level, and it should not depend on huge library frameworks or outline fonts. In this light, uuterm is an experiment to demonstrate that supporting "complex" scripts need not be complex; all that's needed is some natural, logical extensions to ancient bitmap font technology to account for the fact that glyphs and characters are not the same thing. While display in uuterm is already very "advanced" by terminal emulator standards, keyboard support is moderately poor. The X11 version of uuterm now supports XIM input methods, but without on-the-spot or over-the-spot preedit. The Linux-fbcon version does not support any input methods directly (although uim-fep could be used) and relies on the console keymap to convert keycodes to characters. Script support: - Indic scripts are _almost_ supported by the UCF font system alone, but need some minor additional support for reordering. This will be implemented in the near future, if all goes well. However, some scripts (at least Kannada and Malayalam) may need revisions to the wcwidth definitions in order to have any hope of correct display, due to characters with extremely wide glyphs with comparable complexity (in vertical stroke count) to ideographic characters. - RTL/bidi scripts will not render properly. I personally don't believe there is any sane way to render them properly at the terminal level, but I will eventually implement algorithms that might work reasonably for some users. For the time being, 180°-rotated glyphs will be provided for a minimal level of usability. - All other (LTR) scripts should be fully supported using the "advanced" combining and contextual glyph-selection abilities of the UCF font format (details to come later, along with tools).
More coming soon...