Denu is a tool to assist in menu generation. It can generate similarly structured menus for various window managers enabling easy transitions from one WM/DE to another. Denu is available from the berlios project page here http://developer.berlios.de/projects/denu/. What sets Denu apart is its ability to sync to the online database, which allows program definitions to be updated without a software update. Portage provides the installed program data. This data is then compared to the definitions and the entries are added. The GUI of Denu is first for cross-WM menu editors/generators. Within this article the basics of Denu will be covered.
To install Denu please download the current ebuild from the berlios project site and place it into your portage overlay under x11-misc. After doing that emerge it and Denu will be installed. Before we go any further backup any menu configurations you don't want overwritten. Now as the USER run Denu. Denu is not meant to be run as root. This will get you to a screen similar to below. Labels have been added to all of the buttons for convenience.
The first step after installing Denu is to run Update and Sysupdate. Update will up the definitions for programs while Sysupdate will update the current list of installed programs. Please note that neither of these will be run at the startup of Denu. This means that after installing a new program via portage Sysupdate will need to be clicked in order for it to show up in the Installed Tree.
To create a menu there are two approaches. The first is where you can hand pick entries from the Installed Tree and add them. Or you can hit Autofill and Denu will automatically generate a menu based on the information it has. It will include all the programs appearing in the installed tree. Reorganizing the menu is as simple as drag and drop. All menu systems EXCEPT gnome and KDE will leave the order as is. Gnome and KDE will order things alphabetically. To add a program click Add and to remove Rem. To add a new folder click Folder.
Specials are lines which are inserted into the menu when their position is reached. Many of these specials are WM specific but some are global. The WM specific ones will only be inserted when the menu for the corresponding WM is generated. Global specials are similar except they contain multiple definitions of how to add a common menu item(such as separators) to different WMs. Each special will have the icon of the specific window manager or a globe for the global specials. To add a special to the menu click Add and to remove click rem.
The last step is to generate the menu. This is achieved by clicking generate and then one of the boxes corresponding to your WM/DE. For some window managers it will take immediate effect (fluxbox) and others may need to be reconfigured or restarted.
As of now approximately half of the portage has been gone through to see which items need to be in a gui menu. This means that some could be left out. However, it is easy to add a program to Denu which will in turn submit it to the online database. Here is how you add a program. Click Add Program. Fill in Portage id with the corresponding portage name (ie. x11-misc/denu or net-www/mozilla-firefox). Fill in Names with the name per entry for the defined portage id. Multiple names/categories/commands are separated with a '$'. Fill in Categories with the default menu position in the structure. Please note with Denu 2.x this only effects Autofill. An example of the categories would be |Office or |Media|Graphics. In the latter example the entry would be in the folder Graphics within the Media folder. The commands are simply the command(s) separated by '$'s. It is important that the Names, categories and Commands all have the same number of entries (separated by '$'s) otherwise errors will occur.
Hopefully this article has shed some light on Denu. The menu structures can be saved and shared. When sharing no matter what specials are in the menu, Denu on another computer will be able to open it.
Sourceforge Project Page(Out of date)
Berlios Project Page
Gentoo Forum Thread.