5 What packages with menu managers should do
Each package containing a _menu manager_ (i.e., a program that can
display a menu) should provide a script or program in
`/etc/menu-methods/' that can read the menu files. This script will be
executed by `update-menus', which will feed the menu entries to be
installed to your script via standard input (stdin).
The scripts in `/etc/menu-methods/' should be configuration files, so
the user can tune the behaviour of the script, and they must always
include the `/etc/menu-methods/menu.h' configuration file at the
beginning with the command `!include menu.h' For the same reason,
scripts in `/etc/menu-methods/' are requested to use the following
configurable functions: `title()' for the title (in place of `$title'),
`icon()' for the icon (in place of `$icon'), `term()' for running
`text' command under `X11'. `sections_translations()' for the list of
translations of sections name available. This later one is only defined
if you `!include lang.h'
Good examples for these scripts for nearly all Debian window managers
are included in the `menu' package in `/usr/share/doc/menu/examples'.
Note that while working on your script, you can use the tricks
described in "The internals of the menu package", section "The
update-menus program", to run just your script, instead of having
update-menus run all scripts (can save quite a lot of time).
This script should not be executable in the package. Instead the
`postinst' should add the execute bit and then run `update-menus' (if
it is executable).
Similarly, the `postrm' script when called with option "remove" should
remove the execute bit and run `update-menus' (if it is executable).
Here is an example of such a `postrm' script using `sh':
case "$1" in
if [ -f $inst ]; then
chmod a-x $inst
if [ -x /usr/bin/update-menus ]; then update-menus ; fi
#remove the files that install-menu creates:
rm -rf /var/lib/foo-wm/menu
echo "postrm called with unknown argument \`$1'" >&2
And here is a good example for a `postinst' script:
if [ -f $inst ]; then
chmod a+x $inst
if [ -x /usr/bin/update-menus ]; then
If you are using `debhelper', the program `dh_installmenu' can help
you do it.
Please, do not make your package _depend_ on the menu package! The
preferred way of telling dpkg that your wm can cooperate with menu is:
Please only consider using "depends" if you feel providing reasonable
defaults for systems without `menu' will make life very difficult for
automatically generated by info2www version 126.96.36.199