Hello,
I just want to thank you for Wine and show you my own uxtheme.dll implementation, which uses the GTK+ rendering engine. Thus Wine applications look really native for users.
Here is the link: https://github.com/akulinchev/uxthemegtk (see the screenshots at the bottom of the page)
If you want, I can help you to add it to the Wine code. If not, I will develop it alone as a third-party project, but then I have a question: what is the best way to replace a Wine library? I think, I shouldn't change anything in /usr/lib/wine. I know about "native libs", but it's an ELF binary, not PE.
Regards,
Ivan
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
Hi,
Am 2015-06-30 um 23:39 schrieb Ivan Akulinchev:
Here is the link: https://github.com/akulinchev/uxthemegtk (see the screenshots at the bottom of the page)
I like the idea, and the screenshots look really nice!
If you want, I can help you to add it to the Wine code. If not, I will develop it alone as a third-party project
I think this is something that should be included in the Wine code.
- From the way your build instructions look like your library seems to be a replacement for Wine's uxtheme.dll. I am not an expert on theming, but I suspect this is the wrong approach. I think this should be developed as a Windows theme that is loaded like any other Windows theme by our uxtheme.dll. A user could then ideally select between no theme, your gtk-based theme and native windows themes using winecfg without replacing DLLs.
Hi Stefan,
look like your library seems to be a replacement for Wine's uxtheme.dll
Yes, it is. But I don't want to throw out Wine's uxtheme.dll, I think they could live together :-)
I think this should be developed as a Windows theme that is loaded like any other Windows theme by our uxtheme.dll.
It's impossible. Uxtheme.dll loads themes without code execution:
/* from wine/dlls/uxtheme/system.c */ hTheme = LoadLibraryExW(lpThemeFile, NULL, LOAD_LIBRARY_AS_DATAFILE);
Regards, Ivan
01.07.15 20:24, Stefan Dösinger пишет:
Hi,
Am 2015-06-30 um 23:39 schrieb Ivan Akulinchev:
Here is the link: https://github.com/akulinchev/uxthemegtk (see the screenshots at the bottom of the page)
I like the idea, and the screenshots look really nice!
If you want, I can help you to add it to the Wine code. If not, I will develop it alone as a third-party project
I think this is something that should be included in the Wine code.
- From the way your build instructions look like your library seems to
be a replacement for Wine's uxtheme.dll. I am not an expert on theming, but I suspect this is the wrong approach. I think this should be developed as a Windows theme that is loaded like any other Windows theme by our uxtheme.dll. A user could then ideally select between no theme, your gtk-based theme and native windows themes using winecfg without replacing DLLs.
On 01.07.2015 22:42, Ivan Akulinchev wrote:
Hi Stefan,
look like your library seems to be a replacement for Wine's uxtheme.dll
Yes, it is. But I don't want to throw out Wine's uxtheme.dll, I think they could live together :-)
I think this should be developed as a Windows theme that is loaded like any other Windows theme by our uxtheme.dll.
It's impossible. Uxtheme.dll loads themes without code execution:
/* from wine/dlls/uxtheme/system.c */ hTheme = LoadLibraryExW(lpThemeFile, NULL, LOAD_LIBRARY_AS_DATAFILE);
That's because there's nothing to execute. What Stefan meant I think is that theme should be in format uxtheme is supposed to understand, but actual theme settings could mimic gtk UI elements. This way you won't need to have separate uxtheme.dll for every possible UI toolkit. Another idea could be to have this theme file could be generated with some tool on wine install time for example or regenerated later upon user request/or automatically somehow. Anyway, nice concept.
Regards, Ivan
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
Am 2015-07-01 um 22:07 schrieb Nikolay Sivov:
That's because there's nothing to execute. What Stefan meant I think is that theme should be in format uxtheme is supposed to understand, but actual theme settings could mimic gtk UI elements. This way you won't need to have separate uxtheme.dll for every possible UI toolkit. Another idea could be to have this theme file could be generated with some tool on wine install time for example or regenerated later upon user request/or automatically somehow. Anyway, nice concept.
Actually, I was thinking the themes execute something. I don't think a static set of images will help here, except if we regenerate it all the time. GTK itself is themeable and the settings might change.
Would it be possible to integrate the code into the existing uxtheme library and make it a runtime setting?
Hi Stefan,
Actually, I was thinking the themes execute something.
In my opinion it would be a vulnerability if any theme could execute any code.
Would it be possible to integrate the code into the existing uxtheme library and make it a runtime setting?
Maybe. One guy from Wine Staging and I trying to do it right now, but I think, it will take several months.
Regards, Ivan
01.07.15 22:14, Stefan Dösinger wrote:
Am 2015-07-01 um 22:07 schrieb Nikolay Sivov:
That's because there's nothing to execute. What Stefan meant I think is that theme should be in format uxtheme is supposed to understand, but actual theme settings could mimic gtk UI elements. This way you won't need to have separate uxtheme.dll for every possible UI toolkit. Another idea could be to have this theme file could be generated with some tool on wine install time for example or regenerated later upon user request/or automatically somehow. Anyway, nice concept.
Actually, I was thinking the themes execute something. I don't think a static set of images will help here, except if we regenerate it all the time. GTK itself is themeable and the settings might change.
Would it be possible to integrate the code into the existing uxtheme library and make it a runtime setting?
If something, this should be optional. This library already doesn't work with oxygen-gtk3 (the buttons and everything are all flat color without any borders, see screenshot [1]), and is unlikely to start working in future (because oxygen-gtk isn't css-based and relies on widget structure, which is likely not what the library expects). And I personally wouldn't like to have to set some special GTK preference for wine.
[1]: http://6g6.eu/sih0-snapshot156.png
On Wed, Jul 1, 2015 at 9:24 PM, Stefan Dösinger stefandoesinger@gmail.com wrote:
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
Hi,
Am 2015-06-30 um 23:39 schrieb Ivan Akulinchev:
Here is the link: https://github.com/akulinchev/uxthemegtk (see the screenshots at the bottom of the page)
I like the idea, and the screenshots look really nice!
If you want, I can help you to add it to the Wine code. If not, I will develop it alone as a third-party project
I think this is something that should be included in the Wine code.
- From the way your build instructions look like your library seems to
be a replacement for Wine's uxtheme.dll. I am not an expert on theming, but I suspect this is the wrong approach. I think this should be developed as a Windows theme that is loaded like any other Windows theme by our uxtheme.dll. A user could then ideally select between no theme, your gtk-based theme and native windows themes using winecfg without replacing DLLs.
-----BEGIN PGP SIGNATURE----- Version: GnuPG v2
iQIcBAEBAgAGBQJVlDBgAAoJEN0/YqbEcdMwJZ4P/3+vqIDHTO+H0WRHSDDqBjIu nNH7hdnrqx8I7c/lJ5VCevUfqRrM+u74fGkkonjZy3w9YtGN6ALQRy9WEZTXyNEC ANLaUrziybJAZE3igGmFSwTex8qDA+Miuq7LS6Eh8aVpRtZsMDaNnED28YbZpALT rdC9f+1EvmvdMwGDa2UxlB9AqK49+5w+cQoQKbzk0Cw/webkdjTIFWGRskS4P1TP SqUlNTZzSsw6WU25Dc5dMx0YOiCO5LR620IcROOcEEnXZgz2DZf8pH0aor04/HBR 1NsdG8rp0OlwqfcPBUSB7bO5E4qzuutRa89TvIVorA5uf/xJYl0BIw5eRJQ5vEqy p/RU1iY4UtRlDn/v8aQ0iba0ZoR9gNDpW8kaWSXDP44sTfqVmjnCtBRMaQ94ZZHZ mTxEna0w1mQxWJ3fUoFTRLSfVWS7gKfx3zhHUb9ZID7UnWqiaZu0B4flryGfcTqv rlPOmegLLrBAFvGLsLvLFviUevy0xk/0mHml78PKzn9NWObQ++MsXXseJsGCYfEU GyNEl5LT1U60dTLrcxrpqYrq/wyagbQY+ThUUIzGmRxFUsGSBZ0K7dsUJcdbtVHr QKjZyqyvhLhUATFuBIDii626IU0Ocaq0UQPpBgMYnOFKDWvW4Cedl9ANaawMHiaF No+n8CpV9u+OGIg2hVju =rPLx -----END PGP SIGNATURE-----
Hi Ruslan,
Thanks for your feedback.
It's very interesting, I'll try to fix it.
As mentioned above, I don't want to replace the standard Wine's implementation, it should be an optional feature.
Regards, Ivan
02.07.15 11:05, Ruslan Kabatsayev wrote:
If something, this should be optional. This library already doesn't work with oxygen-gtk3 (the buttons and everything are all flat color without any borders, see screenshot [1]), and is unlikely to start working in future (because oxygen-gtk isn't css-based and relies on widget structure, which is likely not what the library expects). And I personally wouldn't like to have to set some special GTK preference for wine.
On Wed, Jul 1, 2015 at 9:24 PM, Stefan Dösinger stefandoesinger@gmail.com wrote: Hi,
Am 2015-06-30 um 23:39 schrieb Ivan Akulinchev:
Here is the link: https://github.com/akulinchev/uxthemegtk (see the screenshots at the bottom of the page)
I like the idea, and the screenshots look really nice!
If you want, I can help you to add it to the Wine code. If not, I will develop it alone as a third-party project
I think this is something that should be included in the Wine code.
- From the way your build instructions look like your library seems to
be a replacement for Wine's uxtheme.dll. I am not an expert on theming, but I suspect this is the wrong approach. I think this should be developed as a Windows theme that is loaded like any other Windows theme by our uxtheme.dll. A user could then ideally select between no theme, your gtk-based theme and native windows themes using winecfg without replacing DLLs.
I just want to say kudos to the author of this work. It is something I considered attempting myself a number of years ago.
I think the comments about generating msstyles files rather that patching uxtheme has merrit. Could it be dome as a tool that generates the theme (and caches it), and then hook that into the wine boot-up via a registry startup key?
The other thing I observed is that many gtk themes do odd things that could break your conversion process - as Ruslan observed. There will be many edge cases, so a rich set of tests would be helpful. It may be necessary to put in some perceptual algorithms to iron all the glitches out - though if you're lick that won't be necessary.
Anyway, this is really exciting work and I look forward to it going out to a really wide audience.
Joel