263 lines
10 KiB
Plaintext
263 lines
10 KiB
Plaintext
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.
|