Here's the article I wrote on it:
https://www.stardock.com/stardock/articles/xpskinning.html
Introduction
One of the things that has been driving me crazy since the earlier Windows XP betas (back when it was known as "Whistler") is that Windows XP was going to come with some sort of XML based skinning language that would let users create their very own skins (known as visual styles in Microsoft speak). This is a rumor that was not perpetrated by Microsoft but by overly enthusiastic beta testers who saw that Microsoft was going to allow people to switch between the old Windows 95 look (Classic) and the new Windows XP look (Windows XP style). The code-name to the Windows XP style was "Luna". The fact is, you cannot add additional visual styles to Windows XP that are not Microsoft certified without a third party program.
So how does this work and what does all this mean for users of Windows XP? Microsoft's goal was simply to let people choose between two different looks. That's it. It was not their intention (and they have said this specifically to me countless times) for a bunch of "skinnerz" to go hog wild and create "skinz" for it. They specifically did not want this and did not want it enough that they put forth some effort to ensure this wouldn't happen. They ensured this by digitally signing their visual style files (that have an extension called .msstyles). Why? I can't speak for Microsoft on this but the reasons should be pretty obvious: 1) They don't want the support hassle. That is, someone downloads a "skin" and it messes up their system and who do they call? Microsoft. And 2) Non-Microsoft made skins will almost certainly be slower. They aren't likely to be optimized to be the perfect size and shape in the actual file. Want proof of this? When you see someone say WindowBlinds is "slow" or "bloated" they are really talking about the skin they're running. Stardock WindowBlinds uses a trivial amount of memory and resources. And it is fast. Extremely fast. It's faster than visual styles even at painting. But there's not much one can do about skins. People who make skins are people who generally are not worried about a modest loss in GUI performance in exchange for a much cooler or more functional UI. Afterall, performance freaks are better off just sticking with "Classic". And those not as into it will always find it easier to blame the engine than the skin. You can almost see the nasty magazine reviews write themselves if Microsoft had let people make their own skins -- "Windows XP: Nice features, dog slow." The skinning engine doesn't really have to do that much, it just has to take the bitmaps and draw them with standard APIs and hope that the video drivers support those APIs properly (which unfortunately they don't always).
What is native?
The basic misconception that people who advocate visual styles is the claim that "visual styles are 'native' and WindowBlinds is some bloated third party add-on." This is a claim made by non-technical people who confuse bundling with nativity. Let's talk about how visual styles work:
On a Windows XP install, there is a file called "Luna.msstyles". This is the "skin" that is known as "Windows XP style". It is 4 megabytes. When you load Windows XP, a service known as "Themes" is loaded into memory. If you look in your tasklist, you'll probably notice a few processes called svchost.exe. This is one of them.
When you switch from "classic" to "Windows XP style", this service loads up Luna.msstyles, verifies that it is digitally signed and then talks to a couple of DLLs, most notably uxtheme.dll which handles most of the drawing. If the program in question is theme aware, Windows XP "skins" its buttons and scrollbars and other goodies. If it is not theme aware (i.e. 99% of apps) then it will just handle the title bar and possibly the scrollbar.
So what does this mean? Windows XP includes a program that loads up a skin and applies it to the system. The difference between that and a third party program is purely one of bundling. Microsoft bundles uxtheme.dll. It could just as easily had made it a download. If Stardock renamed wblind.dll to uxtheme.dll and it was included with Windows XP, would it magically become "native"? Of course not. That's because the term "native" has been so abused over the years that no one agrees on what "native" is anymore. WindowBlinds XP is not only just as "native" as visual styles, but it uses the same DLLs and same API calls for 90% of the work.
Visual Styles are not better or worse than the myriad of third party programs that can do this sort of thing, it's just included. Microsoft's developers are no better or worse than the third parties on average. And one could argue that developers who have done nothing but eat, drink, and sleep this sort of thing for 3 or 4 years are in a position to know lots of ways to get the most out this sort of thing.
I don't want third party stuff, I want "native" XP styles!
So you want to make your own skins? You can't. You'll have to get a third party program. That's because Windows XP will only read Microsoft digitally signed .msstyles files. Maybe Microsoft will release more. Maybe. There aren't any in Plus XP though. Maybe someone will crack digital signing? Let's hope not. That would be bad in so many ways that we'll leave that for a different discussion. But you still want "native" skinning on Windows XP?
There is a solution to this in the form of WindowBlinds 3 (in beta form as WindowBlinds XP). So how is it "native"? How does it work? The reason you have to use a third party program is straight forward - Windows XP by default reads in .msstyle files. .msstyle files have to be Microsoft digitally signed in order to work. Changing an existing .msstyles file will break it. So what you have to do is find a way to not have to use the theming manager built into Windows XP. This means a third party program has to be involved. Once you have a third party program, it's a question of whether you want that third party program still go ahead and use non-Micrsosoft digitally signed .msstyles or some other skin language.
Here are the two basic scenarios for the third party program:
1) You can use the .msstyles language (it already exists after all -- assuming MS doesn't sue you for violating its intellectual property). The third party program then just has to load it and send it over to uxtheme.dll. Don't be fooled though, this route isn't the same as simply making your own "XP" skins. It's simply borrowing someone else's skin language to make their own skinning program. You still have to run the third party program to get this to work.
or
2) You create your own skin language and have that talk to uxtheme.dll. This is what WindowBlinds XP does. It uses .UIS (User Interface Specification) files and then sends them over to uxtheme.dll. Since it has additional features, a second DLL (wblind.dll) is loaded to handle the portions that uxtheme.dll can't handle (for example it can make all apps "theme aware", it handles the title bar and border of a window since WindowBlinds can handle all sorts of different visual styles). But ultimately, it's the same deal on XP - you load up a skin, you send it over to uxtheme.dll to draw.
Either way is equally "native". Both require that a third party program be running in the background to handle loading up the skin and sending it over to the uxtheme.dll. But which way is better?
Skin languages: What's the best route?
This gets into a matter of philosophy. In my mind, as soon as you require the user to run a third party program, the choice should become a no brainer - pick the program that supports the better skin language. So what makes one skin language better than another? In practical terms, there are two choices: MSSTYLES and UIS (User Interface Specification). Let's talk about them.
MSSTYLES is an INI based (not XML as some people have claimed) skin language that Microsoft created to create the Windows XP visual style. It was designed for internal use and is not supported for use by third parties. It has 1 "skin" (Windows XP style). It runs only on Windows XP. It is, in my biased opinion, very complex yet incomplete. I read on-line where someone claimed that MSSTYLES could skin more things than WindowBlinds. It's an assertion that reality doesn't agree with. Not because Microsoft couldn't create the greatest skin language in history if it wanted, but because that wasn't their intent. They created a skin language in order to create the Windows XP visual style. It wasn't designed to be the end all skin language. UIS was though. UIS was designed by skin authors over the course of 3 years to make it powerful yet easy to use for skin authors. It is very flexible. For instance, UIS can make skins that resemble MacOS. MSSTYLES cannot. It doesn't support centering of the title bar text with a bitmap behind it. You could not make a BeOS type skin with it. There are a host of visual features that users who want to have nice looking skins would have to live without if they chose MSSTYLES. IAnd of course, UIS supports plugins, additonal buttons (rollup, always on top, link buttons, shortcut buttons, clocks, stock tickers, what have you), animation, sound effects, scripting, etc. Not that most users would care about these things. But they are there and some of them are quite useful. UIS also works on Windows 98/ME/2000 via versions of WindowBlinds for those platforms. These are things that matter to skin authors. A good skin takes weeks of effort. A good skin author is going to care whether the skin language was designed with them in mind. They're going to care whether it lets them do what they want it to do. And they will also care twhether their friends and family who may not have Windows XP can use it or not.
WindowBlinds also has one additional advantage -- there are thousands of skins available for it. Most of them aren't very good. But that's the case with anything of this nature. Out of every 100 skins, maybe 5 of them are really good. So if you want to have 50 good skins to choose from, you have to have a thousand skins made.
Stardock could allow WindowBlinds to read .msstyles and apply them. But why? Why put in work to basically use a crippled skin language? It would be like asking Id to allow Quake 3 to load up DOOM 1.0 levels.
But I want it for free!
Which is ultimately what it comes back to. A user who has purchased Windows XP doesn't want to have to buy another program to get more visual styles. Heck, even downloading a third party program seems obnoxious. But the fact is, as it stands now, any solution is going to require the user to download something. And remember, users can use WindowBlinds for free. It's the additional features that require the user to register. And WindowBlinds XP does everything that Windows XP's own visual styles do and more. So in the case of WindowBlinds, it's a matter of downloading a megabyte file or so and installing it and off you go. If there are features beyond what's "native" in XP, then they have the option to buy the enhanced registered version. Stardock's view is straight forward:
Most people will probably be satisfied with the "free" version. But a large enough segment will want these key features of WindowBlinds 3:
It can make all your apps theme aware. The "free" version of WindowBlinds is like Windows XP itself. If the app isn't theme aware, it doesn't skin it completely. The enhanced registered version makes all applications theme aware so the system is completely skinned.
Without WindowBlinds, most of these buttons and scrollbars, and checkboxes and such would look like Windows 95.
It can dynamically color a skin on the fly. The "free" version is like XP here too. Windows XP comes with 3 color choices (Olive, Silver, Blue). If you don't like them, too bad. But the enhanced registered version of WindowBlinds lets you pick out a color from the color wheel and change the color to anything you want.
WindowBlinds can change the color of a skin dynamically
WindowBlinds 3 will have SmartBars. Basically this means being able to add buttons to your title bar as a user. Want to have a button that lists your top 5 most used websites? Or one that rolls-up the window? Or brings up a menu of your most used apps? SmartBars can do these sorts of things. The "free" version won't do these sorts of things since XP itself doesn't.
There are tons of little things that are nice. WindowBlinds 3 will eventually introduce SkinCast for registered users so that they can more easily access high quality skins of different categories. Additional effects, sound effects, HyperPaint, and much more.
The pattern here is that the "free" version of WindowBlinds 3/XP will do what users are asking -- let Windows XP have additional visual styles. Stardock's bet is that out of the millions of users who use Windows XP, many thousands of them will want these kinds of features.
Conclusions
The only downside of the "free" version is that you have to have a fairly small program residing in memory to handle the loading of the .uis files and sending them over to uxtheme.dll. Of course, it's all about perception. Next time you're looking at your tasklist in XP (Ctrl-Shift-Esc) note how much ram those svchost.exe processes use. WindowBlinds uses less RAM than a typical XP powertoy.
Adding additional visual styles to Windows XP will definitely require some third party program to be involved. This is because .msstyles have to be Microsoft digitally signed. There will likely be a host of programs that take various strategies to load up a skin and send it to uxtheme.dll. Since it does much of the hard work, there's no doubt users will have various options to add additional skins to Windows XP. The question will merely be one of which third party program are you going to use to do it? And which types of skins do you want to use? Just don't let yourself be fooled that one way is more "native" than another. The only completely "native" way would be if Microsoft got rid of the digitally signed requirement for .msstyles files. But even if they did that, it would still come down to whether one would rather use .msstyles based skins or some other skin language and the overall features the various methods provided.
There's also the other thing, Microsoft doesn't recommend any given third party product over another. But Stardock developed WindowBlinds XP with close contact to Microsoft. It was officially launched on September 26 at Microsoft. It is Microsoft Windows XP certified. In short, it's not some bloated quickie third party hack messing with your system. It integrates seamlessly into it.
I'm a biased source but I'd choose WindowBlinds 3 over any potential alternatives even if I weren't involved with it. It's native on Windows XP (not bundled). It has thousands of skins. A skin language designed by the skinning community. And tons of really cool features. And the free version does what XP does anyway. Not to mention, as a developer, I need to be able to make my windows always on top and WindowBlinds is the only program available that lets me put an always on top button on my title bars.