|
NAMEpdmenurc - menu definitions file for pdmenuSYNOPSIS/etc/pdmenurc~/.pdmenurc DESCRIPTIONThe pdmenurc file defines menus for pdmenu(1) to display. Each menu consists of one or more menu entries. The first menu to appear in the file is displayed by pdmenu(1) when it starts up, and can have menu entries that call up submenus.EXAMPLESHere is a sample pdmenurc file:#Set a pleasing color scheme. color:desktop:blue:blue color:title:blue:white color:base:blue:white #this is a comment menu:main:Main Menu:Things to do at foobar show:_Games..::games exec:_Mail::pine exec:_News::slrn -C exec:_WWW::lynx exec:_Irc::irc exec:_Directory _Listing:display:ls -l exec:_Who's online?:truncate:w exec:_Finger:edit,truncate:finger ~finger who?:~ nop exit:E_xit menu:games:Games:Some text-based games exec:_Tetris for Terminals::/usr/games/tt exec:_Adventure:pause:/usr/games/adventure exec:_Zork:pause:/usr/games/zork nop exit:_Back to main menu.. This will display a menu, with a submenu for games. FORMATpdmenu(1) doesn't care how the pdmenurc is indented; all whitespace is ignored. However, each command must be on its own line. The commands are grouped into two classes: those that appear only in menus, and those that can appear anywhere in the file.COMMANDS THAT MAY BE USED ANYWHEREThese commands may appear in a menu, or outside of a menu. They take effect as soon as pdmenu(1) sees them.
menu:menuid:title[:helptext]
title:text
color:screenpart:foreground[:background]
black gray
red brightred
green brightgreen
brown yellow
blue brightblue
magenta brightmagenta
cyan brightcyan
lightgray white
read:rcfile Note that no checking is done to prevent recursive read commands, and that such a recursive command can crash pdmenu.
preproc:command [args] Note that no checking is done to prevent recursive preproc commands, and that such a recursive command can crash pdmenu. COMMANDS THAT MUST APPEAR INSIDE MENUSThese commands must always appear within a menu. They are only executed if the user selects them from the menu.
show:desc:flags:menuid
To place a hotkey in the description, put a '_' before the character you want to become the hotkey. It is a good idea to differentiate submenus from commands in a menu by, for example, appending ".." to their descriptions.
nop[:text]
helptext:desc:flags:help text
exit:desc
To place a hotkey in the description, put a '_' before the character you want to become the hotkey.
group:desc
To place a hotkey in the description, put a '_' before the character you want to become the hotkey.
exec:desc:flags:command
Normally, pdmenu(1) passes the command to system(3) for exacution. However, if the first token of the command is "exec", then the command is executed directly with the execvp(3) system call. As such, the pdmenu(1) process is wholly replaced by the command.
To place a hotkey in the description, put a '_' before the character you want to become the hotkey.
Some of the flags conflict with each over, for example, 'display' and 'pause' cannot both be used at the same time. If conflicting flags are specified, Pdmenu will just pick one of them and use it. Note that to maintain backward compatability with old versions of Pdmenu, the flags can be formatted differently: as a sequence of characters, each character a flag and corrisponding to the first character of the long flag name, and nothing separating the characters. However, this format is obsolete and hard to understand, and should no longer be used.
When this flag is set, the command to be run is scanned for any tags of the format ~title:default~. For each that is found, a text entry window is displayed, with the title equal to the contents of the title field, and the default text equal to the contents of the default field. To use the '~' or ':' characters in the command without having them interpreted as tag delimiters, escape them with a '\' character. (Ie, '\~' and '\:') Security warning! Any exec command that uses the 'edit' flag will be a security hole. The user need only to enter text with a ';' in it, and they can run an arbitrary command after the semicolon! There is no fix for this security problem at this time. If the user running pdmenu(1) is not a trusted user (if they are a guest user, say), do not allow them access to any exec commands that have the 'edit' flag set.
Here is a sample use of this flag. It creates a menu of people who are logged on, and lets you talk to one of them. Notice the use of remove to clear the menu after we use it. group:_Talk exec::makemenu: \ echo "menu:talk:Talk"; \ for u in `users`; do \ echo "exec:$u::talk $u"; \ done show:::talk remove:::talk endgroup (Conflicts with: 'display', 'truncate', 'pause', 'display', 'setenv')
This flag causes pdmenu(1) to set a variable in its own environment. pdmenu(1) runs the exec command, and looks at the command's output. The first line should be in the format VAR=value
Where VAR is the environment variable to set, and value is the new value for the
variable.
For example, use "echo PWD=/tmp" to set the current working directory to /tmp. (Conflicts with: 'makemenu', 'display', 'truncate', and 'pause')
remove:desc:flags:menuid
To place a hotkey in the description, put a '_' before the character you want to become the hotkey.
This command is typically used after creating and using a new menu via the 'makemenu' flag to exec, to remove a menu that is no longer needed. For example, if you have the followng pdmenurc: menu:main:Main Menu group:_Test exec::makemenu: \ echo menu:sample:Dir; \ echo exec:_Directory:pause:ls show:::sample endgroup Each time the user selects "Test" from the Main Menu, the menu that appears has another Directory command on it. If you don't want this to happen, and you want only one Directory command to be on the menu, add a command to remove the menu after it is used, like this: menu:main:Main Menu group:_Test exec::makemenu: \ echo menu:sample:Dir; \ echo exec:_Directory:pause:ls show:::sample remove:::sample endgroup NOTESIf a line ends with '\', pdmenu(1) will read in the next line as part of the same logical line.If you want the ':' character to appear in a field, you may escape out the ':' character by placing '\' before it. You don't need to do this if the field is the last field in a line. FILES/usr/local/etc/pdmenurcDefault config file.
~/.pdmenurc
If this exists, it overrides
/usr/local/etc/pdmenurc.
AUTHORJoey Hess, <pdmenu@joeyh.name>.SEE ALSOpdmenu(1)
Visit the GSP FreeBSD Man Page Interface. |