From Salix OS
Contents |
Description
xdgmenumaker is a command line tool, written in python, that generates application menus using xdg information, by scanning *.desktop files in all $XDG_DATA_DIRS/applications directories. All applications are sorted according to the main categories as specified by freedesktop.org
The menu entries that are generated by xdgmenumaker are localised according to the current user locale settings.
xdgmenumaker currently supports generating menus for Fluxbox, IceWM and WindowMaker. Icons from the current GTK icon theme can be included in the menus, when they are supported by the output format. Only the format used by Fluxbox and IceWM support in-menu icons.
Adding support for more output formats should be rather trivial, so don't hesitate to contact the author to ask for it.
Usage examples
You can run
$ xdgmenumaker --help
at any time to view all the available options.
Fluxbox
To generate an application menu for fluxbox, run xdgmenumaker like this:
$ xdgmenumaker -f fluxbox > ~/.fluxbox/xdg_menu
or if you want to include icons in the menu:
$ xdgmenumaker -i -f fluxbox > ~/.fluxbox/xdg_menu
and then change your main fluxbox menu to include this file as a submenu. For example, add this somewhere in your ~/.fluxbox/menu file:
[include] (~/.fluxbox/xdg_menu)
You can add the xdgmenumaker command as another item in your menu, if you want to update it, without having to run the command manually again:
[exec] (Update Fluxbox Menu) (xdgmenumaker -f fluxbox > ~/.fluxbox/xdg_menu)
IceWM
To generate an application menu for icewm, run xdgmenumaker like this:
$ xdgmenumaker -f icewm > ~/.icewm/appmenu
or if you want icons in your menu:
$ xdgmenumaker -i -f icewm > ~/.icewm/appmenu
and you can then edit your ~/.icewm/menu file and add this line somewhere:
include appmenu
You can add the xdgmenumaker command as another item in your menu, if you want to update it, without having to run the command manually again:
prog "Update Menu" _none_ xdgmenumaker -i -f icewm > ~/.icewm/appmenu
NOTE: If you don't request icons in the menu, or if an icon is not found for a certain app, the icon name in the menu for that app is set to "_none_". This doesn't actually set he icon for that app to none. IceWM menu entries should always include a menu item. So, by pointing it to a non existing icon, you essentially set it to use no icon. If you actually have an icewm icon named "_none_", that one will be used instead.
WindowMaker
There are two ways to have an xdg menu in windowmaker. The first one, auto-updates the menu, every time the menu is called. The second one, updates the menu only when the user wants to.
xdgmenumaker uses utf8 encoding and localised strings by default and has been tested only with wmaker-crm>=0.95.1. No idea if utf8 works properly with older Window Maker versions.
Method 1
Open the WindowMaker preferences tool. In the Application Menu Definition section, add a Generated Submenu in your menu, by dragging it in. Click on the menu item you just dragged in and in the preferences window, in Command, add:
xdgmenumaker -f windowmaker
Save and close the preferences window.
That command will be run every time you access that submenu, so the application list in there will be always up to date. The downside is that it will be run every time you access that submenu, so especially if you are on a very old PC, it might slow things down a bit, although probably not anything considerable.
Method 2
Run:
$ xdgmenumaker -f windowmaker > ~/GNUstep/Defaults/xdg_menu
Then open the WindowMaker preferences tool and in the Application Menu Definition section, add an External Submenu by dragging it in your menu. Click on the menu item you just dragged in and in the preferences window, in Path for Menu, add the location of the menu file you just created:
~/GNUstep/Defaults/xdg_menu
You can add the xdgmenumaker command as another item in your menu, if you want to update it, without having to run the command manually again. In the Application Menu Definition section in the WindowMaker preferences window, add a Run Program item in your menu by dragging it your menu. Click on the menu item you just dragged in and in the preferences window, in Program to Run, add the xdgmenumaker command as mentioned above.
The downside of this method, is that the menu contents will not be updated when you install a new application or remove one. You will need to run the xfgmenumaker command every time you want the menu to be updated. You could of course assign another menu entry for doing just that. The upside is that the menu will not be generated every time you access the menu. This might be a better choice for (really) older hardware.
Download
Source tarballs can be found at: http://people.salixos.org/gapan/xdgmenumaker
The source code is also available through github. You can clone/fork it at: http://github.com/gapan/xdgmenumaker
Contact
George Vlahavas email: vlahavas ~ at ~ gmail ~ dot ~ com