xdgmenumaker
George Vlahavas
%%mtime(%m/%d/%Y)
%!target: man
%!encoding: utf-8
= NAME =
xdgmenumaker - generate XDG menus
= SYNOPSIS =
**xdgmenumaker** [//OPTIONS//]
= DESCRIPTION =
**xdgmenumaker** is a command line tool, written in python, that
generates application menus using XDG information, by scanning
*.desktop files in all //$XDG_DATA_DIRS/applications// directories. All
applications are sorted according to the main categories as specified
by
[freedesktop.org http://standards.freedesktop.org/menu-spec/latest/apa.html]
The menu entries that are generated by **xdgmenumaker** are localised
according to the running user locale settings.
**xdgmenumaker** currently supports generating menus for:
- amiwm
- blackbox
- compizboxmenu
- fluxbox
- fvwm
- icewm
- jwm
- pekwm
- twm and compatible derivatives such as ctwm and vtwm
- windowmaker
**xdgmenumaker** requires //Python 2.7// or //3.x//, //pygtk//
(for Python 2.7) or //pygobject// and //gobject-instrospection//
(for Python 3.x), as well as //pyxdg//. //Pillow// is an optional
dependency (used by the **--max-icon-size** option).
= OPTIONS =
: **-f, --format**
specify the output format to use. Valid options are //amiwm//, //blackbox//,
//compizboxmenu//, //fluxbox//, //fvwm//, //icewm//, //jwm//, //pekwm//,
//twm// and //windowmaker//.
Specifying the output format is mandatory.
: **-i, --icons**
enable support for icons in the menus. This option does not have any
effect for //amiwm//, //blackbox// or //windowmaker// menus.
: **-s, --size**
set the preferred icon size in pixels. The default size is 16. You can
set this to any number, but it generally makes sense to use standard
icons sizes, like 16, 22, 24, 32 etc. Obviously this has an effect only
if the //--icons// option is used. You have to be careful with the sizes
you use; some window managers don't support large icons in the menu.
: **-n, --no-submenu**
do not create a submenu. Instead, place the application categories menus
in the window manager's main menu. This option does not have any effect
for //windowmaker// menus.
: **--max-icon-size**
restrict the maximum size for icons to the one specified with the
//--size// option. Any icons that are larger than the specified size
will get discarded and will not be used.
: **--no-svg**
do not use SVG icons even for the WMs that support it. Right now that
is only JWM.
: **--pekwm-dynamic**
create dynamic menus for pekwm. If you want to have dynamically
generated menus for pekwm you have to use this option. Do not use it if
you want to generate static menus for pekwm. Only works with //pekwm//
of course.
: **--twm-titles**
display menu titles in TWM menus. Naturally, only has an effect when
used with //twm//.
= GENERAL OPTIONS =
: **-h**
Prints a usage message briefly summarizing all command-line options
and exits.
= CONFIGURATION =
The terminal emulator to be used for menu entries that state that an
application must be launched inside a terminal, can be specified in a
//~/.config/xdgmenumaker.cfg// configuration file. Here's an example
specifying **rxvt** as the default terminal emulator:
```
[Terminal]
terminal = rxvt
```
If no such file is present, or if no terminal is set within the file,
xdgmenumaker will default to the one specified in the debian
alternatives system on debian and debian-like systems and to xterm in
any other case.
Setting the path to a terminal emulator in an //XDGMENUMAKERTERM//
environment variable will override any other setting.
= USAGE =
: **AmiWM**
You can generate a menu for AmiWM, running xdgmenumaker like this:
``$ xdgmenumaker -f amiwm > ~/.amiwm-xdgmenu``
As AmiWM does not support including other files in its settings file,
you'll have to copy the contents of the created file in your
//~/.amiwmrc//. It should be possible to create a script that would
generate the main //~/.amiwmrc// file from different "source" files, but
I'll leave that as an exercise to the user.
: **Blackbox**
To generate an application menu for Blackbox, you can run
**xdgmenumaker** like this:
``$ xdgmenumaker -f blackbox > ~/.blackbox/xdg_menu``
and then change your main Blackbox menu to include this file as a
submenu. For example, add this somewhere in your //~/.blackbox/menu// file:
``[include] (~/.blackbox/xdg_menu)``
You can add the **xdgmenumaker** command as another item in your menu,
if you want to update it, without having to run the command manually
again:
``[exec] (Update Blackbox Menu) {xdgmenumaker -f blackbox > ~/.blackbox/xdg_menu}``
: **Compiz Boxmenu**
There are two ways to have an xdg menu in compiz-boxmenu. The first one,
auto-updates the menu, every time the menu is called. The second one,
updates the menu only when the user wants to.
**Dynamic Menus**
Edit your //~/.config/compiz/boxmenu/menu.xml// file with your favorite text
editor and add a block of code like this inside the root //