The other major sort of user interface used with Unix and related systems is the text user interface, characterized by libraries like ncurses , slang, and such.
This a a free software emulation of curses in System V Release 4.0, and more. It uses Terminfo format, supports pads and color and multiple highlights and forms characters and function-key mapping, and has all the other SYSV-curses enhancements over BSD Curses.
Many, many, many console-oriented applications use ncurses.
The S-Lang library includes "terminal control," and is more compact than ncurses.
As a newer design with no mandate for backwards compatibility, it is fairly likely to be found easier to program with than ncurses . It is decidedly more portable to OSes that do not resemble Unix; it was used to port the news reader SLRN to Windows and OS/2.
A file selection utility implemented using curses that may be controlled via command line parameters and thus is useful for embedding file selection in interactive Unix scripts.
Curses Development Kit (pretty neat)
CDK Widgets
Allows a user to select from a list of words, with the ability to narrow the search list by typing in a few characters of the desired word.
This creates a multiple button widget.
Creates a little simple calendar widget.
Prompts the user with a message, and the user can pick an answer from the buttons provided.
Allows the user to enter various types of information.
A file selector built from Cdk base widgets. This example shows how to create more complicated widgets using the Cdk widget library.
A graphing widget.
Creates a histogram. (vertical or horizontal)
Creates a pop up field which allows the user to select one of several choices in a small field. Very useful for things like days of the week or month names.
Displays messages in a pop up box, or the label can be considered part of the screen.
Displays a message in a scrolling marquee.
Creates a complex matrix with lots of options.
Creates a pull-down menu interface.
A multiple line entry field. Very useful for long fields. (like a description field)
Creates a radio button list.
Creates a numeric scale. Used for allowing a user to pick a numeric value and restrict them to a range of values.
Creates a scrolling list/menu list.
Creates a scrolling log file viewer. Can add information into the window while its running. A good widget for displaying the progress of something. (akin to a console window)
Creates a multiple option selection list.
Akin to the scale widget, this widget provides a visual slide bar to represent the numeric value.
Creates a entry field with character sensitive positions. Used for pre-formatted fields like dates and phone numbers.
This is a file/information viewer. Very useful when you need to display loads of information.
Drat (pronounced $!@*) provides an Object-Oriented (OO) interface to the curses library written in C++.
Adds readline functionality to any line-oriented Unix package.
In the Beginning was the Command Line
Neal Stephenson essay on Complexity of User Interfaces, GUIs versus CLIs
mpt - the Weblog of Matthew Thomas - Why Free Software usability tends to suck
An essay on the difficulties of producing good user interfaces for free software. It responds to the preceding discussion...
What User Friendly Really Means
A polemic by a FreeBSD fan on the nature of "user friendliness."
Why can't free software GUIs be empowering instead of limiting?