Here is an example to describe the syntax of such a file:
?package(gnuplot):\ specifies what packages need to be installed needs=text\ what kind of terminal this command expects needs=X11: if this program runs only on X11 needs=text: if it only runs on text terminals (the window manager should spawn an xterm or rxvt in this case) needs=vc: runs only at linux console needs=wm: this starts another windowmanager section=Apps/Math\ in what section this menu entry should be title="Gnuplot"\ the title of the menu entry (please make it short!) command="/usr/bin/gnuplot" the command to run.
A program like gnuplot which can be run on X11 as well as on a text
terminal should not have an extra entry with needs=X11
because it will then be next to impossible to configure the window
managers to spawn rxvt
instead of the default xterm
.
On the other hand, if a program like emacs
can be run as real X
application as well as in a terminal two entries should be listed,
otherwise the program will always be run in an xterm
.
You should add a line like this to your postinst script (replacing $wm with the name of your window manager, or more precisely, the name of the menu-method in /etc/menu-methods):
if test -x /usr/bin/update-menus; then update-menus; fiand the postrm script should get the line
if test -x /usr/bin/update-menus; then update-menus; fi(that is, the same line in postinst and in postrm).
Please do not put your packages into any other sections without asking for permission first!
Apps - normal apps Editors - editors (run it in xterm, if nothing else) Emulators - dosemu, etc. Graphics - xpaint, xfig, xtiff, etc. Hammradio - Anything relating to hamradio. Math - gnuplot, octave, oleo, etc. Net - mail, news, web, irc, etc. Programming - debuggers, etc. Tools - other tools: xclock, xmag, xman, etc. Technical - technical stuff. Text - text oriented tools other than editors. Shells - bash, ksh, zsh, etc. Sound - TkMidity, etc. Viewers - Picture viewers, gs, etc. System - system administration and monitoring tools Games - games and recreations Adventure - walk around virtual space, zork, MOO's, etc Arcade - (any game where reflexes count) Board - Like: Gnuchess, pente, gnugo Card - solitare, etc Puzzles - Stuff from xpuzzles, ... Sports - Games derived from "real world" sports Strategy - Build your world (Games like lincity, freeciv) Tetris-like - games involving falling blocks Toys - (oneko, xeyes, etc.) Screen - Lock - xlock, etc. Save - Root-window - things that fill the root window WindowManagers - (change between fvwm, afterstep, etc) Modules - fvwm modules, etc. XShells - shells (like xterm, rxvt, ...)
Debian package maintainers should ensure that any icons they include for use in the debian menus conform to the following points:
$ mogrify -format xpm -geometry 32x32 -map cmap.xpm <filenames>If you, as a system admin, don't like the icons in the menus, simply remove the $%{icon} from the files in /etc/menu-methods/$wm, and run
update-menus
.It's also possible to specify an icon for a submenu. However, if each package would supply its own icons for the sub menus we can never be sure that the icon files are available. Thus, only the menu package is allowed to specify icons for sub menus. The syntax for this is:
X11 Apps menu/apps /usr/X11R6/include/X11/pixmap/icon.xpm "Editors"
fvwm2
to have a few buttons, you can install
files for those packages in /menu/$package, containing a menu entry
like this:
?Package(xmball):needs=button\ section=Games/Puzzles\ icon=path-to-pixmap.xpm\ title="Xmball"\ command=/usr/games/xmballThen, do the following:
cd /etc/menu-methods/ cp fvwm2 fvwm2button vi fvwm2buttonand remove all the "supported" entries, adding the one below. For the rest, leave everything the same except those listed below.
supported button="+ Style \"" $title "\" TitleIcon" $icon " Exec " $command "\n" endsupported startmenu: "AddToTitlebar \n" endmenu: "\n" submenutitle:"" mainmenu: genmenu: "buttondefs.hook"