Home | Hardware | Internet News |Web Hosting |IT Management |Network Storage
LinuxPlanet
Search 
  Power Search | Tips 

 Front Door
 Discussion
 LinuxEngine
 Opinions
 Reports
 Reviews
 Tutorials
 News
 Technology Jobs

 Browse by subject.
Free Newsletter

Java/Open Source Daily
Linux Today
More Free Newsletters

Be a Commerce Partner


















internet.com
IT
Developer
Internet News
Small Business
Personal Technology

Search internet.com
Advertise
Corporate Info
Newsletters
Tech Jobs
E-mail Offers

Print this article
Email this article

   LinuxPlanet / Reviews







Discovering ncurses, the GUI for the Linux Console
ncurses, a GUI for the Linux Console

Juliet Kemp
Monday, January 25, 2010 01:45:55 PM

Juliet Kemp

The CLI versus GUI debate is well-known, but sometimes, drawing a hard line between text-only interfaces and graphical interfaces is too restrictive. Most of the time, if you're using a terminal (whether over SSH or on the console), the CLI and text-only interface works great. Sometimes, though, it can be a real advantage to be able to use at least some graphical logic, without having to fire up an X server. Not all servers run X; you don't always want to forward X to your remote terminal; or you may be at a stage of system or hardware install that prevents you from running a regular graphical interface.

alsamixer
alsamixer

This is where ncurses comes in. The ncurses library allows you to write programs that work in a GUI-like way, but which will run within a normal terminal emulator. You've almost certainly already encountered programs that use ncurses, including:

  • screen, which allows you to run multiple screens in a single terminal window (this uses the terminfo information from ncurses but does its own screen-handling).
  • make menuconfig, a tool which gives you a menu-driven user interface when configuring the Linux kernel before building it. This is a massive improvement over the older question-and-answer style configuration tool, as you'll know if you've ever missed a question with the older tool and had to start all over again.
  • The email program mutt.
  • The terminal-based web browsers lynx and w3m.
  • aptitude, which provides a menu-driven interface to apt-get on Debian and Ubuntu systems.
  • The visual file manager GNU Midnight Commander.
  • The SuSE system management tool yast, when run in ncurses mode.
  • A variety of MP3-player and IRC interfaces available via Sourceforge and other sites.

Midnight Commander, the powerful ncurses-based file manager
Midnight Commander, the powerful ncurses-based file manager

ncurses is a C library which provides a variety of functions for handling screen drawing, cursor management, mouse management, and so on. It isn't released under the GPL, but under a specific free software copyright notice which is discussed in the FAQ.

As a programmer, using ncurses means that you don't have to deal with the massive variety of slightly different terminal codes that exist. Instead, you can just deal with the more abstract concept of a display with multiple windows, and ncurses will handle the translation into control codes for whichever terminal emulator it detects that the program is running under. It can also handle mouse events, so if you have a mouse handler running (either on console or via X), you can use links and clickable menus within your terminal.

w3m, the ncurses Web browser. It take the same colors as your X terminal
w3m, the ncurses Web browser. It take the same colors as your X terminal

There are ways of interacting with ncurses in numerous languages other than C itself (including Python, Perl, and C++), so anything you learn in one language will transfer with reasonable ease to another. If you're interested in writing your own ncurses programs, there's an introduction here (technically obsolete, but still useful as a starting point), and a HOWTO.

Next: Low-overhead With GUI Power »

Skip Ahead

1 ncurses, a GUI for the Linux Console
2 Low-overhead With GUI Power
alsamixer
alsamixer

Midnight Commander, the powerful ncurses-based file manager
Midnight Commander, the powerful ncurses-based file manager

w3m, the ncurses Web browser. It take the same colors as your X terminal
w3m, the ncurses Web browser. It take the same colors as your X terminal





Linux is a trademark of Linus Torvalds.


internet.com home | search | help! | about us

Jupiter Online Media

internet.comearthweb.comDevx.commediabistro.comGraphics.com

Search:

Jupitermedia Corporation has two divisions: Jupiterimages and JupiterOnlineMedia

Jupitermedia Corporate Info


Legal Notices, Licensing, Reprints, & Permissions, Privacy Policy.

Web Hosting | Newsletters | Tech Jobs | Shopping | E-mail Offers