water cooler :: recommend a menu



I'm looking for an app that would appear in the top of the screen, show three buttons with my text, which would execute an app on click.

So far the best has been yeahlaunch, but it autohides. So can anyone recommend any good ones?

dmenu works well for all sorts of menu needs. With its minimalist design, however, it is best suited to using along with a script of some sort. It also "autohides", although in reality it just doesn't run until you call it, and then closes when you select something. Setting up a hotkey to run it works good, though. It also is keyboard driven, so that might be a factor in your decision.

One thing I've been playing with recently is using dfm with an "empty" icon for each desktop object. This allows me to have an always-on text-only menu on the desktop. The problem with this is it gets messed up when installing mydsl packages or adding other objects to the desktop.
Empty icon:
Code Sample
/* XPM */
static char *empty[] = {
"1 1 1 1",
"o c None",
"o",
};

I suppose it might be possible to run simultaneous instances of dfm, having one only taking up the top part of the screen, but I haven't tested this.

Okay, I'm looking for something that's mouse driven though.
And it should be "on" all the time, without the need for a hotkey or respawning from a script.

Thanks anyway Mik :)

You could always use something with a dock and something like the lua mount tool, or something similar if you can't find a suitable program.
Here's  murgaLua script that might work for you until you find something better. It's just a quick thing, probably could be improved.

Code Sample

-- label="command"
my_menu={
Aterm="aterm -fn proggy",
Dillo="dillo",
Wings3D="wings"
}

size=11 -- text size
bh=16 -- button height

w=fltk:Fl_Window(Fl:w(),bh)
w:callback(function() end)
butt_pack=fltk:Fl_Pack(0,0,Fl:w(),bh)
butt_pack:type(fltk.FL_HORIZONTAL)

close=fltk:Fl_Button(0,0,bh,bh,"x")
close:callback(function() os.exit() end)
close:labelsize(size)

butt={}
cnt=1
for k,v in pairs(my_menu) do
butt[cnt]=fltk:Fl_Button(0,0,100,30)
butt[cnt]:label(k)
butt[cnt]:labelsize(size)
butt[cnt]:callback(function() os.execute(v.." &") end)
cnt=cnt+1
end

fltk:Fl_End()
w:position(0,0)
w:border(0)
w:show()
Fl:run()

Next Page...
original here.