Menu Generating
A short introduction to menu generating. Take a look here for more details: Enthrall_integration
Work is in progress on a script, called enthrall, which will facilitate automagically creating the menu's for various windowmanagers.
The basics:
GNOME and KDE, the two major desktop environments in use are using the same way of building their menus. It all works through *.desktop files in certain directories. Look here for more details.
What Enthrall does:
Enthrall collects all the info in the *.desktop files in various locations, while nicely sorting it into submenus. It then puts everything in a format that is easy to parse by the backends. It's the backends that generate the menu in the windowmanagers native format.
Enthrall currently knows how to build the following menus:
- aewm
- afterstep
- blackbox
- deskmenu
- enlightenment (just e16 user menus)
- fluxbox
- fvwm
- fvwm-crystal
- golem
- icewm
- ion
- kahakai
- openbox
- pekwm
- pwm
- qvwm
- waimea
- windowmaker
- xfce4-session
Using Enthrall:
- enthrall
- just generates menus for ALL wm's it knows about.
- enthrall help
gives you some help. No kidding
- enthrall <backend> [other-backends]
- builds menus for the selected window managers
- enthrall inventory
only generates an inventory of all *.desktop files leaving it to your own, obviously far more advanced, menu generating script to do the actual generating.
How to use/test the menus:
Please remember that I go by the default location specified in /etc/sorcery/enthrall.conf. If you have changed that, save the changes to /etc/sorcery/local/enthrall.conf and substitute your own locations and filenames in the examples below. Also, these things you'll only have to do when you run enthrall as a normal user. When root is running it, and generating the 'global' menus, they will be placed in the proper locations. All you need to do in that case is maybe restart your (broken) windowmanager.
- blackbox
Nothing to be done for the general menu in /usr/share/blackbox. When using a user generated menu you'll have to edit the file ~/.blackboxrc and change the "session.menuFile:" to ~/.blackbox/bbox.menu
- fluxbox
Nothing to be done here
- openbox
Nothing to be done here
- pekwm
Nothing to be done here
- waimea
edit the file ~/.waimearc and change the "screen0.menuFile:" to ~/.waimea/menu
- qvwm
copy the /usr/share/qvwm/system.qvwmrc to ~/.qvwmrc and replace the [Start Menu] section by "include /home/<your-dir>/.qvwm/qvwm.menu"
- aewm
Nothing to be done here
- pwm
copy /etc/pwm/pwm.conf to ~/.pwm/ and edit it to change include "menus-default.conf" into include "<your-home-dir>/.pwm/pwm.menu" - you will need to use the full path.
- golem
make the directory ~/.golem then copy /usr/share/golem/golemrc to ~/.golem/ and edit it to change .include "plugins/simple_menus/rc" into .include "<your-home-dir>/.golem/golem.menu" - you also NEED to change ALL the .include paths to the full path of the plugins. Really, all of them. Don't forget one unless you like the CLI
- ion
Nothing to be done here
- deskmenu
Not a windowmanager, but a menu app. Nothing to do to make it work though
- windowmaker
Nice one, this windowmanager. They use 2 different menu formats. Both supported of course. To use the default format, you won't have to do anything. To use the old format, you'll have to swap /var/lib/enthrall/enthrall.wmaker with wmaker.menu in the same dir.
- kahakai
Edit ~/.kahakai/config to point the menu to ~/.kahakai/menu
Configuring enthrall:
in /etc/sorcery you'll find a file called enthrall.conf. in this file you can change the location where enthrall will put the generated menus. When you need to change this file, put the changes into /etc/sorcery/local/enthrall.conf as the main file will be overwritten on any update.
What needs to be done:
This is where you come in... When you come across an application that should be in the menu, but currently isn't, it's really easy to write a .desktop file for it. Just take a look at the files in /usr/share/applications if you want an example. If you then submit it to bugzilla, we'll take it from there.
If you want to try writing a backend, there's some info on enthrall backends here.
