Hi Robert,
It's probably easier to just go with the link file reader first, but it will have some limitations:
1) you won't be able to get stuff in the shell namespace (eg. desktop icons, Control panel stuff)
2) you'll have to hardcode the location of the start menu (you can change the location of the start menu by playing with registry keys... see SHGetSpecialFolderLocation).
3) you'll have to duplicate the code to read .lnk files (see dlls/shell32/shelllink.c), and the code to read the icons from .exe files
4) if you want to support adding other stuff (eg. a .txt file) to the menus, you'll have to read the registry to get the right association, to pull the right icon from an exe.
I guess that's not too much of a problem, and it's probably not worth the effort to make it perfect.
The code that wine Crossover uses to generate KDE/Gnome menus is already merged into Wine. We just have a more extensive wineshelllink script that deals with more corner cases.
Mike
Robert van Herk wrote:
Hi all,
As some of you might know I am working on a Wine Start menu, for Linux.
I have heard different things on this list about the way Windows treats the start menu.
Some told me that it would be better to make a Windows (wine) client that reads the actual start menu by querying a Wine dll, while others told me that this is not neccesairy as all the links are contained in the Start Menu directory.
From looking at my Windows installation, I must agree that it seems that all items in Programs are indeed in the Start Menu directory.
So, my question is: would it be enough to create just a Linux program that synchronizes with this directory? Can anyone give me an example of a lnk file that IS actually missing in a Start Menu directory, but is there in his Program folder in the Windows start menu?
Does anyone know how far people came at parsing the lnk files for Linux? I read something about the .lnk format, but I don't really feel like writing my own link file parser ;-). Does anybody know of parts of other software that could be recycled here?
Grtz,
Robert