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 dynam-
     ically  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  at-
	 tached  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 acti-
	 vated and the associated action is executed.

	 Normal menus are very similar command, but slightly transient. When in-
	 voked 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 Tear-
	 MenuOff 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  se-
	 lected,  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 ac-
	 tivated 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  se-
	 lected.  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 config-
	 ured individually for each menu item. The hotkey is indicated by under-
	 lining 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_, Menu-
	 CloseAndExec,	MenuEnterContinuation,	MenuEnterSubmenu,  MenuLeaveSub-
	 menu,	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 indi-
	 cate 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  bro-
	 ken 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 bind-
	 ings for tear off.

	 Note that prior to fvwm 2.5.20 the tear off mouse bindings  were  rede-
	 fined 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 dis-
	 played 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  win-
	 dows.	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) por-
	 tion 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-la-
	 bel  ("")  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 ap-
	 plication 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  exe-
	 cuted	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.A 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 Miss-
	 ingSubmenuFunction 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  com-
	 mand 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 speci-
	 fied, 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 parame-
	 ter 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 in-
	 voked 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  noth-
	 ing. However, if the menu begins with a menu item (i.e.A not with a ti-
	 tle  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  ar-
	 guments 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 inter-
	     preted 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  pix-
	     els.

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

	     If x or y are prefixed with "'o<number>" where <number> is an inte-
	     ger,  the menu and the rectangle are moved to overlap at the speci-
	     fied 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 ab-
	     breviation 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 explic-
	     itly:

		 # 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.A 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 sim-
	 ply 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 win-
     dows. 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  ex-
	 isting  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 style-
	 name 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,  Hi-
	 light3DThickness,  Animation / !Animation, Font, TitleFont, PopupDelay,
	 PopupOffset, TitleWarp /  !TitleWarp,	TitleUnderlines0  /  TitleUnder-
	 lines1  /  TitleUnderlines2,  SeparatorsLong / SeparatorsShort, Triang-
	 lesSolid / TrianglesRelief, PopupImmediately / PopupDelayed, PopdownIm-
	 mediately / PopdownDelayed, PopupActiveArea, DoubleClickTime,	SidePic,
	 SideColor, PopupAsRootMenu / PopupAsSubmenu / PopupIgnore / PopupClose,
	 RemoveSubmenus  / HoldSubmenus, SubmenusRight / SubmenusLeft, SelectOn-
	 Release, ItemFormat, VerticalItemSpacing, VerticalMargins,  VerticalTi-
	 tleSpacing,  AutomaticHotkeys	/  !AutomaticHotkeys,  UniqueHotkeyActi-
	 vatesImmediate    /	!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 op-
	 tions	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  indi-
	 cate 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, Sepa-
	 ratorsShort, TrianglesRelief, PopupDelayed, PopdownDelayed,  PopupDelay
	 150,  PopdownDelay  150,  PopupAsSubmenu,  HoldSubmenus, SubmenusRight,
	 BorderWidth 2, !AutomaticHotkeys, UniqueHotkeyActivatesImmediate, Popu-
	 pActiveArea 75.

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

	 Win style is equivalent to HilightBack, Hilight3DOff, ActiveFore, !Ani-
	 mation, Font, PopupOffset -5 100, !TitleWarp, TitleUnderlines1, Separa-
	 torsShort, TrianglesSolid, PopupImmediately, PopdownDelayed, PopdownDe-
	 lay  150, PopupAsSubmenu, RemoveSubmenus, SubmenusRight, BorderWidth 2,
	 UniqueHotkeyActivatesImmediate, !AutomaticHotkeys, PopupActiveArea 75.

	 BorderWidth takes the thickness of the border around the menus in  pix-
	 els.  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 se-
	 lected 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 col-
	 orset 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  col-
	 orsets.

	 ActiveColorset controls the color of the active menu item, provided the
	 HilightBack  or  ActiveFore menu styles are used. If specified, the hi-
	 light 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 !Hi-
	 lightBack 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 !Translu-
	 cent (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 se-
	 lected 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  nor-
	 mal 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,  Pop-
	 upDelayed,  PopupDelay  styles  and  the PopdownImmediately, PopdownDe-
	 layed, PopdownDelay styles, the Popup... styles win  when  using  mouse
	 navigation  and the Popdown... styles win when navigating with the key-
	 board.

	 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  par-
	 ent  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  alto-
	 gether.  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 re-
	 lief 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  over-
	 ridden 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 Pop-
	 upAsRootMenu 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.A 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 mar-
	     gins to the margins of the whole item (not counting the  side  pic-
	     ture).

	 %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  en-
	 larged 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) (be-
	 ginning of the hilighted area + 1 pixel gap) (mini icon  +  5p)  (first
	 column left aligned + 5p) (second column left aligned + 5p) (third col-
	 umn 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 spac-
	 ing  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  ar-
	 guments  are given or the given arguments are invalid, the built-in de-
	 faults 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.A  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 con-
	 trols 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. Activate-
	 sItem 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). !Triangle-
	 sUseFore disables this behaviour.

				   2026-06-27			   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+15.1.quarterly>

home | help