ROTE - Our Own Terminal Emulation Library
NOTICE: libROTE has not been upgraded in a while and it
seems that it will remain that way for, well, another while.
libROTE works as it is (it's not broken, just stalled),
but it is lacking several interesting features
such as Unicode support and other desirable capabilities.
If you are starting a new project, please take a look at
It's a library originally based on libROTE, but which adds several
desirable features, and is under active development (as of 2009-10-19).
Also, if you intend to contribute code and patches, you'll have more
luck and more feedback if you contribute directly to libvterm
rather than libROTE.
What is it?
ROTE is a simple C library for VT102 terminal emulation. It allows the
programmer to set up virtual 'screens' and send them data. The virtual
screens will emulate the behavior of a VT102 terminal, interpreting
escape sequences, control characters and such. The library supports
ncurses as well so that you may render the virtual screen to the real
screen when you need to.
To download the current version of ROTE, follow the link below.
How is it licensed?
ROTE is licensed under the GNU Lesser General Public License, which
means it can be used to develop both free and proprietary software
(under certain conditions - please click here
to see the full text of the license.
This library was written by Bruno Takahashi C. de Oliveira, a
Computer Science student at Universidade de São Paulo, Brazil.
My e-mail address is the following (slightly garbled to avoid spam
Other programs by the same author:
Programs that use libROTE
- Omnitty SSH multiplexer is a
curses-based program that allows one to log into several machines
simultaneously and interact with them, selectively directing input to
individual machines or groups of selected machines.
- Anyterm: A Terminal Anywhere
is a suite of programs/scripts that make it possible to create a box on
a web page that behaves like a shell or other text-mode application on the host
machine. Performance it quite respectable and it will run almost anywhere since
it uses only HTTP on standard ports.
There are several programs that do terminal emulation, such as xterm, rxvt,
screen and even the Linux console driver itself. However, it is not easy to
isolate their terminal emulation logic and put it in a module that can be
easily reused in other programs. That's where the ROTE library comes in.
The goal of the ROTE library is to provide terminal emulation support
for C/C++ applications, making it possible to write programs that display
terminals in embedded windows within them, or even monitor the display
produced by other programs.
The ROTE library does not depend on any fancy library: only libc and ncurses.
The ROTE library is able to render the virtual screens
to the physical screen (actually any ncurses window) and can also translate
ncurses key codes to the escape sequences the Linux console would have
produced (and feed them into the terminal). Using ncurses is not mandatory
however, and ROTE will work fine without it, but in that case the application
must take care of drawing the terminal to the screen in whichever way it
ROTE also encapsulates the functionality needed to execute a child process
using the virtual screen as the controlling terminal. It will handle the
creation of the pseudo-terminal and the child process. All the application
has to do is tell it the command to run in the terminal and call an update
function at regular intervals to allow the terminal to update itself.