fvwm-menu-desktop(1)


NAME

   fvwm-menu-desktop - Reads XDG menu files and creates Fvwm menus

SYNOPSIS

   fvwm-menu-desktop  [ --help|-h ] [ --version ] [ --install-prefix DIR ]
   [  --desktop  NAME  ]  [  --menu-type  NAME  ]  [  --theme  NAME  ]   [
   --with-titles|-w  ]  [  --without-titles  ]  [  --enable-mini-icons ] [
   --size|-s NUM  ]  [  --mini-icon-dir  DIR  ]  [  --app-icon  NAME  ]  [
   --dir-icon  NAME  ]  [  --title|-t  NAME  ] [ --insert-in-menu NAME ] [
   --get-menus all|desktop ] [ --set-menus menu_paths ] [ --all-menus ]  [
   --include-items NAME ] [ --regen-cmd CMD ] [ --dynamic ] [ --verbose|-v
   ]

DESCRIPTION

   This is a python script which parses XDG  menus  definitions  to  build
   corresponding fvwm menus. This script depends on python-xdg to run.

OPTIONS

   Main Options

   --help Show the help and exit.

   --version
          Show the version and exit.

   --get-menus all|desktop
          Prints  a  space  separated list of full menu paths found on the
          system.  all will print all menus found  on  the  system  except
          empty  ones.   desktop  will  print  the  menu(s)  that would be
          generated by the script.

          No menu generation is done.

   --desktop NAME
          Optional parameter to set the NAME  of  the  desktop  XDG  .menu
          file(s)  to use. This option will override any default menus set
          via FvwmForm-XDGMenu-Config and cause the script to  find  menus
          in  which  NAME is a part of the file name.  Possible names are:
          gnome, kde, xfce, lxde, debian, etc.

          This option can be  used  in  conjunction  with  --menu-type  to
          control which .menu file(s) are used.

   --menu-type NAME
          Optional  parameter to set the NAME of the XDG menu type to use.
          This option will override any default menus  set  via  FvwmForm-
          XDGMenu-Config  and cause the script to find menus in which NAME
          is a part of the file  name.   Possible  NAME  types  could  be:
          applications, settings, preferences, etc.

          When  used  in conjunction with --desktop, only menus whose file
          name matches '*destkop*menutype*' are found.  If  no  menus  are
          found, the script exits with an error.

   --all-menus
          This option will build all menus found on the system. If used in
          conjunction with --desktop or --menu-type this  will  build  all
          menus matching those settings.

   --install-prefix DIR
          Optional  parameter  to  override the standard locations for XDG
          menu definitions. Tells fvwm-menu-desktop to  look  in  DIR  for
          .menu  files  instead  of  the standard locations /etc/xdg/menus
          (and $HOME/.config/menus if it exists).

   --with-titles|-w
          If this option is set menus are generated with titles.  This  is
          the  default.  This option can be used to override the FvwmForm-
          XDGMenu-Config default setting.

   --without-titles
          If this option is set menus are generated  without  titles.  The
          default is to generate with titles.

   --title|-t NAME
          Option  to  define  the  menu title NAME of the top menu used by
          Fvwm's Menu or Popup commands. Default is "XDGMenu".

   --include-items NAME
          This option controls if the additional menu  items  'Regenerate'
          and  'Configure' are included in the top level menu. NAME can be
          one of regen, config, both, or none. The default is both.

   --regen-cmd CMD
          This option sets the fvwm command CMD that is run when the  menu
          item  Regenerate'  is selected. The default is "PipeRead `fvwm-
          menu-desktop`".

   --dynamic
          This option is to be used  with  creating  dynamic  menus  using
          DynamicPopUpAction   and   DynamicPopDownAction.   This  adds  a
          'recreate' to the DestroyMenu command on the top level  menu  so
          those actions are not Destroyed when the menu is regenerated.

   --insert-in-menu NAME
          Option  to  insert  generated  menu(s)  IN  a menu NAME (its top
          title). This option makes it  so  the  top  level  menu  is  not
          Destroyed and the items are added to the end.

          Note  menus  regenerated  with  this option will append the menu
          items at the end of the existing menu. Each  time  the  menu  is
          regenerated  new  menu  items  appear  giving  a growing menu of
          duplicate items.  You have to regenerate the whole  menu  via  a
          function or restart fvwm. See EXAMPLES below for some solutions.

   --set-menus menu_paths
          Generates  all  menus  listed  in a space separated list of full
          menu  paths.    This   option   overrides   any   defaults   and
          --desktop|--menu-type settings.

   --verbose
          Enables additional information printouts on STDERR.

   Icons Options

          By  default,  fvwm-menu-desktop builds menus without mini-icons.
          To enable mini-icons use the following options.

          If ImageMagick is installed  on  the  system,  the  script  will
          resize and copy the icons to $FVWM_USERDIR/.icons. This can take
          awhile. You should be  prepared  to  wait  the  first  time  you
          generate  the  icons.  Once  the  icons  have been generated the
          script should run faster. If it is still to  slow  using  icons,
          see  EXAMPLES  for ways to limit how often the menu is generated
          to speed things up.

   --enable-mini-icons
          This option enables mini-icons in the menus. If set, 24x24 mini-
          icons are used. If the specified icon isn't that size it will be
          converted   if   ImageMagick   is   installed   and   saved   in
          $HOME/.fvwm/icons   or   to   the   directory   specified   with
          --mini-icon-dir option. Otherwise no icon appears  in  the  menu
          for  that  entry.  With most distributions, all the menu entries
          will have mini-icons appropriate to the application.

   --theme NAME
          Defines the used icon theme. Default is  gnome  but  all  others
          found in /usr/share/icons could be used except the hicolor theme
          because it's the default fallback theme if no icon is found.

   --size|-s NUM
          If --enable-mini-icons is used the size of the icons can changed
          with this parameter. Default is 24.

   --mini-icon-dir DIR
          When the right size mini-icon isn't available, fvwm-menu-desktop
          creates icons with the right size in $HOME/.fvwm/icons.  If  you
          don't  want to use the default directory, $HOME/.fvwm/icons, use
          this option to specify a different folder.

   --app-icon NAME
          Sets the default  application  icon  if  no  others  are  found.
          Default is gnome-applications'.

   --dir-icon NAME
          Sets  the default directory icon if no others are found. Default
          is gnome-fs-directory'.

USAGE

   fvwm-menu-desktop outputs XDG .menu files in the syntax of fvwm  menus.
   When  fvwm-menu-desktop  is  run with no options, it will load defaults
   from the FvwmForm-XDGMenu-Config file  (see  below)  then  search  your
   system  for  suitable menu file(s). To see which menus are available on
   your system run:

          fvwm-menu-desktop --get-menus all

   If no menus are found you may not have any installed on your system. By
   default   menus   are   stored   as  *.menu  files  in  /etc/xdg/menus,
   $HOME/.config/menus or the location set in  $XDG_MENU_PREFIX.  You  can
   use --install-prefix to specify another location search for menus.

   Though  a combination of command line options and the FvwmForm-XDGMenu-
   Config settings, fvwm-menu-desktop can generate any combination of  the
   menus  found.  To get a list of what menu(s) would be generated use the
   --get-menus desktop option. The following will list all menus generated
   if fvwm-menu-desktop was run with no options.

          fvwm-menu-desktop --get-menus desktop

   fvwm-menu-desktop determines which menu(s) to generate as follows

          If  no  config file is found, all menus will be weighted and the
          script will generate the best (highest weight) menu found.

          If a config file is found (and override options  are  not  used)
          the script will generate all menus selected in FvwmForm-XDGMenu-
          Config.

          --desktop,  --menu-type,  --set-menus   and   --all-menus   will
          override any menus selected in FvwmForm-XDGMenu-Config.

          --desktop  and  --menu-type  will  only include menus whose name
          matches '*desktop*menutype*'.  If  used  with  --all-menus,  all
          matching  menus are generated. If used without --all-menus, only
          the highest weighted menu is generated.

          --set-menus generates menus from the list of full path menu file
          names.

          --all-menus by itself will generate all menus found.

   By  default fvwm-menu-desktop will generate a menu whose top level name
   is "XDGMenu". To tell fvwm to read the output of  fvwm-menu-desktop  to
   create the menu XDGMenu add the following to your fvwm config file:

          PipeRead 'fvwm-menu-desktop'

   Warning:  Depending  on  the  options used this command may be slow and
   fvwm will pause until this command is complete. See EXAMPLES below  for
   more details and possible workarounds.

   Once  the  menu is generated you can open the menu by using the command
   "Menu XDGMenu". You can also include this in the MenuFvwmRoot menu by:

          AddToMenu MenuFvwmRoot "XDG Menu" Popup XDGMenu

   fvwm-menu-desktop can be configured though both  command  line  options
   and a FvwmForm GUI to customize the menu(s) that get generated.

GUI

   FvwmForm-XDGMenu-Config  is  a  FvwmForm  interface that can be used to
   configure the defaults for fvwm-menu-desktop. You can access this  from
   the "Configure" item in the top level menu that is generated or run the
   following from within FvwmConsole

          Module FvwmPerl -l fvwm-menu-desktop-config.fpl

   This form can be used to select which menu(s) get generated by  default
   along  with  setting  many (but not all) of the available options. When
   you click "Save Settings" the form will write a config file located  at
   $FVWM_USERDIR/.FvwmForm-XDGMenu-Config   that   fvwm-menu-desktop  will
   parse for defaults when run.

   See the help inside of FvwmForm-XDGMenu-Config for more information.

EXAMPLES

   There are many ways  to  setup  when  fvwm  runs  fvwm-menu-desktop  to
   generate  the  menu.  One method is to just generate the menu when fvwm
   loads and then use the GUI config tool to change any  options.   To  do
   this you only need to add the following to the fvwm config file:

          AddToMenu MenuFvwmRoot "XDG Menu" Popup XDGMenu
          PipeRead 'fvwm-menu-desktop'

   The  menu  is  created  once  when  fvwm loads. Since menu creation can
   sometimes be slow, this could cause fvwm to take longer  to  load  than
   one wants.

   The  menu  is only generated when fvwm starts. If software is installed
   or removed you will have to select the 'Regenerate' option  to  rebuild
   the menu.

   One  way  to  speed  things  up  is to save the menu in a file and only
   generate the menu  when  'Regenerate'  is  selected.  To  do  this  use
   --regen-cmd  to  call  a  custom  function and write the menu to a file
   using a command like

          fvwm-menu-desktop --regen-cmd XDGRegen > $FVWM_USERDIR/.XDGMenu

   Then add the following to the fvwm config file to define  the  function
   XDGRegen.  The  second  to last line will generate the menu if the menu
   file doesn't exist when fvwm starts.

          DestroyFunc XDGRegen
          AddToFunc XDGRegen
          + I PipeRead 'fvwm-menu-desktop --regen-cmd XDGRegen > \
              $[FVWM_USERDIR]/.XDGMenu; echo "Nop"'
          + I Read $[FVWM_USERDIR]/.XDGMenu

          Test (!f $[FVWM_USERDIR]/.XDGMenu) XDGRegen
          Read $[FVWM_USERDIR]/.XDGMenu

   Besides creating a top level menu,  fvwm-menu-desktop  can  insert  the
   menu  into  an  existing  menu  using  the --insert-in-menu option. For
   example one could create the menu  MenuFvwmRoot  and  include  the  XDG
   items at the end.

          DestroyMenu MenuFvwmRoot
          AddToMenu MenuFvwmRoot "Fvwm" Title
          + "Item1" Action1
            ...
          + "ItemN" ActionN
          + "" Nop
          PipeRead 'fvwm-menu-desktop --insert-in-menu MenuFvwmRoot'

   In this case the menu items are inserted at the end of the MenuFvwmRoot
   menu.  If no items are in the menu, this menu becomes MenuFvwmRoot. The
   problem  here  is,  that  you have to restart fvwm or rebuild the whole
   menu to Regenerate it because menu items cannot be removed.  To do this
   you could use a function like

          DestroyFunc XDGRegen
          AddToFunc XDGRegen
          + I DestroyMenu MenuFvwmRoot
          + I AddToMenu MenuFvwmRoot "Fvwm" Title
          + I AddToMenu MenuFvwmRoot "Item1" Action1
            ...
          + I AddToMenu MenuFvwmRoot "ItemN" ActionN
          + I AddToMenu MenuFvwmRoot "" Nop
          + I PipeRead 'fvwm-menu-desktop --insert-in-menu MenuFvwmRoot \
                        --regen-cmd XDGRegen'

   Fvwm  can  also  create  menus  dynamically by using DynamicPopUpAction
   and/or DynamicPopDownAction. These commands when used with a Menu  will
   run  a  Function  when the menu is opened. For example one could create
   the menu XDGMenu when it is opened using

          AddToMenu XDGMenu "XDGMenu" Title
          + DynamicPopUpAction PipeRead 'fvwm-menu-desktop'

   This will create the menu when it is opened. One issue here is it  will
   only create the menu the first time it is opened, and you still have to
   Regenerate the menu to see any changes. To create the menu each time it
   is open used the --dynamic option

          AddToMenu XDGMenu "XDGMenu" Title
          + DynamicPopUpAction PipeRead 'fvwm-menu-desktop \
                               --dynamic --include-items config'
          + DynamicPopDownAction DestroyMenu recreate XDGMenu

   This  will now Destroy the menu when it closed so it can be rebuilt the
   next time it is opened. The recreate flag  doesn't  completely  destroy
   the   menu  keeping  the  DynamicPopUpAction  and  DynamicPopDownAction
   actions.  The --dynamic  flag  includes  the  recreate  option  in  the
   generated menus.

   To insert a menu into MenuFvwmRoot and still be dynamic you need to use
   a function that generates the whole menu. For example

          DestroyFunc GenRootMenu
          AddToFunc GenRootMenu
          + I DestroyMenu recreate MenuFvwmRoot
          + I AddToMenu MenuFvwmRoot "Fvwm" Title
          + I AddToMenu MenuFvwmRoot "Item1" Action1
            ...
          + I AddToMenu MenuFvwmRoot "ItemN" ActionN
          + I AddToMenu MenuFvwmRoot "" Nop
          + PipeRead `fvwm-menu-desktop --insert-in-menu MenuFvwmRoot \
                     --include-items config`

          AddToMenu MenuFvwmRoot "Fvwm" Title
          + DynamicPopUpAction GenRootMenu
          + DynamicPopDownAction DestroyMenu recreate MenuFvwmRoot

BUGS

   The whole process of creating menus  from  files  is  slow.   Otherwise
   report bugs to the fvwm-workers mailing list <fvwm-workers@fvwm.org>.

AUTHORS

   This  script  is  based  on fvwm-xdg-menu.py written by Piotr Zielinski
   (http://www.cl.cam.ac.uk/~pz215/) who assigned  Licence:  GPL  2  Date:
   03.12.2005.

   The  script was reworked to replace the existing fvwm-menu-desktop perl
   script by the fvwm-workers.

COPYING

   The script is distributed by the same terms as  fvwm  itself.  See  GNU
   General Public License for details.





Opportunity


Personal Opportunity - Free software gives you access to billions of dollars of software at no cost. Use this software for your business, personal use or to develop a profitable skill. Access to source code provides access to a level of capabilities/information that companies protect though copyrights. Open source is a core component of the Internet and it is available to you. Leverage the billions of dollars in resources and capabilities to build a career, establish a business or change the world. The potential is endless for those who understand the opportunity.

Business Opportunity - Goldman Sachs, IBM and countless large corporations are leveraging open source to reduce costs, develop products and increase their bottom lines. Learn what these companies know about open source and how open source can give you the advantage.





Free Software


Free Software provides computer programs and capabilities at no cost but more importantly, it provides the freedom to run, edit, contribute to, and share the software. The importance of free software is a matter of access, not price. Software at no cost is a benefit but ownership rights to the software and source code is far more significant.


Free Office Software - The Libre Office suite provides top desktop productivity tools for free. This includes, a word processor, spreadsheet, presentation engine, drawing and flowcharting, database and math applications. Libre Office is available for Linux or Windows.





Free Books


The Free Books Library is a collection of thousands of the most popular public domain books in an online readable format. The collection includes great classical literature and more recent works where the U.S. copyright has expired. These books are yours to read and use without restrictions.


Source Code - Want to change a program or know how it works? Open Source provides the source code for its programs so that anyone can use, modify or learn how to write those programs themselves. Visit the GNU source code repositories to download the source.





Education


Study at Harvard, Stanford or MIT - Open edX provides free online courses from Harvard, MIT, Columbia, UC Berkeley and other top Universities. Hundreds of courses for almost all major subjects and course levels. Open edx also offers some paid courses and selected certifications.


Linux Manual Pages - A man or manual page is a form of software documentation found on Linux/Unix operating systems. Topics covered include computer programs (including library and system calls), formal standards and conventions, and even abstract concepts.