H.Merijn Brand > cshmen-3.50_01 > cshmen


Annotate this POD



cshmen, xamen - Basic menu application in curses or perl/Tk


  # cshmen [-?] [-a] [-e] [-d] [-v] [-n] [-m dir] [menu]

  # xamen  [-?] [-a] [-e] [-d] [-v] [-n] [-m dir] [menu]


cshmen is a low level recursive menu program using curses. xamen is the perl/Tk translation for cshmen


As this was built for internal use only, there are no serious attempts yet made to create a working environment for building and installing.

 $ make

Should build cshmen in the current folder. You might need to change #include <curses.h> to #include <ncurses.h> and maybe some lines in the Makefile too.


This is seriously missing in this dist, as the only available documentation is written in Uniplex. In Dutch. Both pretty useless for the OpenSource community.

Menu format ^

The menu files

A menu file consists of menu lines. Each line looks like



Two ID's are required: "H" for Header, and "Q" for Footer. In these two cases, the State is ignored (but still required).

The H-line will be used to display the menu title. The command may optionally define a different environment for this menu (and all the descendants).

The Q-line will be shown on the last line and is a placeholder for the <Back> action. Text is shown, but Command is ignored.

For all the other lines ID denotes the line to display this item on, optionally followed by a letter to use instead (default is the line number). Lines 10 though 16 are indicated by 'A' through 'F'.

    H:Home menu      ::1
    1:Text for line 1:echo line 1:1
    3=F:Fortune      :fortune:2
    B:Test menu      :M test_menu:1
    Q:Stop           ::1

Free text to show in the menu. The colon is forbidden. and the underscores are translated to space.


The command to be invoked A command can be a series of commands seperated by ' ; '. Whitespace matters. Each command can have optional command line arguments, redirection and a execution folder. Arguments can be questions.

Commands that start with 'M ' call a menu. No ' ; ' allowed. If you *do* have a command 'M', use 'env'.

  proc @Directory 1>/tmp/proc-1.log 2>>/tmp/proc-2.log -
 0 = Not shown (hidden). Item cannot be selected
 1 = Normal, active
 2 = Normal, but wait after execution finishes with a user prompt

Optional help description for this item


 * Documentation: pod, manual page or serious readme. NO info!
 * A better Makefile
 * Some sort of install procedure
 * example menu's
 * See top of xamen


H.Merijn Brand, <h.m.brand@procura.nl>


Copyright (C) 1986-2006 H.Merijn Brand, PROCURA B.V.

it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.

syntax highlighting: