I am in the pre-process of implementing a Mac OS X Tiger Style Dashboard feature for FVWM. (pre-process meaning, i thought about it 5 minutes ago and am thinking of how to do it). If you don’t know what Dashboard is, it’s a feature of Tiger which pops up widgets rather like gdesklets does in gnome.
Now my question to more experienced fvwm-hackers is, what is the best way to go about implementing it and to follow the KISS ideal?
The basic idea is to darken the root window, and on-top of that drop the widgets, which could be a Menu, a Function, a GTKFunction or whatever.
Let me know any ideas.
I assume you mean you’re wanting certain application to appear like these
err, widgets? Or do you mean you’ll be writing some of these widgets from
scratch? It doesn’t really matter – I assume you just want to know how
FVWM ought to handle them?
From within FVWM? That’s tricky – the idea of KISS doesn’t really apply.
Right. I see now. Unless I misunderstand you – you wouldn’t “drop” a
function onto the root window - since that’s not a window, it just performs
tasks. In the case of menus though, you would have to ensure that you create
a tear-off menu, and style that appropriately. So for instance, you could use
FvwmEvent to listen on add_window:
DestroyModuleConfig FE-menuTearOff: * *FE-menuTearOff: Cmd Function *FE-menuTearOff: add_window TearOffAndStyle Module FvwmEvent FE-menuTearOff
… which would then listen for new windows that were added. You might think
initially that just popping up a menu in its normal instance would cause this
event to fire up, but this is not so. This will only happen if a menu is told
to “tear off”. Which you can do in a number of ways.
Either you can open the meny and press the BKSP key, or you can bind a
mouse-binding to the menu (which runs within a Menu context) to tear it off,
or you can tell it to TearOffImmediately. I’ll use the second approach in
So the function TearOffAndStyle just looks like this:
DestroyFunc TearOffAndStyle AddToFunc TearOffAndStyle + I ThisWindow ("Root Menu") WindowStyle !Borders, !Title
Where “Root Menu” in this instance is the actual name of the window. I’ve
just removed the borders and title that surround it (which is typical for a
torn-off menu) – so that it looks (as per the sample demo off the apple site)
like a desklet. Note also that a torn-off menu is an independant copy of the
“original” menu, so any changes you might make to the original menu are not
picked up until it is torn-off again.
As to how you tear-off menus with the mouse, you can use something like:
Mouse 2 M N - Mouse 2 M N TearOff
I’ve used button 2 – you could use whatever you wanted. If you want to know
how to close a torn-off menu, just press ESC.
Does that help? I can’t really be anymore detailed about the other aspects,
since I don’t know what it is you’re really wanting to achieve. If it is the
stylation of these applets, then it might come pretty close to:
Style $FOO BorderWidth 1, !Handles, HandleWidth 0
… at least for visual effects.
– Thomas Adam
Thanks for the reply, I haven’t real all the details yet, but I will expand on some details. Basically what the idea is to run these widgets in the background, and with a press of a button (mouse of function or so) they all pop up.
The weather popup function that is somewhere on this forum is a great example of a what I intend as a widget.
ThomasAdam, I will read the post and try to get a basic implementation today with your suggestions
Ah, right. So, in effect, you’d want some means of toggling windows so that
within one instance, they load, and in the other, they disappear? That’s been
answered in the past, if so. There’s an FAQ for it on the main FVWM FAQ list.
– Thomas Adam
Excellent, i totally forgot to look there.
basically I’d need a way to save the location of the menu/function other than the current mouse location and have them all popup on keypress.
let me see if i understood…you click on the dashboard icon and the window(s) you were working on ‘disappear’, and all the widgets are layed down on the screen. When they are all there you click on the one you want and all the other widgets ‘fade’ into darkness, so you can easily work on the widget you chose. And, if you ever want to go back to the windows you were working on before you launched the dashboard just click again on the dock icon and all the widgets disappear and you have your desktop back the way it was. Is that it?
well, i’m not an experienced fvwm-hacker, but it seems kinda hard. But, of course, possible. If there is one thing i’ve learned about FVWM is that everything is possible, and if it isnt, there is probably some way to work around it.
On the Tiger webpage i see that there is some sort of cool zoom effect attatched to the dashboard. Is there a way to get that on fvwm?
Oh, well, this is a nice feature, and if you can make it happen, plz let me know.
- BodyDrop -
I don’t know if I’m going to implement it exactly in that way.
What i see as widgets is, eg. Weather Information, Date/Time, Mail Checker, RSS feeds, something like that.
Basiclaly this will happen
you press F9, and all the widgets pop up (havn’t decided whether the current screen fades or the windows dissapear) you can then look at the information you want. then you press F9 again and the widgets dissapear. This way you can hide all this information from your real-estate but view it with one button press.
well, its great either ways
this would be perfect for ppl with low res displays (like 15’’) coz 4 windows already fill it up and you cant work properly. I am one of those (yeah, sux)…and a one-button window popup would be nice (this way they dont acumulate on the main window).
But hei, in any events, pot your solution, so i can work it out and fi it to my purposes.
- BodyDrop -
Is there any progress in this direction? I just also had to use at my work Mac, and i like very much some things including the dashboard. I would truly love to have it in fvwm… do you know something abuot it? Is there anybody out there?
Progress on what? What is it you’re wanting to see?
– Thomas Adam
Well I could like to know if there is already an implementation of a dashboardlike application…