9menu - create a menu to run commands
[ -bg background-color
] [ -display
] [ -file name
] [ -fg
] [ -font fname
] [ -geometry
] [ -iconic
] [ -label name
] [ -path
] [ -popup
] [ -shell prog
] [ -version
] [ -warp
is a simple program that accepts a list of menu item and command
pairs on the command line. It creates a window that consists of nothing but a
menu. When a particular item is selected, the corresponding command is
may be used to select an item.
Alternatively, the UP-ARROW and DOWN-ARROW cursor keys may be used to
highlight different items, with ENTER used to select the highlighted item.
Menu items and commands are separated by a colon. The colon and command are
optional. If they are missing, then the menu item is assumed to be a command
that can be executed directly.
A menu item consisting of the word exit
to exit when
it is selected. Otherwise, to stop 9menu ,
delete it using the window
manager. The exit
menu item can be anywhere in the list, although by
convention it is last. If a command is supplied along with the exit
item, that command is executed before 9menu
If a menu item's command starts with the word exec
operating after launching it.
accepts the following command line options, listed alphabetically:
- -bg background-color
- Set the background color to background-color. By
default, the background color is white.
- -display displayname
- Use the X display displayname, instead of the
- -file filename
- Read items to display from filename, in addition to
any other command line arguments. This is intended for use with #!
in scripts. If the filename is "-" read from stdin. A
filename of - causes 9menu to read items from
- -fg foreground-color
- Set the foreground color to foreground-color. By
default, the foreground color is black.
- -font fname
- Use the font fname, instead of one of the default
fonts built into 9wm.
- -geometry geom
- Use geom (a geometry in standard X format) as the
geometry of the menu. This is most useful for specifying the initial
location of the menu. Note that 9menu overrides the size part of
the geometry specification. The window is always just large enough to hold
- Start up in the iconified state.
- -label name
- Change both the window and icon labels of the window to
name. The default label is the last component of the path used to
run 9menu, typically, 9menu.
- Append the current directory to the command search
- Once an item is selected, the menu window automatically
- Act like a pop-up menu. Once a menu item is selected,
9menu exits. This option overrides -popdown.
- -shell prog
- Use prog as the shell to run commands, instead of
/bin/sh. A popular alternative shell is rc(1). If the shell
cannot be executed, 9menu then silently falls back to using
- Move the menu to where the mouse is when the menu is
uniconified. This option is particularly useful when combined with
- This option prints the version of 9menu on the
standard output, and then exits with an exit value of zero.
- Warp the mouse to the menu when the menu is uniconified.
After the selection is made, restore the mouse to where it was. This
option is particularly useful when combined with -popdown.
9menu -label Remotes xterm 'acme:rsh acme xterm' 'herman:rsh herman 9term' &
9menu -label 'X progs' ghostview xdvi xeyes xneko exit &
The Plan 9 Programmer's Manual
This man page documents 9menu
Source code is available from
The code with full history is also available via Git from
This program has grown to have too many options.
The initial idea for this program was by Arnold Robbins, after having worked
with John Mackin's GWM Blit emulation. Matty Farrow wrote a version using
libXg, from which some ideas were borrowed. This code was written by David
Hogan and Arnold Robbins. Rich Salz motivated the -shell
Christopher Platt motivated the -teleport
option. John O'Donnell
supplied the basic code for the -fg
Seebach provided the base code for the -file
Matthias Bauer made it work with the keyboard.