Hi everyone,
I'm intending to apply for a Google Summer of Code placement working on the Wine control panel support. My main intention is to work on a proper Control Panel application for Wine that accepts standard .cpl files, and turn winecfg's configuration sections into appropriate control panels. (I notice that pure_evil @ mail.bg has been doing some work on this - if I were to get accepted to work on this, then I would like to continue his line of work, or assist him with it.) However, as I don't believe that project alone would necessarily take up an entire summer, my intention would also be to work on some new control panel applets for Wine. The examples given on the GSOC wiki pages (basic desktop/screen resizing, general network information, and font details) would be good applets for me to implement, but I would also be interested in working on some other applets, such as an Add/Remove Programs applet, or a Multimedia applet. Obviously, there wouldn't necessarily be time to implement all of these, so my intention would be to get the main control panel and basic Wine control panel applets from winecfg working well first, and then look at other applets that could be implemented.
I've developed applications and, indeed, Control Panel applets for Windows for many years now (I started programming using the Windows API when I was 12!), so I feel confident that this is a task I would be able to handle. I believe that a good configuration interface for Wine that supports third-party control panels is something that would be very useful for end-users.
If anyone has any comments or suggestions regarding my proposal, I'd very much appreciate any feedback.
Regards,
Hi Owen,
On Wed, Mar 26, 2008 at 5:27 PM, Owen Rudge owen@owenrudge.net wrote: <snip>
interested in working on some other applets, such as an Add/Remove Programs applet, or a Multimedia applet. Obviously, there wouldn't necessarily be time to implement all of these, so my intention would be to get the main control panel and basic Wine control panel applets from winecfg working well first, and then look at other applets that could be implemented.
I've developed applications and, indeed, Control Panel applets for Windows for many years now (I started programming using the Windows API when I was 12!), so I feel confident that this is a task I would be able to handle. I believe that a good configuration interface for Wine that supports third-party control panels is something that would be very useful for end-users.
If anyone has any comments or suggestions regarding my proposal, I'd very much appreciate any feedback.
I don't really know if we want to just focus on applets or if we should not aim for having this project provide better integration with the native desktop. As far as I understand there is some infrastructure work that will need to be done in shell32 as I don't think we fully implement the entire Control Panel shellname space. I expect implementing this properly will take a good bit of time. What would be cool would be if we fully supported the namespace so that when you called control.exe it loaded the control panel window and that could be embedded in a GTK or QT window for use by native applications. There was a patch floating around on wine-patches a few months back to allow for embedding a Win32 Wine window inside of an existing X window that should do the trick.
As far as migration of the stuff in winecfg and other programs go, I think starting with the Add/Remove applet is a good. I don't think it would be too hard to take all of the current logic in wine/programs/uninstall and wrap it in a proper applet. We want to make sure that we don't introduce any sort of regression when we make the switch over so reusing that code would be a good place to start.
So to recap, (this just goes for for me) I think the project should be laid out as follows
1. A fully working Control Panel Namespace 2. The ability to embed the Control Panel window in a native window 3. Have a collection of applets to configure wine
I don't know who is mentoring this project so I think we should get their thoughts on it.
Thanks
Hi Steven,
I don't really know if we want to just focus on applets or if we should not aim for having this project provide better integration with the native desktop. As far as I understand there is some infrastructure work that will need to be done in shell32 as I don't think we fully implement the entire Control Panel shellname space. I expect implementing this properly will take a good bit of time. What would be cool would be if we fully supported the namespace so that when you called control.exe it loaded the control panel window and that could be embedded in a GTK or QT window for use by native applications. There was a patch floating around on wine-patches a few months back to allow for embedding a Win32 Wine window inside of an existing X window that should do the trick.
Implementing the proper Control Panel namespace would certainly make the control panel section of the project a much longer one. My initial thoughts were that it may be an easier task to implement the Control Panel in a more old-fashioned style of simply having a list view into which the control panel icons were placed - this would certainly provide a sufficient interface for accessing the control panel. However, it probably would be better in the long run to implement things "properly", and at the very least getting Control Panel integrated with the shell namespace. Integration with native applications certainly looks as though it would provide an added challenge to that project, but is an interesting idea that could work quite nicely.
As far as migration of the stuff in winecfg and other programs go, I think starting with the Add/Remove applet is a good. I don't think it would be too hard to take all of the current logic in wine/programs/uninstall and wrap it in a proper applet. We want to make sure that we don't introduce any sort of regression when we make the switch over so reusing that code would be a good place to start.
Indeed, my plan was to make use of appropriate Wine tools where they existed, such as in the case of the uninstaller, and flesh them out into fully-featured control panel applets.
So to recap, (this just goes for for me) I think the project should be laid out as follows
- A fully working Control Panel Namespace
- The ability to embed the Control Panel window in a native window
- Have a collection of applets to configure wine
This sounds like a pretty decent way of going about things. Number 2 was something I hadn't particularly considered doing initially, but I'll have a look for the patch that was posted recently and see what I think about it and how much work is likely to be involved.
Cheers,
On Wed, Mar 26, 2008 at 5:57 PM, Owen Rudge owen@owenrudge.net wrote:
This sounds like a pretty decent way of going about things. Number 2 was something I hadn't particularly considered doing initially, but I'll have a look for the patch that was posted recently and see what I think about it and how much work is likely to be involved.
I think the existing wine/programs/control should display the enumerated applets but I've never really played with it. In ReactOS we wrote a version of control.exe more enhanced version that did as you suggested, creating a listview with item description and name and I think it was rejected before because Alexandre preferred implementing the namespace properly.
As for embedding the pseudo-control panel window in the X11 window, here is the patch in question
http://www.winehq.org/pipermail/wine-patches/2008-February/050117.html
I don't know how Alexandre feels about this either as he did not merge it in to Winehq. Perhaps he wants to do it some other way...
Owen Rudge wrote:
The examples given on the GSOC wiki pages (basic desktop/screen resizing, general network information, and font details) would be good applets for me to implement, but I would also be interested in working on some other applets, such as an Add/Remove Programs applet, or a Multimedia applet.
What I and the other Ubuntu UI people would really like to see is the ability to uninstall Wine programs from within gnome-app-install (The Gnome applet the user interacts with after selecting Applications->Add/Remove).
The UI is a fairly intuitive step - just add a "Windows Applications" category and list the installed Wine apps on the right. Once that's done, we don't need a special Wine program for uninstalling anymore, since we can expand the functionality in a similar place where the user could reasonably expects to find it.
As for what you'll need to do this done, uninstalling applications from the command line isn't yet supported, though I believe someone else is working on that through reg.exe.
Thanks, Scott Ritchie
On Thursday 27 March 2008 03:59:54 am Scott Ritchie wrote:
The UI is a fairly intuitive step - just add a "Windows Applications" category and list the installed Wine apps on the right. Once that's done, we don't need a special Wine program for uninstalling anymore, since we can expand the functionality in a similar place where the user could reasonably expects to find it.
As for what you'll need to do this done, uninstalling applications from the command line isn't yet supported, though I believe someone else is working on that through reg.exe.
Uninstallable Windows apps are listed in the registry at HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall*, and they contain the description of the app, as well as the command to uninstall it. Couldn't you use something like reg.exe (after it's implemented enough) to parse those registry keys and list the apps, and when the user asks to uninstall it, run "wine <uninstall string>"? No need for the control panel or applets at all.
What I and the other Ubuntu UI people would really like to see is the ability to uninstall Wine programs from within gnome-app-install (The Gnome applet the user interacts with after selecting Applications->Add/Remove).
The UI is a fairly intuitive step - just add a "Windows Applications" category and list the installed Wine apps on the right. Once that's done, we don't need a special Wine program for uninstalling anymore, since we can expand the functionality in a similar place where the user could reasonably expects to find it.
This sounds somewhat like it'd be a bit of a side project to my intended plan. Implementing such a "Windows Applications" category wouldn't involve much more than interating through the registry, and then calling wine on the appropriate uninstaller .exe.
I would still suggest a proper Control Panel namespace for Wine would be best. Implementing functionality to embed the Wine control panel into other X windows would then be possible too, although looking at the patch submitted a few months ago, I fear the implementation of it may not be the most tidy thing. The idea of a side project implementing a basic set of reusable functions to iterate through the registry to retrieve application details (for Add/Remove Programs, at least) may be better.
Regards,