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:


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:


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

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

- 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...