What is MenuMaker?

MenuMaker is a menu generation utility for X window managers on *NIX systems. It is capable of finding lots of installed programs and generating a root menu consistent across all supported X window managers, so one will get (almost) the same menu no matter what window manager is used.


MenuMaker is a 100% Python application. The minimum required Python version is 2.7; it should also run on Python 3.


The latest tarballs can be obtained from the project’s download page.

Supported X window managers

Getting started

The easiest way is to get the source distribution, unpack it into a temporary directory and perform the usual sequence:

./configure && make && make install

It is not required however as MenuMaker runs off the source tree as well. The MenuMaker's command-line driver is called mmaker.

The simplest MenuMaker invokation form is as follows:

mmaker your_window_manager

This command employs all available algorithms to find all installed applications and dumps a fully usable and consistent menu into the specified window manager’s default menu file. For the full list of available options consult MenuMaker help:

mmaker --help

A few tips & hints

  • Verbosity is controlled via the -v option. Specify it twice to get tons of debug output. MenuMaker runs silently by default.

  • The default policy is not to overwrite any existing files so there is less chance to kill valuable hand-crafted menu. To force overwriting files use -f flag.

  • Default MenuMaker operation is to dump menu to WM-specific file inside user’s home. Use -c flag to redirect this output to stdout. Useful for writing system-wide menus.

  • By default, MenuMaker generates fully formed and usable menu. To get only the part containing the applications found use -i flag. This output can be then #include’d into your custom frame menu. Note that this will not be a valid menu hence -c must also be specified (this is to forward the chunk to elsewhere).

  • By default, MenuMaker tries to eliminate the paths to executables wherever possible (for example, when an application can be found in PATH). To suppress this and always retain full paths use -p flag. Useful for debugging.

  • To specify the terminal emulator to run console applications use -t flag.

  • Flags started with --no- disable specific search algorithms.

  • -s is used to specify unwanted categories to omit from menu.

  • MenuMaker can be run stright out of the unpacked tarball without installation.

  • Upon installation the local documentantion is available in Texinfo form and can be accessed from command line as follows:

info mmaker


Send your comments and suggestions to Oleg A. Khlybov <fougas@mail.ru>