| A .menu file can be used to describe basic menu structures which can be converted |
| into C code which can then be compiled into a .c32 file for use with SYSLINUX. |
| The format of a .menu file is similar to an ini file, but with important |
| differences. |
| |
| Lines starting with # and ; are treated as comments. Blank lines are used to |
| separate the attributes of one menu item from another. Multiple blank lines are |
| equivalent to a single one. In other contexts Blank lines are not significant. |
| |
| Menus |
| ----- |
| Each menu declaration starts with a line containing the name of menu in [ ]. |
| This is the "nickname" of the menu and should be different for different menus. |
| This is not visible to the user of the menu system. The initial menu must |
| be called "main" |
| |
| The menu declaration is followed by lines which set the attributes of the menu. |
| This is followed by a blank line and followed by declaration of menu items in |
| that menu. |
| |
| All lines which occur before the first menu declaration is considered as |
| a global declaration. |
| |
| Abstract Format |
| --------------- |
| |
| The overall format should look like this |
| |
| -------------------------------------------------------- |
| <GLOBAL SETTINGS> |
| |
| [menuname1] |
| |
| <MENU SETTINGS> |
| |
| <ITEM 1> |
| |
| ... |
| |
| <ITEM N> |
| |
| [menuname2] |
| |
| <MENU SETTINGS> |
| |
| <ITEM A> |
| |
| <ITEM B> |
| |
| ---------------------------------------------------------- |
| |
| GLOBAL SETTINGS |
| --------------- |
| The following global settings are now supported. Many of the keywords |
| accept what we call a "DOT COMMAND" as argument. Simply put they are |
| instructions to the menu system to perform certain actions. |
| The syntax and semantics of DOT COMMANDS are given later in the section |
| titled "DOT COMMANDS". |
| |
| videomode: (default 0xFF) [Use with care] |
| The textmode in which the whole menu system should operate. |
| Must be a number (use 0x notation for hexadecimal). |
| Lookup Ralph Brown Interrupt List and search for Video Mode |
| to find a number to put here. |
| |
| setting to 0xFF will mean, menu system will use the current |
| video mode. |
| |
| title: |
| The title of the whole menu system |
| |
| top, left, bot, right: (default 0,0,21,79) |
| The area of the screen used by the menu system. The remaining |
| part of the screen can be used by the user for anything. |
| |
| helpdir: (default /isolinux/help) |
| Location of the directory where help information is stored. The |
| help files must be called "hlpNNNNN.txt" where NNNNN is the helpid. |
| |
| pwdfile: (default /isolinux/passwd) |
| The name of the password file which contains user, password and permissions |
| See "passwd" file for details regarding format of this file |
| |
| editrow: (default 23) |
| the row on the screen where one can edit the command line. This must |
| be outside the menu area. Set this to a negative number to disable |
| editing the command line. In case of authenticated users, the current |
| user must have "editcmd" permissions to edit the command line |
| |
| pwdrow: (default 23) |
| The row on the screen used for user authentication. Must be outside |
| menu area (can be same as editrow). Set to negative to disable |
| user authentication |
| |
| skipif: (default 0) |
| The OR of the bits in the Shift-flags any of which can cause the menu system |
| to be skipped all together (0 means menu system always runs). It can also |
| be a combination of "Alt","Ctrl","Shift","Caps","Ins","Scroll". |
| When menu system starts it checks if any of the specified keys are On/pressed. |
| If true, the system exits immediately and executes the skipcmd. |
| |
| e.g. setting it to "shift-alt-caps" means menu will be skipped if alt OR shift |
| is pressed OR caps is on. setting to "0" means menu will always run. |
| |
| skipcmd: (default .exit) |
| valid terminal commands: .exit .ignore or any syslinux command |
| command to execute if menu system is skipped. This must be a non-trivial |
| syslinux command if skipcondn is not "0". ".exit" means menu system |
| quits back to the boot prompt. |
| |
| startfile: (default "") |
| if non-empty the system will display the contents of this file before launching |
| the menusystem. This happens only if the menusystem is not skipped. Can be used |
| to display licensing, usage or welcome messages. A file with given name |
| is expected to be found in the helpdir directory. |
| |
| exitcmd: (default .exit) |
| valid terminal commands: .exit .repeat or any syslinux command |
| The default command to execute when user quits the menu system. |
| |
| exitcmdroot: (default =exitcmd) |
| Same as exitcmd except applies when current user has "root" privileges. If not |
| specified, it is assumed to be the same as exitcmd |
| |
| timeout: (default 3000) |
| The amount of time (in multiple of 0.1 seconds) to wait for user keypress. If no |
| key pressed for specified duration then the timeoutcmd is executed. |
| |
| totaltimeout: (default 0) |
| The total amount of time (in multiples of 0.1 seconds) the system will wait for |
| user to make a decision. If no decision has been made in the specified duration |
| totaltimeoutcmd will be executed |
| |
| NOTE: This does not include the time spent browsing the help system or |
| the time taken for the user to enter his/her authentication credentials. |
| |
| timeoutcmd: (default .beep) |
| valid terminal commands: .wait .enter .escape or any syslinux command |
| command to execute when we timeout waiting for user input. The commands |
| .enter and .escape tell the menu system to pretend the user typed ENTER or |
| ESCAPE on the keyboard, while .wait tells the menusystem to wait for one |
| more time period |
| |
| totaltimeoutcmd: (default .wait) |
| choices are the same as for timeoutcmd |
| |
| MENU SETTINGS |
| ------------- |
| |
| title: (must be specified) |
| Title of this menu |
| |
| row,col: [Usage not recomended] |
| position in screen where this menu should be placed. By default the |
| system will choose an appropriate location. |
| |
| ITEM ATTRIBUTES |
| --------------- |
| |
| item: |
| The string displayed to the user. Characters enclosed in < > are highlighted. |
| |
| shortcut: (default -1) valid values A-Za-z0-9 or -1 [Usage not recommended] |
| Sets the shortcut key for this item. If set to -1, the system scans for the first |
| highlighted letter in the given range and sets that as the shortcut key. |
| |
| info: (default same as data) |
| Additional textual information displayed in the status bar |
| |
| type: |
| the type of entry this item represents. This is one of the following: |
| |
| run: choosing this will run something in SYSLINUX |
| use data to specify the actual command to execute |
| exitmenu: exit to parent menu |
| submenu: choosing will open up submenu |
| use data to specify the "nickname" of the menu |
| which should come here |
| sep: Position a separator here |
| inactive: menu item is disabled |
| checkbox: this is a checkbox |
| use state to set initial state |
| invisible: User does not see this item |
| radioitem: One choice in a radiomenu |
| radiomenu: Allow user to choose one of many choices |
| (initial choice is always NULL) |
| login: Selecting this will allow user to login to system |
| |
| data: |
| for run items, the syslinux command to execute |
| for submenus and radiomenus, nickname of menu |
| for checkboxes, string to be added to kernel command line (if set) |
| for radioitems, string to be added to kernel command line (if chosen) |
| |
| ipappend: |
| ipappend flag to pass to PXELINUX (harmless for other variants of SYSLINUX) |
| See syslinux documentation for meaning of the FLAGS |
| |
| helpid: (default 65535 which is not a valid id) |
| associates a context for the help system. |
| |
| state: (default 0) |
| Initial state of a checkbox (for other items this has no meaning) |
| |
| perms: (default "") |
| string containing the name of the permission which user must |
| have to activate this item. For eg. if this item is a submenu |
| then user needs the permission in order to open the submenu |
| |
| argsmenu: (default "") |
| Name of the menu to be scanned for setting additional arguments to |
| pass to command line when this item is chosen for execution. Submenus |
| of specified menu are also scanned. Only checkboxes and radiomenu's |
| are scanned. Items of other type in this menu is silently ignored. |
| |
| |
| DOT COMMANDS |
| ------------ |
| Dot commands are basically instructions to the menu system to do certain things. |
| |
| A "single command" is one of the following |
| |
| [NT] A syslinux command (any DOT command not starting with a "." is assumed to be this) |
| [NT] .beep [n] |
| [NT] .help <file> |
| [NT] .nop |
| [T] .exit or .quit (equivalent) |
| [T] .repeat or .wait or .ignore (all three are equivalent) |
| |
| A dot command is a sequence of "single commands" separated by a "%". When a dot command |
| is executed the system executes all the given "single commands" in the specified order. |
| All the commands marked "[T]" are terminal commands, i.e. when the system encounters |
| such a command it stops processing the dot command and returns the terminal command |
| which caused the termination to the caller (who usually interprets the command |
| appropriately). |
| |
| All commands marked with [NT] are non-terminal commands, i.e. once these commands are |
| processed the system continues to process the remaining "single commands" specified in |
| the "DOT COMMAND". |
| |
| Note: The case of a syslinux command is tricky. When executed, the command should never return |
| (if the specified kernel exists) so the fact that we consider it a [NT] should be taken with |
| a pinch of salt. However, if the syslinux command does return (in case of no kernel), then |
| remaining "single commands" are processed. In particular "ker1 arg1 % ker2 arg2 % ker3 args" |
| has the effect of executing the first kernel which exists |
| |
| .nop: |
| Does nothing. |
| .beep: |
| .beep [n] produces a beep n times. n must be between 0 and 9. If not specified n=1. |
| (hence .beep 0 is equivalent to .nop) |
| .help: |
| .help <file> |
| Displays the help file <file> which is assumed to be in the "help" directory. Its name |
| does not have to be in the form "hlpNNNNN.txt" (as required by the context sensitive help). |
| Executing this command will mean the appropriate help screen is displayed till the user hits |
| ESCAPE |
| |
| The meaning of the Terminal commands can vary with the context in which it is used. For example, |
| a ".enter" or ".escape" does not have any meaning in the "onerrorcmd" context but it has a meaning |
| in the "ontimeout" context. In case the user gives a Terminal command which does not make sense, it |
| is upto the code (in this case adv_menu.tpl) to do what it pleases. |