User: Password:
Subscribe / Log in / New account


Design simple menus with Cursed Menu

By Forrest Cook
April 9, 2008

The Cursed Menu project implements a terminal-based menu system via the the Curses terminal control library:

Cursed Menu aims to create an ncurses based menu system for character based sessions. This menu program could be used to create user, system administration, or utility menus for clients connecting with text based clients such as telnet, ssh, or rlogin.

Version 1.0.3 of Cursed Menu was recently announced. Despite being unable to find any documentation whatsoever on the project page, your editor decided to try out the software. The code was downloaded as a tar.bz2 file, uncompressed and untared. The configure script was run on a system running Ubuntu 7.04. There was one dependency issue that was fairly easily solved by installing the libncurses5-dev package. After fixing that, the software configured and made correctly.

The next logical action was to take a look at the source code in the src/ subdirectory. The source files were mostly .cc and .hh indicating a C++ project. The cursedmenu binary was run and a blue curses screen similar to the example screenshot showed up. Navigating through the menus was simply a matter of using the arrow keys for movement and the Enter key for selecting an item. A longer description of the item under the cursor showed up on the lower left corner of the terminal screen.

A little more digging through the code revealed the configuration system for Cursed Menu. Each menu has an associated .cmd file, here's what the default main menu .cmd file looks like:

# default.cmd - The default Cursed Menu definition file
# Lines beginning with a pound sign (#) are comments.
# --------------------------------------------------------
debug = yes;
pause_after_execution = no;

   # Each menu file contain one "MainMenu" which is the
   # first menu displayed.
   # ---------------------------------------------------
   MenuBegin MainMenu
      MenuTitle=Default Menu
      ItemName=Item #1
      ItemDesc=This is a very nice 1st item
      ItemExec=echo "Item #1"; sleep 5
      ItemName=Item #2
      ItemDesc=This is a very nice 2nd item
      ItemExec=echo "Item #2"; sleep 5
      ItemName=Sub Menu
      ItemDesc=Go to the Sub Menu
      ItemExec=MenuSub sub.cmd

      ItemDesc=Exit this menu
   MenuEnd MainMenu

Customizing the .cmd file was fairly intuitive, shell commands were added to the ItemExec lines and ran when the menu item was selected. The cursedmenu binary picked up the changes in the .cmd file without recompilation.

Cursed Menu provides a quick and easy way to control simple shell scripts and could be useful for many purposes. The project could really benefit from some basic documentation, A simple README file with a description of the available commands would be a good start. Despite this lack, the code seems to function nicely and can be put to use as-is.

Comments (6 posted)

System Applications

Database Software

Firebird 2.0.4 rc1 announced

Version 2.0.4 rc1 of the Firebird DBMS has been announced. "This sub-release introduces some bug fixes and vulnerability closures backported from V.2.1 development. It does not add any new functionality to the database engine."

Comments (none posted)

phpPgAdmin 4.2 released

Version 4.2 of phpPgAdmin has been announced. "Version 4.2 adds many new features, bug fixes and updated translations over the previous version, and includes support for PostgreSQL 8.3."

Comments (none posted)

Postgres Weekly News

The April 6, 2008 edition of the Postgres Weekly News is online with the latest PostgreSQL DBMS articles and resources.

Full Story (comments: none)

ZRM for MySQL: 2.0 released (SourceForge)

Version 2.0 of ZRM for MySQL has been announced. "Zmanda Recovery Manager (ZRM) for MySQL is an easy to use, flexible and robust backup and recovery manager for MySQL. It provides scheduling, reporting, RSS & email notification, backup verification, compression, encryption and supports custom plugins. Version 2.0 of Zmanda Recovery Manager (ZRM) for MySQL, a robust and intelligent solution for backup and recovery of MySQL databases is now available. Significant feature is the support for Solaris platform and backups using ZFS snapshots (in addition to LVM snapshots)".

Comments (none posted)

Networking Tools

Mandriva Directory Server 2.3.0 available

Version 2.3.0 of Mandriva Directory Server has been announced. "The Mandriva Directory Server (MDS) is a Free Software project that features: * user authentication and management thanks to LDAP * an extensible, nice looking and AJAX powered PHP web interface called MMC (Mandriva Management Console), provided with 5 modules: * Users and groups management * SAMBA accounts and shares management * DNS/DHCP management * Email delivery management * Web proxy blacklist management * a Python dedicated management API for LDAP, SAMBA, and SQUID (core of the MDS and the MMC) * a policy system, that will allow to define users right on network ressource"

Full Story (comments: 1)


Common UNIX Printing System 1.3.7 released

Version 1.3.7 of CUPS, the Common UNIX Printing System, has been announced. "The new release includes three security fixes and several printing and authentication fixes. We encourage all CUPS users to update to the current release."

Comments (none posted)


OpenSSH 5.0 released

Version 5.0 of OpenSSH has been announced, it features a security fix for a vulnerability involving the hijacking of X11-forwarded connections. "OpenSSH is a 100% complete SSH protocol version 1.3, 1.5 and 2.0 implementation and includes sftp client and server support."

Full Story (comments: 49)

Web Site Development

Apache-SSL security release - apache_1.3.41+ssl_1.59

Release 1.3.41 of the Apache-SSL web server has been announced, several security vulnerabilities have been patched. "Apache-SSL provides environment variables that are filled with (client) certificate data. If the subject of a client certificate contains special characters, parts of these variables can be overwritten or be filled with other parts of memory."

Full Story (comments: none)

Desktop Applications

Audio Applications

jack_capture V0.9.10 and Snd-ls V0.9.8.16

New releases of jack_capture and Snd-ls have been announced, the former has some new capabilities added and both include bug fixes. "jack_capture is a program for recording soundfiles with jack. Its default operation is to capture whatever sound is going out to your speakers into a file."

"Snd-ls is a distribution of Bill Schottstaedt's sound editor SND."

Full Story (comments: none)

Business Applications

TPM Manager: 0.5 (SourceForge)

Version 0.5 of TPM Manager has been announced. "The goal of this project is the development of a TPM management software providing an easy to use graphical user interface. The TPM Manager will be developed under Linux, but later releases should be usable with all operating systems providing a TSS API. The new version of TPM Manager is compatible with TPM 1.2 and TrouSerS 3.1. It would be followed by a new version supporting more features of the TPM."

Comments (none posted)

Desktop Environments

GNOME Software Announcements

The following new GNOME software has been announced this week: You can find more new GNOME software releases at

Comments (none posted)

KDE Software Announcements

The following new KDE software has been announced this week: You can find more new KDE software releases at

Comments (none posted)

Announcing xpra v0.0.4

Version 0.0.4 of xpra has been announced. "I'm pleased to announce the second public release of xpra, and the first that is likely to stand up to real use by people who aren't me. Xpra is 'screen for X' -- it allows you to run X programs, usually on a remote host, direct their display to your local machine, and then to disconnect from these programs and reconnect from the same or another machine, without losing any state. It is licensed under the GPLv2+."

Full Story (comments: none)

Xorg Software Announcements

The following new Xorg software has been announced this week: More information can be found on the X.Org Foundation wiki.

Comments (1 posted)


libwfut 0.2.0 released

The WorldForge game project has announced the release of libwfut 0.2.0. "WFUT is a content distribution system initially intended to provide media updates for WorldForge clients. libwfut is a C++ implementation of the client side functionality. This release contains a swig generated python interface, download mirror selection, improved error reporting, control over the number of simultaneous downloads and numerous other bug fixes and improvements."

Comments (none posted)


Wine 0.9.59 released

Version 0.9.59 of Wine has been announced. Changes include: Improved support for the .NET framework, Better services handling through a separate services.exe process, Support for ATI fragment shader, Better support for http proxies, Window management fixes, Pre-compiled fonts are now available in the sourcetree, and Lots of bug fixes.

Comments (none posted)

wineasio: New Release! 0.7.4 (SourceForge)

Version 0.7.4 of wineasio has been announced. "wineasio provides an ASIO to JACK driver for WINE. ASIO is the most common Windows low-latency driver, so is commonly used in audio workstation programs. (Wine's built-in JACK transport isn't a Windows ASIO driver.) I've just uploaded a new tarball with the latest code from HEAD to make it easier for people who prefer that vs SVN. This version has a number of changes that address possible performance issues. However, can I ask that if you're having xruns with 0.7.x, you try 0.5. If you don't have xrun with 0.5, please let us know."

Comments (none posted)

Music Applications

Strasheela 0.9.3 has been released

Version 0.9.3 of Strasheela has been announced, it adds some new features and includes some bug fixes. "Strasheela is a highly expressive constraint-based music composition system. Users declaratively state a music theory and the computer generates music which complies with this theory. A theory is formulated as a constraint satisfaction problem (CSP) by a set of rules (constraints) applied to a music representation in which some aspects are expressed by variables (unknowns). Music constraint programming is style-independent and is well-suited for highly complex theories (e.g. a fully-fledged theory of harmony). Results can be output into various formats including MIDI, Lilypond, and Csound."

Full Story (comments: none)


Duplicate Files Finder: 0.44 released (SourceForge)

Version 0.44 of Duplicate Files Finder has been announced. "Duplicate Files Finder is an application which allows you to easily find and remove duplicate files. Creating hardlinks and symbolic links is also supported. A special algorithm minimizes the disk traffic, so it is very fast. Runs on Windows and Linux. This release fixes mainly remaining speed issues."

Comments (1 posted)

pytagsfs version 0.6.0 released

Version 0.6.0 of pytagsfs, a FUSE filesystem that arranges media files in a virtual directory structure based on the file tags, has been announced. "This release includes significant enhancements as well as critical bug fixes".

Full Story (comments: none)

Languages and Tools


Caml Weekly News

The April 1-8, 2008 edition of the Caml Weekly News is out with new articles about the Caml language.

Full Story (comments: none)


OpenSwing: 1.5.4 released (SourceForge)

Version 1.5.4 of OpenSwing has been announced, it includes numerous improvements. "OpenSwing is a component library that provides a rich set of advanced graphics components and a framework for developing java applications based on Swing front-end. It can be applied both to rich client applications and Rich Internet Applications."

Comments (none posted)

Improvements made in GCJ Eclipse support

GCJ, the GNU Compiler for the Java Programming Language has added new support for the Eclipse IDE. "Keith Seitz and Kyle Galloway have made considerable progress on GCJ's implementation of the JDWP. It is now possible to use eclipse to debug interpreted Java code using libgcj as the VM."

Comments (1 posted)


Perl 6 on Parrot (Rakudo) progress report (use Perl)

Use Perl presents a report on the state of Perl 6 on Parrot. "This is a long-overdue report on the state of Perl 6 on Parrot (now "Rakudo Perl") development. In late 2007 I had been writing progress reports on a regular basis as as part of a grant from the Mozilla Foundation (MF) and The Perl Foundation (TPF), but in early January I had to pause work on the grant and my reporting to take care of a family emergency. I'm very glad that things have now settled down and that I can focus energy back on Perl again. In spite of my distractions, a lot of progress has been made on Rakudo since last the last major report I wrote in December 2007."

Comments (none posted)

This Week on perl5-porters (use Perl)

The March 23-29, 2008 edition of This Week on perl5-porters is out with the latest Perl 5 news.

Comments (none posted)


Python 2.6a2 and 3.0a4 released

Two alpha releases of the Python language have been announced. "Please note that these are alpha releases, and as such are not suitable for production environments. We continue to strive for a high degree of quality, but there are still some known problems and the feature sets have not been finalized. These alphas are being released to solicit feedback and hopefully discover bugs, as well as allowing you to determine how changes in 2.6 and 3.0 might impact you."

Full Story (comments: none)

Python-URL! - weekly Python news and links

The April 7, 2008 edition of the Python-URL! is online with a new collection of Python article links.

Full Story (comments: none)


Tcl-URL! - weekly Tcl news and links

The April 3, 2008 edition of the Tcl-URL! is online with new Tcl/Tk articles and resources.

Full Story (comments: none)

Build Tools

Announcing Dolt, a drop-in Libtool replacement which cuts build times in half

The Dolt project has been created to address build time issues with Libtool. "Many packages use GNU autotools (automake and autoconf) to build, to the point that "./configure && make" represents one of the most common build procedures for Free Software packages. Libraries using autotools typically use GNU Libtool, partly because it works on almost any system and partly because autotools makes it difficult to do otherwise. Packages which use these libraries sometimes use libtool as well. Yet for many of these libraries and other packages, more than half of the build time goes into running the libtool shell script."

Full Story (comments: 2)


libfishsound 0.9.1 released

Version 0.9.1 of libfishsound has been announced, this is a maintenance release. "libfishsound provides a simple programming interface for decoding and encoding audio data using Xiph.Org codecs (FLAC, Speex and Vorbis)."

Full Story (comments: none)

MathGL: version 1.6.1 (Stable) released (SourceForge)

Stable version 1.6.1 of MathGL has been announced. "MathGL library makes wide spectrum of mathematical graphics (plots, surfaces, contours, isosurfaces and so on) in platform independent way. Graphics may be exported to EPS, SVG, PNG, JPEG or TIFF formats. Front-end for library is based on FLTK and GLUT libraries. Also it is possible to draw plot in console regime directly to the file (bitmap, PostScript or SVG) without using X-server. Output graphics is adopted to use with wxWidgets, Qt and other libraries. New features: support of named columns, new plots and many other improvements."

Comments (none posted)

Test Suites

Test-Run 0.0115 announced

Version 0.0115 of Test-Run, a modular and improved harness for automated test scripts based the Test Anything Protocol, has been announced. "The highlights of this release are: * The core Test-Run core code was fully re-written as a BSD-style licence (the MIT X11 Licence). Some perl5-style (GPL+Artistic) code remains as old (and possibly out-of-date) documentation and in the test harness, and is explicitly marked as such in the POD. * Due to this licence-induced rewrite and due to other unrelated work, there has been a lot of refactoring and factoring out of the code of Test-Run and its quality has been improved."

Full Story (comments: none)

Version Control

GIT 1.5.5 announced

Version 1.5.5 of the GIT distributed version control system has been announced, this release includes several new features and bug fixes. "We kept this cycle just slightly over two months, as the previous 1.5.4 cycle was painfully tooooo long."

Full Story (comments: none)


What If I Don't Actually Like My Users?

The other half of the "hard to misuse" list is now available on kernel hacker Rusty Russell's weblog. "Here begins our descent into hell; if an interface manages to achieve negative scores on the Hard To Misuse List, your users may detect the dull red glow of malignancy rather than incompetence." We linked to the the positive half of his list earlier in the week.

Comments (45 posted)

Page editor: Forrest Cook
Next page: Linux in the news>>

Copyright © 2008, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds