Home | History | Annotate | Download | only in cmenu
      1 A .menu file can be used to describe basic menu structures which can be converted
      2 into C code which can then be compiled into a .c32 file for use with SYSLINUX.
      3 The format of a .menu file is similar to an ini file, but with important
      4 differences.
      5 
      6 Lines starting with # and ; are treated as comments. Blank lines are used to
      7 separate the attributes of one menu item from another. Multiple blank lines are
      8 equivalent to a single one.  In other contexts Blank lines are not significant.
      9 
     10 Menus
     11 -----
     12 Each menu declaration starts with a line containing the name of menu in [ ].
     13 This is the "nickname" of the menu and should be different for different menus.
     14 This is not visible to the user of the menu system. The initial menu must
     15 be called "main"
     16 
     17 The menu declaration is followed by lines which set the attributes of the menu.
     18 This is followed by a blank line and followed by declaration of menu items in
     19 that menu.
     20 
     21 All lines which occur before the first menu declaration is considered as
     22 a global declaration.
     23 
     24 Abstract Format
     25 ---------------
     26 
     27 The overall format should look like this
     28 
     29 --------------------------------------------------------
     30 <GLOBAL SETTINGS>
     31 
     32 [menuname1]
     33 
     34 <MENU SETTINGS>
     35 
     36 <ITEM 1>
     37 
     38 ...
     39 
     40 <ITEM N>
     41 
     42 [menuname2]
     43 
     44 <MENU SETTINGS>
     45 
     46 <ITEM A>
     47 
     48 <ITEM B>
     49 
     50 ----------------------------------------------------------
     51 
     52 GLOBAL SETTINGS
     53 ---------------
     54 The following global settings are now supported. Many of the keywords
     55 accept what we call a "DOT COMMAND" as argument. Simply put they are
     56 instructions to the menu system to perform certain actions.
     57 The syntax and semantics of DOT COMMANDS are given later in the section
     58 titled "DOT COMMANDS".
     59 
     60 videomode: (default 0xFF)  [Use with care]
     61    The textmode in which the whole menu system should operate.
     62    Must be a number (use 0x notation for hexadecimal).
     63    Lookup Ralph Brown Interrupt List and search for Video Mode
     64    to find a number to put here.
     65 
     66    setting to 0xFF will mean, menu system will use the current
     67    video mode.
     68 
     69 title:
     70    The title of the whole menu system
     71 
     72 top, left, bot, right: (default 0,0,21,79)
     73    The area of the screen used by the menu system. The remaining
     74    part of the screen can be used by the user for anything.
     75 
     76 helpdir: (default /isolinux/help)
     77    Location of the directory where help information is stored. The
     78    help files must be called "hlpNNNNN.txt" where NNNNN is the helpid.
     79 
     80 pwdfile: (default /isolinux/passwd)
     81    The name of the password file which contains user, password and permissions
     82    See "passwd" file for details regarding format of this file
     83 
     84 editrow: (default 23)
     85    the row on the screen where one can edit the command line. This must
     86    be outside the menu area. Set this to a negative number to disable
     87    editing the command line. In case of authenticated users, the current
     88    user must have "editcmd" permissions to edit the command line
     89 
     90 pwdrow: (default 23)
     91    The row on the screen used for user authentication. Must be outside
     92    menu area (can be same as editrow). Set to negative to disable
     93    user authentication
     94 
     95 skipif: (default 0)
     96    The OR of the bits in the Shift-flags any of which can cause the menu system
     97    to be skipped all together (0 means menu system always runs). It can also
     98    be a combination of "Alt","Ctrl","Shift","Caps","Ins","Scroll".
     99    When menu system starts it checks if any of the specified keys are On/pressed.
    100    If true, the system exits immediately and executes the skipcmd.
    101 
    102    e.g. setting it to "shift-alt-caps" means menu will be skipped if alt OR shift
    103    is pressed OR caps is on. setting to "0" means menu will always run.
    104 
    105 skipcmd: (default .exit)
    106    valid terminal commands: .exit .ignore or any syslinux command
    107    command to execute if menu system is skipped. This must be a non-trivial
    108    syslinux command if skipcondn is not "0". ".exit" means menu system
    109    quits back to the boot prompt.
    110 
    111 startfile: (default "")
    112    if non-empty the system will display the contents of this file before launching
    113    the menusystem. This happens only if the menusystem is not skipped. Can be used
    114    to display licensing, usage or welcome messages. A file with given name
    115    is expected to be found in the helpdir directory.
    116 
    117 exitcmd: (default .exit)
    118    valid terminal commands: .exit .repeat or any syslinux command
    119    The default command to execute when user quits the menu system.
    120 
    121 exitcmdroot: (default =exitcmd)
    122    Same as exitcmd except applies when current user has "root" privileges. If not
    123    specified, it is assumed to be the same as exitcmd
    124 
    125 timeout: (default 3000)
    126    The amount of time (in multiple of 0.1 seconds) to wait for user keypress. If no
    127    key pressed for specified duration then the timeoutcmd is executed.
    128 
    129 totaltimeout: (default 0)
    130    The total amount of time (in multiples of 0.1 seconds) the system will wait for
    131    user to make a decision. If no decision has been made in the specified duration
    132    totaltimeoutcmd will be executed
    133 
    134    NOTE: This does not include the time spent browsing the help system or
    135    the time taken for the user to enter his/her authentication credentials.
    136 
    137 timeoutcmd: (default .beep)
    138    valid terminal commands: .wait .enter .escape or any syslinux command
    139    command to execute when we timeout waiting for user input. The commands
    140    .enter and .escape tell the menu system to pretend the user typed ENTER or
    141    ESCAPE on the keyboard, while .wait tells the menusystem to wait for one
    142    more time period
    143 
    144 totaltimeoutcmd: (default .wait)
    145    choices are the same as for timeoutcmd
    146 
    147 MENU SETTINGS
    148 -------------
    149 
    150 title: (must be specified)
    151    Title of this menu
    152 
    153 row,col: [Usage not recomended]
    154    position in screen where this menu should be placed. By default the
    155    system will choose an appropriate location.
    156 
    157 ITEM ATTRIBUTES
    158 ---------------
    159 
    160 item:
    161       The string displayed to the user. Characters enclosed in < > are highlighted.
    162 
    163 shortcut: (default -1) valid values A-Za-z0-9 or -1 [Usage not recommended]
    164       Sets the shortcut key for this item. If set to -1, the system scans for the first
    165       highlighted letter in the given range and sets that as the shortcut key.
    166 
    167 info: (default same as data)
    168       Additional textual information displayed in the status bar
    169 
    170 type:
    171       the type of entry this item represents. This is one of the following:
    172 
    173       run:       choosing this will run something in SYSLINUX
    174                  use data to specify the actual command to execute
    175       exitmenu:  exit to parent menu
    176       submenu:   choosing will open up submenu
    177                  use data to specify the "nickname" of the menu
    178                  which should come here
    179       sep:       Position a separator here
    180       inactive:  menu item is disabled
    181       checkbox:  this is a checkbox
    182                  use state to set initial state
    183       invisible: User does not see this item
    184       radioitem: One choice in a radiomenu
    185       radiomenu: Allow user to choose one of many choices
    186                  (initial choice is always NULL)
    187       login:     Selecting this will allow user to login to system
    188 
    189 data:
    190       for run items, the syslinux command to execute
    191       for submenus and radiomenus, nickname of menu
    192       for checkboxes, string to be added to kernel command line (if set)
    193       for radioitems, string to be added to kernel command line (if chosen)
    194 
    195 ipappend:
    196       ipappend flag to pass to PXELINUX (harmless for other variants of SYSLINUX)
    197       See syslinux documentation for meaning of the FLAGS
    198 
    199 helpid: (default 65535 which is not a valid id)
    200       associates a context for the help system.
    201 
    202 state: (default 0)
    203       Initial state of a checkbox (for other items this has no meaning)
    204 
    205 perms: (default "")
    206       string containing the name of the permission which user must
    207       have to activate this item. For eg. if this item is a submenu
    208       then user needs the permission in order to open the submenu
    209 
    210 argsmenu: (default "")
    211       Name of the menu to be scanned for setting additional arguments to
    212       pass to command line when this item is chosen for execution. Submenus
    213       of specified menu are also scanned. Only checkboxes and radiomenu's
    214       are scanned. Items of other type in this menu is silently ignored.
    215 
    216 
    217 DOT COMMANDS
    218 ------------
    219 Dot commands are basically instructions to the menu system to do certain things.
    220 
    221 A "single command" is one of the following
    222 
    223 [NT] A syslinux command (any DOT command not starting with a "." is assumed to be this)
    224 [NT] .beep [n]
    225 [NT] .help <file>
    226 [NT] .nop
    227 [T]  .exit or .quit (equivalent)
    228 [T]  .repeat or .wait or .ignore (all three are equivalent)
    229 
    230 A dot command is a sequence of "single commands" separated by a "%". When a dot command
    231 is executed the system executes all the given "single commands" in the specified order.
    232 All the commands marked "[T]" are terminal commands, i.e. when the system encounters
    233 such a command it stops processing the dot command and returns the terminal command
    234 which caused the termination to the caller (who usually interprets the command
    235 appropriately).
    236 
    237 All commands marked with [NT] are non-terminal commands, i.e. once these commands are
    238 processed the system continues to process the remaining "single commands" specified in
    239 the "DOT COMMAND".
    240 
    241 Note: The case of a syslinux command is tricky. When executed, the command should never return
    242 (if the specified kernel exists) so the fact that we consider it a [NT] should be taken with
    243 a pinch of salt. However, if the syslinux command does return (in case of no kernel), then
    244 remaining "single commands" are processed. In particular "ker1 arg1 % ker2 arg2 % ker3 args"
    245 has the effect of executing the first kernel which exists
    246 
    247 .nop:
    248    Does nothing.
    249 .beep:
    250    .beep [n] produces a beep n times. n must be between 0 and 9. If not specified n=1.
    251    (hence .beep 0 is equivalent to .nop)
    252 .help:
    253    .help <file>
    254    Displays the help file <file> which is assumed to be in the "help" directory. Its name
    255    does not have to be in the form "hlpNNNNN.txt" (as required by the context sensitive help).
    256    Executing this command will mean the appropriate help screen is displayed till the user hits
    257    ESCAPE
    258 
    259 The meaning of the Terminal commands can vary with the context in which it is used. For example,
    260 a ".enter" or ".escape" does not have any meaning in the "onerrorcmd" context but it has a meaning
    261 in the "ontimeout" context. In case the user gives a Terminal command which does not make sense, it
    262 is upto the code (in this case adv_menu.tpl) to do what it pleases.
    263