Debian Menu System
Chapter 6 - How a user can override the menus
6.1 Configuring the menus
Users can specify their own menu entries in the ~/.menu directory.
The files can have an arbitrary file name as long as the new syntax for the
menu entries is used. They should start with either
?package(installed-package):
or
?package(local.mystuff):
if it's something that isn't ``debian-officially'' installed. (Any ``package''
that starts with ``local.'' is considered installed.)
If users want to have their own menu methods, they should create a
~/.menu-methods directory and put all their menu methods in it.
(If ~/.menu-methods exists, /etc/menu-methods will
not be searched when a user runs update-menus).
A system administrator should place system-wide menu entries in
/etc/menu (not in /usr/share/menu/package, since
these files will probably be overwritten by a package upgrade).
6.2 Specifying that a menu entry should not be displayed
If a user wants to remove the entries of package from the system
menu then this will do the trick:
echo -n > ~/.menu/package
The zero-size file will tell update-menus that the corresponding
package should not have any menu entries listed. A system administrator can
remove menu entries system-wide with
echo -n > /etc/menu/package
6.3 Including other files
Historical comment by Joost:
More out of curiosity than anything else, I recently read the KDE mailing
list. In it I saw some discussion about how good the Debian menu system is
(whow, thanks, guys!), but one person found a missing feature: s/he said you
couldn't include other files in the user menu files. Well, actually, it was
already possible, but not very well documented.
To include the contents of the file /usr/share/menu/somefile, add
this to your menu file:
!include /usr/share/menu/somefile
Apart from that, it is of course possible to make the menu entry file
executable (chmod a+x ~/.menu/package), and do something like
#!/bin/sh
cat /usr/share/menu/somefile
sed -e "/unwanted_entry/s/?package(/?package(notinstalled./" \
/usr/share/menu/someotherfile
to get the same effect, with the added flexibility of being able to filter out
unwanted lines.