Projects

Terminate

Terminate is a Python library to do basic terminal I/O. It enables text-based programs to output colored text, move the terminal cursor, and even display simple widgets, like a spinner, or a progress bar.

Terminate's primary goals are (in this order):

Cross Platform

The standards for outputting text to the terminal range are rather poor and difficult to handle. But what makes it really bad is that most programs only follow the standards part way, and rest of them completely ignore the standards!

Most Unix-like operating systems use special escape characters, although, exactly what these characters are and what they do, varies from one terminal to another. You can read about the gory details in the terminfo(5) man page.

True to its form, Microsoft Windows has decided to completely ignore previous standards. Instead it uses specific kernel calls to control the terminal. While this allows for more control in certain cases, it also causes plenty of problems when trying to keep track of the various attributes.

Simple

I have been asked a number of times why I didn't just use ncurses. The first reason is that ncurses has no decent Windows implementations. The other reason was that in order to make much use of ncurses, you must let the library have complete control over terminal. If you are writing a full screen application like less or screen this makes sense, but most text-base applications find this level of complication unnecessary and confusing.

That said, I do use ncurses, if it's available, as an interface to terminfo. But that is about all you can do without hijacking the terminal.

Other

I'm also working on Fudge and GeekGrep, but those projects are still in the initial stage of planning/development.