(menu.info)Chapter 5


Next: Chapter 6 Prev: Chapter 4 Up: Top
Enter node , (file) or (file)node

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':

       #!/bin/sh
       set -e
       inst=/etc/menu-methods/#PACKAGE#
       case "$1" in
          remove)
             if [ -f $inst ]; then
                     chmod a-x $inst
                     if [ -x /usr/bin/update-menus ]; then update-menus ; fi
             fi
          ;;
          purge)
              #remove the files that install-menu creates:
              rm -rf /var/lib/foo-wm/menu
          ;;
          upgrade);;
          *)
              echo "postrm called with unknown argument \`$1'" >&2
              exit 0
          ;;
       esac

And here is a good example for a 'postinst' script:

       #!/bin/sh
       set -e
       inst=/etc/menu-methods/#PACKAGE#
       if [ -f $inst ]; then
           chmod a+x $inst
           if [ -x /usr/bin/update-menus ]; then
               update-menus
           fi
       fi

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:

        Suggests: menu

Please only consider using "depends" if you feel providing reasonable
defaults for systems without 'menu' will make life very difficult for
you.


automatically generated by info2www version 1.2.2.9