XdgMenu
Contents
xdg-menu - generates menus for
- twm
- ion3
- WindowMaker
- fvwm2
- icewm
- blackbox
- fluxbox
- openbox
- awesome
from XDG stuff. KDE, Gnome, Xfce, Enlightenment are already XDG compatible. For further information see:
- Free Desktop menu standard
- parabola-xdg-menu package in [community]
1.1 WM Menu hierarchy
- Applications
- Accessibility
- Accessories
- Development
- Education
- Games
- Graphics
- Internet
- Multimedia
- Office
- Other
- Science
- System
2 Configuration
Xdg_menu relies on three sets of information to generate menus: a root menu or in other words an XML menu template generally passed on the command line, information cached when it was last run, and a series of configuration files.
- You can find some XML menu templates in /etc/xdg/menus.
- If altering the code in xdg_menu to change layout, make sure you delete everything in ~/.xdg_menu_cache or you will spend hours trying to figure out why your changes to the perl script don't take.
- You can find individual application configurations in /usr/share/applications
Other configuration file directories can be found under /usr/share. In most cases you will not need to touch these. However if you want to change how your menu is layed out you can alter the menu template for minor changes. Major changes require tweaking the actual xdg_menu perl script. If you find that applications do not appear or that they are called strange things, then you will need to look at the .desktop file in /usr/share/applications. Check this standards file .
3 Usage
xdg_menu [--format <format>] [--desktop <desktop>] [--charset <charset>] [--language <language>] [--root-menu <root-menu>] [--die-on-error] [--fullmenu] [--help] format - output format possible formats: twm, WindowMaker, fvwm2, icewm, ion3 blackbox, fluxbox, openbox, xfce4, openbox3, openbox3-pipe, readable default: WindowMaker fullmenu - output a full menu and not only a submenu desktop - desktop name for NotShowIn and OnlyShowIn default: the same as format charset - output charset default: <locale> language - output language default: <locale> root-menu - location of root menu file default: /opt/gnome/etc/xdg/menus/applications.menu die-on-error - abort execution on any error, default: try to continue verbose - print debugging information help - print this text
update-menus updates WMs menus from XDG stuff and can do it automaticaly using config.
This is a script wrapper around xdg_menu that relies on /etc/update-menus.conf
You need to install package: parabola-xdg-menu (xdg_menu)
/etc/update-menus.conf selects from a list of window managers for which the menu should be generated. Comments with # are allowed.
All generated menus placed in /var/cache/xdg-menu/. See wm-specific Examples section of this page to get more information.
4 Examples
4.1 Awesome
$ xdg_menu --format awesome >>~/.config/awesome/menu.lua
Then edit your rc.lua as shown below
- Add a require statment for your new menu.lua file
- Add an entry to your awful.menu object for your new menu which calls xdgmenu
... require("menu") ... ... mymainmenu = awful.menu({ items = { { "awesome", myawesomemenu, beautiful.awesome_icon }, { "Applications", xdgmenu }, { "open terminal", terminal } } }) ...
4.2 IceWM
$ xdg_menu --format icewm --fullmenu --root-menu /etc/xdg/menus/parabola-applications.menu >>~/.icewm/programs
- Uncomment icewm in /etc/update-menus.conf
- run update-menus as root
- make symlink to /var/cache/xdg-menu/icewm/programs in ~/.icewm/programs
4.3 Ion3
$ xdg_menu --format ion3 --root-menu /etc/xdg/menus/parabola-applications.menu >~/.ion3/default-session--0/_xdg-menu.lua
After that, change your cfg_menus.lua to include _xdg-menu.lua file and add menu into mainmenu. For example:
... dopath("_xdg-menu") -- Main menu defmenu("mainmenu", { submenu("XDG Menu", "<NAME-OF-FIRST-MENU-IN-_xdg-menu.lua-FILE>"), submenu("Programs", "appmenu"), menuentry("Lock screen", "ioncore.exec_on(_, 'xlock')"), menuentry("Help", "mod_query.query_man(_)"), menuentry("About Ion", "mod_query.show_about_ion(_)"), submenu("Styles", "stylemenu"), submenu("Session", "sessionmenu"), }) ...
- Uncomment ion3 in /etc/update-menus.conf
- run update-menus as root
- change your cfg_menus.lua to include xdg-menu.lua file and add menu into mainmenu.
For example:
... dopath("/var/cache/xdg-menu/ion3/xdg-menu.lua") -- Main menu defmenu("mainmenu", { submenu("XDG Menu", "<NAME-OF-FIRST-MENU-IN-xdg-menu.lua-FILE>"), submenu("Programs", "appmenu"), menuentry("Lock screen", "ioncore.exec_on(_, 'xlock')"), menuentry("Help", "mod_query.query_man(_)"), menuentry("About Ion", "mod_query.show_about_ion(_)"), submenu("Styles", "stylemenu"), submenu("Session", "sessionmenu"), }) ...
4.4 FluxBox
$ xdg_menu --format fluxbox --root-menu /etc/xdg/menus/parabola-applications.menu >~/.fluxbox/my-menu
Change your menu file to include generated menu.
For example add line:
[include] (my-menu)
- Uncomment fluxbox in /etc/update-menus.conf
- run update-menus as root
- change your menu file to include generated menu.
For example add line:
[include] (/var/cache/xdg-menu/fluxbox/boxrc)
4.5 OpenBox
Generate menu with
$ xdg_menu --format openbox3 --root-menu /etc/xdg/menus/parabola-applications.menu >xdg-menu.xml
and manually add it into your menu.xml. For example, put xdg-menu.xml into menu.xml and add:
<menu id="Applications" />
into root-menu.
- Uncomment openbox in /etc/update-menus.conf
- run update-menus as root
- change your menu.xml file to include generated menu.
For example, add following to root-menu:
<menu id="xdg-menu" label="XDG Menu" execute="cat /var/cache/xdg-menu/openbox/menu.xml"/>
4.6 Twm
Use
$ xdg_menu --format twm --root-menu /etc/xdg/menus/parabola-applications.menu >my-twm-menu
and add it into twmrc manualy.
(I do not know how to include files into twmrc sergej 10:50, 11 April 2007 (EDT))
- Uncomment twm in /etc/update-menus.conf
- Add into /etc/X11/twm/system.twmrc file applications menu (add following line:
"apps" f.menu "Applications"
into defops menu)
- run update-menus as root
- run twm -f /var/cache/xdg-menu/twm/twmrc
4.7 WindowMaker
Use
$ xdg_menu --format WindowMaker --root-menu /etc/xdg/menus/parabola-applications.menu >my-wm-menu
and add
#include "my-wm-menu"
into your WindowMaker menu file.
You can also use the WPrefs "Application Menu Definitions", and add the xdg command as a parameter in a "Generated Submenu" object.
- Uncomment WindowMaker in /etc/update-menus.conf
- run update-menus as root
- add
#include "/var/cache/xdg-menu/WindowMaker/wmrc"
into your menu file.
4.8 Fvwm2
Generate menu
$ xdg_menu --format fvwm2 --root-menu /etc/xdg/menus/parabola-applications.menu >fvwm2-menu
and add menu into root menu
read fvwm2-menu AddToMenu MenuFvwmRoot "Root Menu" Title + "&0. XDG Menu" Popup xdg_menu
- Uncomment fvwm2 in /etc/update-menus.conf
- run update-menus as root
- change your .fvwm2rc file to include generated menu. For example:
AddToMenu MenuFvwmRoot "Root Menu" Title + "&0. XDG Menu" Popup xdg_menu
read /var/cache/xdg-menu/fvwm2/fvwm2rc
4.9 BlackBox
$ xdg_menu --format blackbox --root-menu /etc/xdg/menus/parabola-applications.menu >my-menu
Change your menu file to include generated menu.
For example add line:
[include] (my-menu)
- Uncomment blackbox in /etc/update-menus.conf
- run update-menus as root
- change your menu file to include generated menu.
For example add line:
[include] (/var/cache/xdg-menu/blackbox/boxrc)