gtkdeskmenu is a cute little app that pops up a menu at the mouse location under 2 situations:
1) you right-click the mouse in an empty part of the desktop, or
2) you send a SUGUSR1(10) to it, eg `killall -SIGUSR1 deskmenu`.
This is good for interfacing with nice window managers like icewm. You can even flub around with your keymaps and make a single key do the job.
Submenus are not limited to some arbitrary depth like other menu programs, just system resources. The menu labels support pango markup, accelerator hotkeys, and icons. Look at the jpeg in the build directory to see for yourself.
It automatically creates its own rc directory, $HOME/.deskmenu and then automatically creates its own basic configuration file, $HOME/.deskmenu/deskmenurc just to get things going. It also comes with a selection of icons so things look nice right off the bat. It now has tooltips also so you can see what command is going to execute before you click.
The rc file parsing routine is much burlier and flexible than others out there, and the submenu creation is potentially infinitely recursive, controlled by the rcfile. Changes made to this file are instantly reflected in the menu, so there is no need to shut down and re-run the program just from a tweaked icon or menu label.
GtkDeskMenu is very easy on system resources, just lazily polling every 1/10th second to find the mouse pointer, and even this can be turned off in the rcfile.
For people who have tried this type of thing before, you might know that it is very difficult to control a menu with a SIGUSR1. I discovered a way to use g_timeout_add() to bypass this problem. Have a peak at the code, callbacks.c especially.
Run the program and then have a look through the default rc file to learn more about it. There's a menu entry just for this purpose.