Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
FVWM3MENUS(1)							 FVWM3MENUS(1)

NAME
       fvwm3menus - fvwm menus

MENUS
       Before a	menu can be opened, it has to be populated with	menu items
       using the AddToMenu command and bound to	a key or mouse button with the
       Key, PointerKey or Mouse	command	(there are many	other ways to invoke a
       menu too). This is usually done in the configuration file.

       Fvwm menus are extremely	configurable in	look and feel. Even the
       slightest nuances can be	changed	to the user's liking, including	the
       menu item fonts,	the background,	delays before popping up sub menus,
       generating menus	dynamically and	many other features. Please refer to
       the MenuStyle command to	learn more.

       Types of	Menus
	   There are four slightly different types of menus:

	   Popup menus can appear everywhere on	the screen on their own	or
	   attached to a part of a window. The Popup command opens popup
	   menus. If the popup menu was	invoked	with a mouse button held down,
	   it is closed	when the button	is released. The item under the
	   pointer is then activated and the associated	action is executed.

	   Normal menus	are very similar command, but slightly transient. When
	   invoked by clicking a mouse button, they stay open and can be
	   navigated with no button held. But if invoked by a button press
	   followed by mouse motion, it	behaves	exactly	like a popup menu. The
	   Menu	command	creates	normal menus.

	   "Sub	menus" are menus inside	other menus. When a menu item that has
	   the Popup command as	its action is selected,	the named menu is
	   opened as a sub menu	to the parent. Any type	of menu	can have sub
	   menus.

	   "Tear off menus" are	menus that have	been "torn off"	their original
	   context on the desktop like a normal	window.	They are created from
	   other menus by certain key presses or mouse sequences or with the
	   TearMenuOff command from inside a menu.

       Menu Anatomy
	   Menus consist of any	number of titles which are inactive menu items
	   that	usually	appear at the top of the menu, normal items triggering
	   various actions when	selected, separator lines between the items,
	   tear	off bars (a horizontal broken line) that tear off the menu
	   when	selected, and sub menu items indicated with a triangle
	   pointing left or right, depending on	the direction in which the sub
	   menu	appears. All the above menu items are optional.

	   Additionally, if the	menu is	too long to fit	on the screen, the
	   excess menu items are put in	a continuation menu and	a sub menu
	   with	the string "More..." is	placed at the bottom of	the menu. The
	   "More..." string honors the locale settings.

	   Finally, there may be a picture running up either side of the menu
	   (a "side bar").

       Menu Navigation
	   Menus are navigated with the	keyboard and the mouse.	Many people
	   prefer to use the mouse, but	it can be tedious. Keyboard navigation
	   can be much faster. While fvwm displays a menu, it can do nothing
	   else. For example, new windows do not appear	before the menu	is
	   closed. However, this is not	exactly	true for tear off menus. See
	   the Tear Off	Menus section for details.

       Mouse Navigation
	   Moving the pointer over a menu selects the item below it. Normally
	   this	is indicated by	a 3d border around the item, but not all parts
	   of a	menu can be selected. Pressing any mouse button	while a	menu
	   is open by default activates	the item below it. Items of a popup
	   menu	are also activated by releasing	a held mouse button. In	case
	   of an item that hides a sub menu, the sub menu is displayed if the
	   pointer hovers over the item	long enough or moves close to the
	   triangle indicating the sub menu. This behaviour can	be tuned with
	   menu	styles.

	   Scrolling a mouse wheel over	a menu either wraps the	pointer	along
	   the menu (default), scrolls the menu	under the pointer or act as if
	   the menu was	clicked	depending on the MouseWheel menu style.

	   Clicking on a selected item activates it - what happens exactly
	   depends on the type of the item.

	   Clicking on a title,	a separator, the side bar, or outside the menu
	   closes the menu (exception: tear off	menus can not be closed	this
	   way). Pressing mouse	button 2 over a	menu title or activating a
	   tear	off bar	creates	a tear off menu	from the current menu.
	   Clicking on a normal	menu item invokes the command that is bound to
	   it, and clicking on a sub menu item either closes all open menus
	   and replaces	them with the sub menu or posts	the menu (default).

	   Posting menus is meant to ease mouse	navigation. Once a sub menu is
	   posted, only	items from that	sub menu can be	selected. This can be
	   very	useful to navigate the menu if the pointer tends to stray off
	   the menu. To	unpost the menu	and revert back	to normal operation,
	   either click	on the same sub	menu item or press any key.

       Keyboard	Navigation
	   Just	like with mouse	navigation, the	item below the pointer is
	   selected. This is achieved by warping the pointer to	the menu items
	   when	necessary. While a menu	is open, all key presses are
	   intercepted by the menu. No other application can get keyboard
	   input (although this	is not the case	for tear off menus).

	   Items can be	selected directly by pressing a	hotkey that can	be
	   configured individually for each menu item. The hotkey is indicated
	   by underlining it in	the menu item label. With the AutomaticHotkeys
	   menu	style fvwm automatically assigns hotkeys to all	menu items.

	   The most basic keys to navigate through menus are the cursor	keys
	   (move up or down one	item, enter or leave a sub menu),

	   (activate item) and

	   (close menu). Numerous other	keys can be used to navigate through
	   menus by default:

	   Enter, Return, Space	activate the current item.

	   Escape, Delete, Ctrl-G exit the current sequence of menus or
	   destroy a tear off menu.

	   J, N, Cursor-Down, Tab, Meta-Tab, Ctrl-F, move to the next item.

	   K, P, Cursor-Up, Shift-Tab, Shift-Meta-Tab, Ctrl-B, move to the
	   prior item.

	   L, Cursor-Right, F enter a sub menu.

	   H, Cursor-Left, B return to the prior menu.

	   Ctrl-Cursor-Up, Ctrl-K Ctrl-P, Shift-Ctrl-Meta-Tab, Page-Up move up
	   five	items.

	   Ctrl-Cursor-Down, Ctrl-J Ctrl-N, Ctrl-Meta-Tab Page-Down move down
	   five	items.

	   Shift-P, Home, Shift-Cursor-Up, Ctrl-A move to the first item.

	   Shift-N, End, Shift-Cursor-Down, Ctrl-E move	to the last item.

	   Meta-P, Meta-Cursor-Up, Ctrl-Cursor-Left, Shift-Ctrl-Tab, move up
	   just	below the next separator.

	   Meta-N, Meta-Cursor-Down, Ctrl-Cursor-Right,	Ctrl-Tab, move down
	   just	below the next separator.

	   Insert opens	the "More..." sub menu if any.

	   Backspace tears off the menu.

       Menu Bindings
	   The keys and	mouse buttons used to navigate the menu	can be
	   configured using the	Key and	Mouse commands with the	special
	   context 'M',	possible combined with 'T' for the menu	title, 'I' for
	   other menu items, 'S' for any border	or sidepic, '['	for left
	   border including a left sidepic, ']'	for right border including a
	   right sidepic, '-' for top border, '' for bottom border. The	menu
	   context uses	its own	set of actions that can	be bound to keys and
	   mouse buttons. These	are _MenuClose,	MenuCloseAndExec,
	   MenuEnterContinuation, MenuEnterSubmenu, MenuLeaveSubmenu,
	   MenuMoveCursor, MenuCursorLeft, MenuCursorRight, MenuSelectItem,
	   MenuScroll and MenuTearOff.

	   It is not possible to override the key Escape with no modifiers for
	   closing the menu. Neither is	it possible to undefine	mouse button
	   1, the arrow	keys or	the enter key for minimal navigation.

	   MenuClose exits from	the current sequence of	menus or destroys a
	   tear	off menu.

	   MenuCloseAndExec exits from the current sequence of menus or
	   destroys a tear off menu and	executes the rest of the line as a
	   command.

	   MenuEnterContinuation opens the "More..." sub menu if any.

	   MenuEnterSubmenu enters a sub menu.

	   MenuLeaveSubmenu returns to the prior menu.

	   MenuMoveCursor n [m]	moves the selection to another item. If	the
	   first argument is zero the second argument specifies	an absolute
	   item	in the menu to move the	pointer	to. Negative items are counted
	   from	the end	of the menu. If	the first argument is non-zero,	the
	   second argument must	be omitted, and	the first argument specifies a
	   relative change in the selected item. The positions may be suffixed
	   with	a 's' to indicate that the items should	refer only to the
	   first items after separators.

	   MenuCursorLeft enters a sub menu with the SubmenusLeft menu style,
	   and returns to the prior menu with the SubmenusRight	menu style.

	   MenuCursorRight enters a sub	menu with the SubmenusRight menu
	   style, and returns to the prior menu	with the SubmenusLeft menu
	   style.

	   MenuSelectItem triggers the action for the menu item.

	   MenuScroll n	performs menu scrolling	according to the MouseWheel
	   menu	style with n items. The	distance can be	suffixed with an 's'
	   to indicate the items should	refer only to the first	items after
	   separators.

	   MenuTearOff turns a normal menu into	a "torn	off" menu. See Tear
	   Off Menus for details.

       Tear Off	Menus
	   A tear off menu is any menu that has	been "torn off"	the window it
	   was attached	to and pinned to the root window. There	are three ways
	   to tear off a menu: click on	the menu title with mouse button 2,
	   press

	   in the menu or activate its tear off	bar (a horizontal bar with a
	   broken line). Tear off bars must be added to	the menu as any	other
	   item	by assigning them the command TearMenuOff.

	   The builtin tear off	actions	can be overridden by undefining	the
	   builtin menu	actions	bound to tear off. To remove the builtin mouse
	   button 2 binding, use:

	       Mouse 2 MT A -

	   and to remove the builtin backspace binding,	use:

	       Key Backspace M A -

	   See the section Menu	Bindings for details on	how to assign other
	   bindings for	tear off.

	   Note	that prior to fvwm 2.5.20 the tear off mouse bindings were
	   redefined in	different way, which no	longer work.

	   The window containing the menu is placed as any other window	would
	   be. If you find it confusing	to have	your tear off menus appear at
	   random positions on the screen, put this line in your configuration
	   file:

	       Style fvwm_menu UsePPosition

	   To remove borders and buttons from a	tear-off menu but keep the
	   menu	title, you can use

	       Style fvwm_menu !Button 0, !Button 1
	       Style fvwm_menu !Button 2, !Button 3
	       Style fvwm_menu !Button 4, !Button 5
	       Style fvwm_menu !Button 6, !Button 7
	       Style fvwm_menu !Button 8, !Button 9
	       Style fvwm_menu Title, HandleWidth 0

	   A tear off menu is a	cross breeding between a window	and a menu.
	   The menu is swallowed by a window and its title is stripped off and
	   displayed in	the window title. The main advantage is	that the menu
	   becomes permanent - activating an item does not close the menu.
	   Therefore, it can be	used multiple times without reopening it. To
	   destroy such	a menu,	close its window or press the Escape key.

	   Tear	off menus behave somewhat differently than normal menus	and
	   windows. They do not	take the keyboard focus, but while the pointer
	   is over one of them,	all key	presses	are sent to the	menu. Other
	   fvwm	key bindings are disabled as long as the pointer is inside the
	   tear	off menu or one	of its sub menus. When the pointer leaves this
	   area, all sub menus are closed immediately. Note that the window
	   containing a	tear off menu is never hilighted as if it had the
	   focus.

	   A tear off menu is an independent copy of the menu it originated
	   from. As such, it is	not affected by	adding items to	that menu or
	   changing its	menu style.

	   To create a tear off	menu without opening the normal	menu first,
	   the option TearOffImmediately can be	added to the Menu or Popup
	   command.

   Building menu contents
       AddToMenu menu-name [menu-label action]
	   Begins or adds to a menu definition.	Typically a menu definition
	   looks like this:

	       AddToMenu Utilities Utilities Title
		+ Xterm		  Exec	exec xterm -e tcsh
		+ Rxvt		  Exec	exec rxvt
		+ "Remote Logins" Popup	Remote-Logins
		+ Top		  Exec	exec rxvt -T Top -n Top	-e top
		+ Calculator	  Exec	exec xcalc
		+ Xman		  Exec	exec xman
		+ Xmag		  Exec	exec xmag
		+ emacs		  Exec	exec xemacs
		+ Mail		  MailFunction xmh "-font fixed"
		+ ""		  Nop
		+ Modules	  Popup	Module-Popup
		+ ""		  Nop
		+ Exit Fvwm	  Popup	Quit-Verify

	   The menu could be invoked via

	       Mouse 1 R A Menu	Utilities Nop

	   or

	       Mouse 1 R A Popup Utilities

	   There is no end-of-menu symbol. Menus do not	have to	be defined in
	   a contiguous	region of the config file. The quoted (or first	word)
	   portion in the above	examples is the	menu label, which appears in
	   the menu when the user pops it up. The remaining portion is an fvwm
	   command which is executed if	the user selects that menu item. An
	   empty menu-label ("") and the Nop function are used to insert a
	   separator into the menu.

	   The keywords	DynamicPopUpAction and DynamicPopDownAction have a
	   special meaning when	used as	the name of a menu item. The action
	   following the keyword is executed whenever the menu is popped up or
	   down. This way you can implement dynamic menus. It is even possible
	   to destroy itself with DestroyMenu and the rebuild from scratch.
	   When	the menu has been destroyed (unless you	used the recreate
	   option when destroying the menu), do	not forget to add the dynamic
	   action again.

	   Note: Do not	trigger	actions	that require user interaction. They
	   may fail and	may screw up your menus. See the Silent	command.

	   Warning Do not issue	MenuStyle commands as dynamic menu actions.
	   Chances are good that this crashes fvwm.

	   The keyword Greyed will still render	the menu item, but will	grey
	   it out making the option unselectable.

	   There are several configurable scripts installed together with fvwm
	   for automatic menu generation. They have their own man pages. Some
	   of them, specifically fvwm-menu-directory and fvwm-menu-desktop,
	   may be used with DynamicPopupAction to create a directory listing
	   or GNOME/KDE	application listing.

	   Example (File browser):

	       # You can find the shell	script fvwm_make_browse_menu.sh
	       # in the	utils/ directory of the	distribution.
	       AddToMenu BrowseMenu
	       + DynamicPopupAction PipeRead \
	       'fvwm_make_browse_menu.sh BrowseMenu'

	   Example (Picture menu):

	       # Build a menu of all .jpg files	in
	       # $HOME/Pictures
	       AddToMenu JpgMenu foo title
	       + DynamicPopupAction Function MakeJpgMenu

	       AddToFunc MakeJpgMenu
	       + I DestroyMenu recreate	JpgMenu
	       + I AddToMenu JpgMenu Pictures Title
	       + I PipeRead 'for i in $HOME/Pictures/*.jpg; \
	       do echo AddToMenu JpgMenu "`basename $i`" Exec xv $i; done'

	   The keyword MissingSubmenuFunction has a similar meaning. It	is
	   executed whenever you try to	pop up a sub menu that does not	exist.
	   With	this function you can define and destroy menus on the fly. You
	   can use any command after the keyword, but if the name of an	item
	   (that is a submenu) defined with AddToFunc follows it, fvwm
	   executes this command:

	       Function	<function-name>	<submenu-name>

	   i.e.	the name is passed to the function as its first	argument and
	   can be referred to with "$0".

	   The fvwm-menu-directory script mentioned above may be used with
	   MissingSubmenuFunction to create an up to date recursive directory
	   listing.

	   Example:

	       # There is another shell	script fvwm_make_directory_menu.sh
	       # in the	utils/ directory of the	distribution. To use it,
	       # define	this function in your configuration file:

	       DestroyFunc MakeMissingDirectoryMenu
	       AddToFunc MakeMissingDirectoryMenu
	       + I PipeRead fvwm_make_directory_menu.sh	$0

	       DestroyMenu SomeMenu
	       AddToMenu SomeMenu
	       + MissingSubmenuFunction	MakeMissingDirectoryMenu
	       + "Root directory" Popup	/

	   This	is another implementation of the file browser that uses	sub
	   menus for subdirectories.

	   Titles can be used within the menu. If you add the option top
	   behind the keyword Title, the title is added	to the top of the
	   menu. If there was a	title already, it is overwritten.

	       AddToMenu Utilities Tools Title top

	   All text up to the first Tab	in the menu label is aligned to	the
	   left	side of	t the menu, all	text right of the first	is aligned to
	   the left in a second	column and all text thereafter is placed right
	   aligned in the third	column.	All other s are	replaced by spaces.
	   Note	that you can change this format	with the ItemFormat option of
	   the MenuStyle command.

	   If the menu-label contains an ampersand ('&'), the next character
	   is taken as a hot-key for the menu item. Hot-keys are underlined in
	   the label. To get a literal '&', insert "&&". Pressing the hot-key
	   moves through the list of menu items	with this hot-key or selects
	   an item that	is the only one	with this hot-key.

	   If the menu-label contains a	sub-string which is set	off by stars,
	   then	the text between the stars is expected to be the name of an
	   image file to insert	in the menu. To	get a literal '', insert "*".
	   For example

	       + Calculator*xcalc.xpm* Exec exec xcalc

	   inserts a menu item labeled "Calculator" with a picture of a
	   calculator above it.	The following:

	       + *xcalc.xpm*	       Exec exec xcalc

	   Omits the "Calculator" label, but leaves the	picture.

	   If the menu-label contains a	sub-string which is set	off by percent
	   signs, then the text	between	the percent signs is expected to be
	   the name of image file (a so	called mini icon to insert to the left
	   of the menu label. A	second mini icon that is drawn at the right
	   side	of the menu can	be given in the	same way. To get a literal
	   '%',	insert "%%". For example

	       + Calculator%xcalc.xpm% Exec exec xcalc

	   inserts a menu item labeled "Calculator" with a picture of a
	   calculator to the left. The following:

	       + %xcalc.xpm%	       Exec exec xcalc

	   Omits the "Calculator" label, but leaves the	picture. The pictures
	   used	with this feature should be small (perhaps 16x16).

	   If the menu-name (not the label) contains a sub-string which	is set
	   off by at signs ('@'), then the text	between	them is	expected to be
	   the name of an image	file to	draw along the left side of the	menu
	   (a side pixmap). You	may want to use	the SidePic option of the
	   MenuStyle command instead. To get a literal '@', insert "@@". For
	   example

	       AddToMenu StartMenu@linux-menu.xpm@

	   creates a menu with a picture in its	bottom left corner.

	   If the menu-name also contains a sub-string surrounded by '^'s,
	   then	the text between '^'s is expected to be	the name of an X11
	   color and the column	containing the side picture is colored with
	   that	color. You can set this	color for a menu style using the
	   SideColor option of the MenuStyle command. To get a literal '^',
	   insert "^^".	Example:

	       AddToMenu StartMenu@linux-menu.xpm@^blue^

	   creates a menu with a picture in its	bottom left corner and colors
	   with	blue the region	of the menu containing the picture.

	   In all the above cases, the name of the resulting menu is name
	   specified, stripped of the substrings between the various
	   delimiters.

       DestroyMenu [recreate] menu
	   Deletes a menu, so that subsequent references to it are no longer
	   valid. You can use this to change the contents of a menu during an
	   fvwm	session. The menu can be rebuilt using AddToMenu. The optional
	   parameter recreate tells fvwm not to	throw away the menu completely
	   but to throw	away all the menu items	(including the title).

	       DestroyMenu Utilities

       Title
	   Does	nothing. It is used to insert a	title line in a	popup or menu.

   Commands that open menus
       Menu menu-name [position] [double-click-action]
	   Causes a previously defined menu to be popped up in a sticky
	   manner. That	is, if the user	invokes	the menu with a	click action
	   instead of a	drag action, the menu stays up.	The command
	   double-click-action is invoked if the user double-clicks a button
	   (or hits the	key rapidly twice if the menu is bound to a key) when
	   bringing up the menu. If the	double click action is not specified,
	   double clicking on the menu does nothing. However, if the menu
	   begins with a menu item (i.e. not with a title or a separator) and
	   the double click action is not given, double	clicking invokes the
	   first item of the menu (but only if the pointer really was over the
	   item).

	   The pointer is warped to where it was when the menu was invoked if
	   it was both invoked and closed with a keystroke.

	   The position	arguments allow	placement of the menu somewhere	on the
	   screen, for example centered	on the visible screen or above a title
	   bar.	Basically it works like	this: you specify a context-rectangle
	   and an offset to this rectangle by which the	upper left corner of
	   the menu is moved from the upper left corner	of the rectangle. The
	   position arguments consist of several parts:

	   [context-rectangle] x y [special options]

	   The context-rectangle can be	one of:

	   Root
	       the root	window of the current screen.

	   Monitor
	       the area	of the current RandR screen.

	   Mouse
	       a 1x1 rectangle at the mouse position.

	   Window
	       the frame of the	context	window.

	   Interior
	       the inside of the context window.

	   Title
	       the title of the	context	window or icon.

	   Button<n>
	       button <n> of the context window.

	   Icon
	       the icon	of the context window.

	   Menu
	       the current menu.

	   Item
	       the current menu	item.

	   Context
	       the current window, menu	or icon.

	   This
	       whatever	widget the pointer is on (e.g. a corner	of a window or
	       the root	window).

	   Rectangle <_geometry_>
	       the rectangle defined by	<_geometry_> in	X geometry format.
	       Width and height	default	to 1 if	omitted.

	       If the context-rectangle	is omitted or invalid (e.g. "item" on
	       a window), "Mouse" is the default. Note that not	all of these
	       make sense under	all circumstances (e.g.	"Icon" if the pointer
	       is on a menu).

	       The offset values x and y specify how far the menu is moved
	       from its	default	position. By default, the numeric value	given
	       is interpreted as a percentage of the context rectangle's width
	       (height), but with a trailing 'm' the menu's width (height) is
	       used instead. Furthermore a trailing 'p'	changes	the
	       interpretation to mean pixels.

	       Instead of a single value you can use a list of values. All
	       additional numbers after	the first one are separated from their
	       predecessor by their sign. Do not use any other separators.

	       If x or y are prefixed with "'o<number>"	where <number> is an
	       integer,	the menu and the rectangle are moved to	overlap	at the
	       specified position before any other offsets are applied.	The
	       menu and	the rectangle are placed so that the pixel at <number>
	       percent of the rectangle's width/height is right	over the pixel
	       at <number> percent of the menu's width/height. So "o0" means
	       that the	top/left borders of the	menu and the rectangle
	       overlap,	with "o100" it's the bottom/right borders and if you
	       use "o50" they are centered upon	each other (try	it and you
	       will see	it is much simpler than	this description). The default
	       is "o0".	The prefix "o<number>" is an abbreviation for
	       "+<number>-<number>m".

	       A prefix	of 'c' is equivalent to	"o50". Examples:

		   # window list in the	middle of the screen
		   WindowList Root c c

		   # menu to the left of a window
		   Menu	name window -100m c+0

		   # popup menu	8 pixels above the mouse pointer
		   Popup name mouse c -100m-8p

		   # somewhere on the screen
		   Menu	name rectangle 512x384+1+1 +0 +0

		   # centered vertically around	a menu item
		   AddToMenu foobar-menu
		    + "first item" Nop
		    + "special item" Popup "another menu" item +100 c
		    + "last item" Nop

		   # above the first menu item
		   AddToMenu foobar-menu
		    + "first item" Popup "another menu"	item +0	-100m

	       Note that you can put a sub menu	far off	the current menu so
	       you could not reach it with the mouse without leaving the menu.
	       If the pointer leaves the current menu in the general direction
	       of the sub menu the menu	stays up.

	   Special options

	       To create a tear	off menu without opening the normal menu, add
	       the option TearOffImmediately. Normally the menu	opens in
	       normal state for	a split	second before being torn off. As
	       tearing off places the menu like	any other window, a position
	       should be specified explicitly:

		   # Forbid fvwm to place the menu window
		   Style <name of menu>	UsePPosition
		   # Menu at top left corner of	screen
		   Menu	Root 0p	0p TearOffImmediately

	       The Animated and	Mwm or Win menu	styles may move	a menu
	       somewhere else on the screen. If	you do not want	this you can
	       add Fixed as an option. This might happen for example if	you
	       want the	menu always in the top right corner of the screen.

	       Where do	you want a menu	to appear when you click on its	menu
	       item? The default is to place the title under the cursor, but
	       if you want it where the	position arguments say,	use the
	       SelectInPlace option. If	you want the pointer on	the title of
	       the menu, use SelectWarp	too. Note that these options apply
	       only if the PopupAsRootMenu MenuStyle option is used.

	       The pointer is warped to	the title of a sub menu	whenever the
	       pointer would be	on an item when	the sub	menu is	popped up
	       (fvwm menu style) or never warped to the	title at all (Mwm or
	       Win menu	styles). You can force (forbid)	warping	whenever the
	       sub menu	is opened with the WarpTitle (NoWarp) option.

	       Note that the special-options do	work with a normal menu	that
	       has no other position arguments.

       Popup PopupName [position] [default-action]
	   This	command	has two	purposes: to bind a menu to a key or mouse
	   button, and to bind a sub menu into a menu. The formats for the two
	   purposes differ slightly. The position arguments are	the same as
	   for Menu. The command default-action	is invoked if the user clicks
	   a button to invoke the menu and releases it immediately again (or
	   hits	the key	rapidly	twice if the menu is bound to a	key). If the
	   default action is not specified, double clicking on the menu	does
	   nothing. However, if	the menu begins	with a menu item (i.e. not
	   with	a title	or a separator)	and the	default	action is not given,
	   double clicking invokes the first item of the menu (but only	if the
	   pointer really was over the item).

	   To bind a previously	defined	pop-up menu to a key or	mouse button:

	   The following example binds mouse buttons 2 and 3 to	a pop-up
	   called "Window Ops".	The menu pops up if the	buttons	2 or 3 are
	   pressed in the window frame,	side-bar, or title-bar,	with no
	   modifiers (none of shift, control, or meta).

	       Mouse 2 FST N Popup "Window Ops"
	       Mouse 3 FST N Popup "Window Ops"

	   Pop-ups can be bound	to keys	through	the use	of the Key command.
	   Pop-ups can be operated without using the mouse by binding to keys
	   and operating via the up arrow, down	arrow, and enter keys.

	   To bind a previously	defined	pop-up menu to another menu, for use
	   as a	sub menu:

	   The following example defines a sub menu "Quit-Verify" and binds it
	   into	a main menu, called "RootMenu":

	       AddToMenu Quit-Verify
		+ "Really Quit Fvwm?" Title
		+ "Yes,	Really Quit"  Quit
		+ "Restart Fvwm"      Restart
		+ ""		      Nop
		+ "No, Don't Quit"    Nop

	       AddToMenu RootMenu "Root	Menu" Title
		+ "Open	XTerm Window" Popup NewWindowMenu
		+ "Login as Root"     Exec exec	xterm -T Root -n Root -e su -
		+ "Login as Anyone"   Popup AnyoneMenu
		+ "Remote Hosts"      Popup HostMenu
		+ ""		      Nop
		+ "X utilities"	      Popup Xutils
		+ ""		      Nop
		+ "Fvwm	Modules"      Popup Module-Popup
		+ "Fvwm	Window Ops"   Popup Window-Ops
		+ ""		      Nop
		+ "Previous Focus"    Prev (AcceptsFocus) Focus
		+ "Next	Focus"	      Next (AcceptsFocus) Focus
		+ ""		      Nop
		+ "Refresh screen"    Refresh
		+ ""		      Nop
		+ "Reset X defaults"  Exec xrdb	-load \
				$HOME/.Xdefaults
		+ ""		      Nop
		+ ""		      Nop
		+ Quit		      Popup Quit-Verify

	   Popup differs from Menu in that pop-ups do not stay up if the user
	   simply clicks. These	are popup-menus, which are a little hard on
	   the wrist. Menu menus stay up on a click action. See	the Menu
	   command for an explanation of the interactive behavior of menus. A
	   menu	can be open up to ten times at once, so	a menu may even	use
	   itself or any of its	predecessors as	a sub menu.

       TearMenuOff
	   When	assigned to a menu item, it inserts a tear off bar into	the
	   menu	(a horizontal broken line). Activating that item tears off the
	   menu. If the	menu item has a	label, it is shown instead of the
	   broken line.	If used	outside	menus, this command does nothing.
	   Examples:

	       AddToMenu WindowMenu
	       + I "" TearMenuOff

	       AddToMenu RootMenu
	       + I "click here to tear me off" TearMenuOff

   Menu	style commands
       Menu styles describe the	looks and behaviour like normal	styles do for
       windows.	Menu styles are	assigned to individual or all menus, and
       changing	the menu style immediately affects all menus that use it. (If
       a menu style is used from within	a menu,	the changes are	applied	the
       next time an affected menu is opened.)

       ChangeMenuStyle menustyle menu ...
	   Changes the menu style of menu to menustyle.	You may	specify	more
	   than	one menu in each call of ChangeMenuStyle.

       CopyMenuStyle orig-menustyle dest-menustyle
	   Copy	orig-menustyle to dest-menustyle, where	orig-menustyle is an
	   existing menu style.	If the menu style dest_menustyle does not
	   exist, then it is created.

       DestroyMenuStyle	menustyle
	   Deletes the menu style named	menustyle and changes all menus	using
	   this	style to the default style, you	cannot destroy the default
	   menu	style.

	       DestroyMenuStyle	pixmap1

       MenuStyle stylename [options]
	   Sets	a new menu style or changes a previously defined style.	The
	   stylename is	the style name;	if it contains spaces or tabs it has
	   to be quoted. The name "" is	reserved for the default menu style.
	   The default menu style is used for every menu-like object (e.g. the
	   window created by the *WindowList command) that had not be assigned
	   a style using the ChangeMenuStyle. See also DestroyMenuStyle. When
	   using monochrome color options are ignored.

	   options is a	comma separated	list containing	some of	the keywords
	   Fvwm	/ Mwm /	Win, BorderWidth, HilightBack /	!HilightBack,
	   HilightTitleBack, ActiveFore	/ !ActiveFore, MenuColorset,
	   ActiveColorset, GreyedColorset, TitleColorset, Hilight3DThick /
	   Hilight3DThin / Hilight3DOff, Hilight3DThickness, Animation /
	   !Animation, Font, TitleFont,	PopupDelay, PopupOffset, TitleWarp /
	   !TitleWarp, TitleUnderlines0	/ TitleUnderlines1 / TitleUnderlines2,
	   SeparatorsLong / SeparatorsShort, TrianglesSolid / TrianglesRelief,
	   PopupImmediately / PopupDelayed, PopdownImmediately /
	   PopdownDelayed, PopupActiveArea, DoubleClickTime, SidePic,
	   SideColor, PopupAsRootMenu /	PopupAsSubmenu / PopupIgnore /
	   PopupClose, RemoveSubmenus /	HoldSubmenus, SubmenusRight /
	   SubmenusLeft, SelectOnRelease, ItemFormat, VerticalItemSpacing,
	   VerticalMargins, VerticalTitleSpacing, AutomaticHotkeys /
	   !AutomaticHotkeys, UniqueHotkeyActivatesImmediate /
	   !UniqueHotkeyActivatesImmediate, MouseWheel,	ScrollOffPage /
	   !ScrollOffPage, TrianglesUseFore / !TrianglesUseFore, Translucent /
	   !Translucent.

	   In the above	list some options are listed as	option pairs or
	   triples with	a '/' in between. These	options	exclude	each other.
	   All paired options can be negated to	have the effect	of the
	   counterpart option by prefixing ! to	the option.

	   Fvwm, Mwm, Win reset	all options to the style with the same name in
	   former versions of fvwm. The	default	for new	menu styles is Fvwm
	   style. These	options	override all others except HilightBack,
	   ActiveFore and PopupDelay, so they should be	used only as the first
	   option specified for	a menu style or	to reset the style to defined
	   behavior. The same effect can be created by setting all the other
	   options one by one.

	   Mwm and Win style menus popup sub menus automatically. Win menus
	   indicate the	current	menu item by changing the background to	dark.
	   Fvwm	sub menus overlap the parent menu, Mwm and Win style menus
	   never overlap the parent menu.

	   Fvwm	style is equivalent to !HilightBack, Hilight3DThin,
	   !ActiveFore,	!Animation, Font, PopupOffset 0	67, TitleWarp,
	   TitleUnderlines1, SeparatorsShort, TrianglesRelief, PopupDelayed,
	   PopdownDelayed, PopupDelay 150, PopdownDelay	150, PopupAsSubmenu,
	   HoldSubmenus, SubmenusRight,	BorderWidth 2, !AutomaticHotkeys,
	   UniqueHotkeyActivatesImmediate, PopupActiveArea 75.

	   Mwm style is	equivalent to !HilightBack, Hilight3DThick,
	   !ActiveFore,	!Animation, Font, PopupOffset -3 100, !TitleWarp,
	   TitleUnderlines2, SeparatorsLong, TrianglesRelief,
	   PopupImmediately, PopdownDelayed, PopdownDelay 150, PopupAsSubmenu,
	   HoldSubmenus, SubmenusRight,	BorderWidth 2,
	   UniqueHotkeyActivatesImmediate, !AutomaticHotkeys, PopupActiveArea
	   75.

	   Win style is	equivalent to HilightBack, Hilight3DOff, ActiveFore,
	   !Animation, Font, PopupOffset -5 100, !TitleWarp, TitleUnderlines1,
	   SeparatorsShort, TrianglesSolid, PopupImmediately, PopdownDelayed,
	   PopdownDelay	150, PopupAsSubmenu, RemoveSubmenus, SubmenusRight,
	   BorderWidth 2, UniqueHotkeyActivatesImmediate, !AutomaticHotkeys,
	   PopupActiveArea 75.

	   BorderWidth takes the thickness of the border around	the menus in
	   pixels. It may be zero to 50	pixels.	The default is 2. Using	an
	   invalid value reverts the border width to the default.

	   HilightBack and !HilightBack	switch hilighting the background of
	   the selected	menu item on and off. The ActiveColorset background
	   color is used for the hilighting.

	   HilightTitleBack switches hilighting	the background of menu titles
	   on. The TitleColorset background color is used for the hilighting.

	   ActiveFore and !ActiveFore switch hilighting	the foreground of the
	   selected menu item on and off. The ActiveColorset foreground	color
	   is used for the hilighting.

	   MenuColorset	controls the colorset used to color the	menu. If the
	   colorset has	a pixmap or gradient defined, this is used as the
	   background of the menu. The shape mask from the colorset is used to
	   shape the menu. Please refer	to the Colorsets section for details
	   about colorsets.

	   ActiveColorset controls the color of	the active menu	item, provided
	   the HilightBack or ActiveFore menu styles are used. If specified,
	   the hilight and shadow colors from the colorset are used too. The
	   pixmap and shape mask from the colorset are not used. Hilighting
	   the background or foreground	can be turned off individually with
	   the !ActiveFore or !HilightBack menu	styles.

	   GreyedColorset works	exactly	like MenuColorset, but the foreground
	   from	the colorset replaces the color	given with the Greyed menu
	   style. No other parts of the	colorset are used.

	   TitleColorset works exactly like MenuColorset, but is used only for
	   menu	titles.

	   Translucent controls	a pseudo transparent effect that uses a	image
	   of the desktop under	the menu as its	background image. This option
	   takes one value that	is a number between 0 (fully translucent) and
	   100 (not translucent), which	is the percent of the translucency.
	   Use !Translucent (or	no additional value) to	turn the effect	off.
	   The translucent effect only applies to normal menus and does	not
	   apply to "torn off" menus. Note, only the menu background is
	   translucent,	the HilightBack	of the active item and
	   HilightTitleBack of the title are not. To have a fully translucent
	   menu	use the	following.

	       MenuStyle * Translucent 60, !HilightBack, !HilightTitleBack, ActiveFore

	   Hilight3DThick, Hilight3DThin and Hilight3DOff determine if the
	   selected menu item is hilighted with	a 3D relief. Thick reliefs are
	   two pixels wide, thin reliefs are one pixel wide.

	   Hilight3DThickness takes one	numeric	argument that may be between
	   -50 and +50 pixels. With negative values the	menu item gets a
	   pressed in look. The	above three commands are equivalent to a
	   thickness of	2, 1 and 0.

	   Animation and !Animation turn menu animation	on or off. When
	   animation is	on, sub	menus that do not fit on the screen cause the
	   parent menu to be shifted to	the left so the	sub menu can be	seen.

	   Font	and TitleFont take a font name as an argument. If a font by
	   this	name exists it is used for the text of all menu	items. If it
	   does	not exist or if	the name is left blank the built-in default is
	   used. If a TitleFont	is given, it is	used for all menu titles
	   instead of the normal font.

	   PopupDelay requires one numeric argument. This value	is the delay
	   in milliseconds before a sub	menu is	popped up when the pointer
	   moves over a	menu item that has a sub menu. If the value is zero no
	   automatic pop up is done. If	the argument is	omitted	the built-in
	   default is used. Note that the popup	delay has no effect if the
	   PopupImmediately option is used since sub menus pop up immediately
	   then.

	   PopupImmediately makes menu items with sub menus pop	up it up as
	   soon	as the pointer enters the item.	The PopupDelay option is
	   ignored then. If PopupDelayed is used fvwm looks at the PopupDelay
	   option if or	when this automatic popup happens.

	   PopdownDelay	works exactly like PopupDelay but determines the
	   timeout of the PopupDelayed style.

	   PopdownImmediately makes sub	menus vanish as	soon as	the pointer
	   leaves the sub menu and the correspondent item in the parent	menu.
	   With	the opposite option PopdownDelayed the sub menu	only pops down
	   after the time specified with the PopdownDelay option. This comes
	   handy when the pointer often	strays off the menu item when trying
	   to move into	the sub	menu. Whenever there is	a conflict between the
	   PopupImmediately, PopupDelayed, PopupDelay styles and the
	   PopdownImmediately, PopdownDelayed, PopdownDelay styles, the
	   Popup... styles win when using mouse	navigation and the Popdown...
	   styles win when navigating with the keyboard.

	   PopupOffset requires	two integer arguments. Both values affect
	   where sub menus are placed relative to the parent menu. If both
	   values are zero, the	left edge of the sub menu overlaps the left
	   edge	of the parent menu. If the first value is non-zero the sub
	   menu	is shifted that	many pixels to the right (or left if
	   negative). If the second value is non-zero the menu is moved	by
	   that	many percent of	the parent menu's width	to the right or	left.

	   PopupActiveArea requires an integer value between 51	and 100.
	   Normally, when the pointer is over a	menu item with a sub menu and
	   the pointer enters the area that starts at 75% of the menu width,
	   the sub menu	is shown immediately. This percentage can be changed
	   with	PopupActiveArea. Setting this value to 100 disables this kind
	   of automatic	popups altogether. The default value is	restored if no
	   or an invalid value is given.

	   TitleWarp and !TitleWarp affect if the pointer warps	to the menu
	   title when a	sub menu is opened or not. Note	that regardless	of
	   this	setting	the pointer is not warped if the menu does not pop up
	   under the pointer.

	   TitleUnderlines0, TitleUnderlines1 and TitleUnderlines2 specify how
	   many	lines are drawn	below a	menu title.

	   SeparatorsLong and SeparatorsShort set the length of	menu
	   separators. Long separators run from	the left edge all the way to
	   the right edge. Short separators leave a few	pixels to the edges of
	   the menu.

	   TrianglesSolid and TrianglesRelief affect how the small triangles
	   for sub menus is drawn. Solid triangles are filled with a color
	   while relief	triangles are hollow.

	   DoubleClickTime requires one	numeric	argument. This value is	the
	   time	in milliseconds	between	two mouse clicks in a menu to be
	   considered as a double click. The default is	450 milliseconds. If
	   the argument	is omitted the double click time is reset to this
	   default.

	   SidePic takes the name of an	image file as an argument. The picture
	   is drawn along the left side	of the menu. The SidePic option	can be
	   overridden by a menu	specific side pixmap (see AddToMenu). If the
	   file	name is	omitted	an existing side pixmap	is removed from	the
	   menu	style.

	   SideColor takes the name of an X11 color as an argument. This color
	   is used to color the	column containing the side picture (see
	   above). The SideColor option	can be overridden by a menu specific
	   side	color (see AddToMenu). If the color name is omitted the	side
	   color option	is switched off.

	   PopupAsRootMenu, PopupAsSubmenu, PopupIgnore	and PopupClose change
	   the behavior	when you click on a menu item that opens a sub menu.
	   With	PopupAsRootMenu	the original menu is closed before the sub
	   menu	appears, with PopupAsSubmenu it	is not,	so you can navigate
	   back	into the parent	menu. Furthermore, with	PopupAsSubmenu the sub
	   menu	is held	open (posted) regardless of where you move the mouse.
	   Depending on	your menu style	this may simplify navigating through
	   the menu. Any keystroke while a menu	is posted reverts the menu
	   back	to the normal behavior.	With PopupClose	the menu is closed
	   when	a sub menu item	is activated, and the menu stays open if
	   PopupIgnore is used (even if	the menu was invoked with the Popup
	   command). PopupAsSubmenu is the default.

	   RemoveSubmenus instructs fvwm to remove sub menu when you move back
	   into	the parent menu. With HoldSubmenus the sub menu	remains
	   visible. You	probably want to use HoldSubmenus if you are using the
	   PopupDelayed	style. RemoveSubmenus affects menu navigation with the
	   keyboard.

	   SelectOnRelease takes an optional key name as an argument. If the
	   given key is	released in a menu using this style, the current menu
	   item	is selected. This is intended for WindowList navigation. The
	   key name is a standard X11 key name as defined in
	   /usr/include/X11/keysymdef.h, (without the XK_ prefix), or the
	   keysym database /usr/X11R6/lib/X11/XKeysymDB. To disable this
	   behavior, omit the key name.

	   Note: Some X	servers	do not support KeyRelease events.
	   SelectOnRelease does	not work on such a machine.

	   ItemFormat takes a special string as	its argument that determines
	   the layout of the menu items. Think of the format string as if it
	   were	a menu item. All you have to do	is tell	fvwm where to place
	   the different parts of the menu item	(i.e. the labels, the triangle
	   denoting a sub menu,	the mini icons and the side pic) in the	blank
	   area. The string consists of	spaces,

	   characters and formatting directives	beginning with '%'. Any
	   invalid characters and formatting directives	are silently ignored:

	   %l, %c and %r
	       Insert the next item label. Up to three labels can be used. The
	       item column is left-aligned (%l), centered (%c) or
	       right-aligned (%r).

	   %i
	       Inserts the mini	icon.

	   %> and %<
	       Insert the sub menu triangle pointing either to the right (%>)
	       or to the left (%<).

	   %|
	       The first %| denotes the	beginning of the area that is
	       highlighted either with a background color or a relief (or
	       both). The second %| marks the end of this area.	%| can be used
	       up to twice in the string. If you do not	add one	or both	of
	       them, fvwm sets the margins to the margins of the whole item
	       (not counting the side picture).

	   %s
	       Places the side picture either at the beginning or the end of
	       the menu. This directive	may be used only once and only as the
	       first or	last in	the format string. If the %s is	not at the
	       beginning of the	string,	menus are not drawn properly.

	   Space, Tab, %Space and %Tab
	       Add gap of one space, or	a tab, using the width of the menu
	       font. When using	a tab, the size	of the gap can be one to 8
	       spaces since the	tab position is	a multiple of 8	from the edge
	       of the menu. The	whole string must be quoted if spaces or tabs
	       are used.

	   %p
	       Like Space and Tab %p inserts an	empty area into	the item, but
	       with better control of its size (see below).

	   You can define an additional	space before and after each of the
	   objects like	this

	       %left.rightp

	   This	means: if the object is	defined	in the menu (e.g. if it	is %s
	   and you use a side picture, or it is	%l for the third column	and
	   there are items defined that	actually have a	third column), then
	   add left pixels before the object and right pixels after it.	You
	   may leave out the left or the .right	parts if you do	not need them.
	   All values up to the	screen width are allowed. Even negative	values
	   can be used with care. The p	may be replaced	with any other
	   formatting directives described above.

	   Note: Only items defined in the format string are visible in	the
	   menus. So if	you do not put a %s in there you do not	see a side
	   picture, even if one	is specified.

	   Note: The SubmenusLeft style	changes	the default ItemFormat string,
	   but if it was set manually it is not	modified.

	   Note: If any	unformatted title of the menu is wider than the	widest
	   menu	item, the spaces between the different parts of	the menu items
	   are enlarged	to match the width of the title. Leading left aligned
	   objects in the format string	(%l, %i, %<, first %|) stick to	the
	   left	edge of	the menu and trailing right aligned objects (%r, %i,
	   %>, second %|) stick	to the right edge. The gaps between the
	   remaining items are enlarged	equally.

	   Examples:

	       MenuStyle * ItemFormat "%.4s%.1|%.5i%.5l%.5l%.5r%.5i%2.3>%1|"

	   Is the default string used by fvwm: (side picture + 4 pixels	gap)
	   (beginning of the hilighted area + 1	pixel gap) (mini icon +	5p)
	   (first column left aligned +	5p) (second column left	aligned	+ 5p)
	   (third column right aligned + 5p) (second mini icon + 5p) (2p + sub
	   menu	triangle + 3p) (1p + end of hilighted area).

	       MenuStyle * ItemFormat "%.1|%3.2<%5i%5l%5l%5r%5i%1|%4s"

	   Is used by fvwm with	the SubmenusLeft option	below.

	   VerticalItemSpacing and VerticalTitleSpacing	control	the vertical
	   spacing of menu items and titles like ItemFormat controls the
	   horizontal spacing. Both take two numeric arguments that may	range
	   from	-100 to	+100. The first	is the gap in pixels above a normal
	   menu	item (or a menu	title),	the second is the gap in pixels	below
	   it. Negative	numbers	do not make much sense and may screw up	the
	   menu	completely. If no arguments are	given or the given arguments
	   are invalid,	the built-in defaults are used:	one pixel above	the
	   item	or title and two below.

	   VerticalMargins can be used to add some padding at the top and
	   bottom of menus. It takes two numeric arguments that	must be
	   positive integers (or zero).	If the number of arguments or its
	   values are incorrect, fvwm defaults both to 0, which	means no
	   padding at all. If the values are correct, the first	one is used
	   for the top margin, and the second one is used for the bottom
	   margin.

	   SubmenusLeft	mirrors	the menu layout	and behavior. Sub menus	pop up
	   to the left,	the sub	menu triangle is drawn left and	the mini icon
	   and side picture are	drawn at the right side	of the menu. The
	   default is SubmenusRight. The position hints	of a menu are also
	   affected by this setting, i.e. position hints using item or menu as
	   context rectangle and position hints	using m	offsets.

	   AutomaticHotkeys and	!AutomaticHotkeys control the menu's ability
	   to automatically provide hot-keys on	the first character of each
	   menu	item's label. This behavior is always overridden if an
	   explicit hot-key is assigned	in the AddToMenu command.

	   UniqueHotkeyActivatesImmediate and !UniqueHotkeyActivatesImmediate
	   controls how	menu items are invoked when used with hotkeys. By
	   default, if a given menu entry only has one completeable match for
	   a given hotkey, the action for that menu entry is invoked and the
	   menu	is closed. This	is due to the UniqueHotkeyActivatesImmediate
	   option. However, the	menu can be told to remain open, waiting for
	   the user to invoke the selected item	instead	when there is only one
	   matched item	for a given hotkey, by using the
	   !UniqueHotkeyActivatesImmediate option.

	   MouseWheel controls the ability to scroll the menu using a mouse
	   wheel. It takes one argument, that can be one of ScrollsPointer,
	   ScrollsMenu,	ScrollsMenuBackwards or	ActivatesItem. ScrollsPointer
	   makes the mouse wheel scroll	the pointer over a menu. This is the
	   default. ScrollsMenu	and ScrollsMenuBackwards scroll	the menu
	   beneath the pointer.	ActivatesItem disables scrolling by mouse
	   wheel and makes the use of a	mouse wheel act	as if the menu was
	   clicked. If no argument is supplied the default setting is
	   restored.

	   ScrollOffPage allows	a menu to be scrolled out of the visible area
	   if MouseWheel is set	to ScrollsMenu or ScrollsMenuBackwards.	This
	   is the default. The opposite, !ScrollOffPage	disables this
	   behaviour.

	   TrianglesUseFore draws sub menu triangles with the foreground color
	   of the menu colorset	(normally drawn	with the hilight color).
	   !TrianglesUseFore disables this behaviour.

				  2023-08-29			 FVWM3MENUS(1)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=fvwm3menus&sektion=1&manpath=FreeBSD+Ports+14.3.quarterly>

home | help