Visual Styles Explained


Recommended Posts

Disclaimer: I work for Stardock so while this article is as objective as I can possibly make it, it is important that you know any biases I may have. I was arguably the first msstyle visual style author outside of Microsoft during the early Windows XP betas. Armed with just a resource editor, I poured through the format and watched how msstyles evolved. It is safe to say that Microsoft's visual styles efforts were heavily influenced by our previous work on WindowBlinds which I am the Product Manager of.

Ultimately, my job is to encourage users to customize their computers. What tools they use to do that are up to them. This document is designed to provide a technical analysis as to how visual styles on Windows XP work, where they come from and how to add more of them to your Windows XP system.

Introduction: Windows XP gets released!

When Windows XP was released, users immediately could see that something was different. It came with an updated user interface that looked more polished. The new look came with a new term: A visual style. A visual style represents the customization of the main parts of the Windows graphical user interface (GUI). Windows XP came with 1 called "Windows XP style".

The new Windows XP style (aka "Luna")

Naturally some users wanted to be able to add more visual styles to Windows. This article talks about how you can add more visual styles to Windows XP and gives details on the different formats of visual styles.

The Windows XP visual style uses Microsoft's new visual style format known as MSStyles. The Microsoft visual style format has an extension of .msstyles. It can be found in your windowsresourcesthemes directory. A .msstyles file is actually a Windows DLL renamed to .msstyles. This file contains bitmaps and other resources used to change the various elements of the Windows graphical user interface.

Now, if only we could just copy luna.msstyles (the file name for "Windows XP visual style") to a new name, edit those resources and voila, have a new visual style. That won't work. That's because Microsoft protected their visual style format by making Windows XP only recognize Microsoft Digitally Signed visual styles. You can't just download new visual styles or edit them and use them. You have to modify Windows XP to do this.

Which is where we're at presently. If you want to have more visual styles on Windows XP you have to make some choices:

Either:

(1) You find a program that will patch out that digital signing protection so that you can use Microsoft's .msstyles formatted visual styles.

or

(2) You find a program that will allow Windows XP to use other visual style formats ("visual styles" is a marketing term for "skins").

Remember, all a visual style is is a collection of images designed to create a new user interface. Visual styles are also referred to as "skins".

There are lots of skin formats out there. Other well known "skin" formats include WinAmp, Windows Media Player, WindowBlinds, eFX, Neoplanet, Chroma, Illumination, Sonique, Trillian, and dozens of others.

Obviously if you were going to go with option #2 you would want to use a visual style format that supported as many (and preferably all) the Windows XP GUI elements as possible. For instance, WinAmp is a great MP3 player but its format doesn't support skinning standard Windows title bars. The most popular visual style format out there for changing the Windows GUI is the WindowBlinds visual style format (UIS for User Interface Specification).

Why Protect It?

One of the first questions you may ask yourself is, "So why did Microsoft do this? Why not let us just create our own Microsoft format visual styles?". Probably the most obvious reason is: It's Microsoft's format and therefore they want some say on how it's used. But there are practical reasons.

First there is the obvious support issues. How much technical support does Microsoft want to provide for people who download something that replaces their GUI? It's amazing how many people who proudly claim they never click on attachments in their email sent to them by strangers but will visit some website and replace system files (as a side note, things that change your boot screen are replacing bits in the Windows XP kernal, people who download logonui.exe's are literally running an EXE made by "some guy" on the net). So choosing how you do this sort of thing does require some care. This isn't to say that you shouldn't do these things, just that you should be careful where you're getting these things.

An even better reason is branding. Microsoft has a vested interest in trying to establish a Windows XP branded look. If Linux or some other OS ever truly becomes a threat on the desktop, being able to have a branded look for Windows could become important (and is already important now in establishing a standard Windows XP look). That's why it's called "Windows XP style" rather than say "Luna".

There are also licensing issues potentially. Perhaps Microsoft wants to protect its format from unauthorized use. It's hard to say what they may use it but given that it is their format, they certainly have the right to do what they want.

Moreover, supporting third party visual styles could become problematic. What if Microsoft changes the format in a service pack? They'd have to worry about getting thousands of support calls from users whose systems no longer correctly boot up because they were using a Microsoft format visual style that no longer functions. That means they'd have to put resources into maintaining backward compatibility on something that is purely cosmetic. There is, afterall, no reason at all to think that msstyles will function on Longhorn since they are not supported by Microsoft (they are the equivalent of an undocumented API). Bear in mind though that Long horn is a long way away so this shouldn't be a major concern presently.

Remember, it's YOUR OS. You paid for it. So why shouldn't you be able to do whatever you want with it. While it's easy t understand why Microsoft protected their format, that shouldn't necessarily disuade you from using it if you personally want to modify your system to use their format.

What is native?

One of the first objections you'll see to someone who wants to use more Microsoft formatted visual styles is that they want to run "native" visual styles. This is a misnomer. It is like saying that BMP is "native" but .JPG is not. Ultimately it is the format that really matters.

The term "native" has been so abused over the years that many people interchange "bundled" with "native". Is "Notepad" more native than some other text editor? To understand this analogy, we need to look at how visual styles on Windows XP work:

There is a file called uxtheme.dll along with a Windows XP theming service in Windows XP. Combined, these two control Microsoft formatted visual styles on Windows XP. When a Microsoft formatted visual style is enabled, uxtheme.dll uses a system hook to intercept paint messages to the operating system and substitutes its own. uxtheme.dll gets attached to each and every process running on your computer. Anyone who argues that using Microsoft visual styles "consumes no extra memory or resources" is incorrect. Not only do you have a couple hundred K DLL being attached to all your processes, but you also have the resources for that visual style (the bitmaps and such). To give you an idea, luna.msstyle is over 4 megabytes in size. Don't let me scare you, none of this uses a significant amount of resources on Windows XP. Most modern systems have at least 256 megs of memory. But to say that it uses no resources at all is simply wrong. Similarly, anyone who says that using msstyles requires no system hooks is also wrong. It uses just as many system hooks as any other solution.

Similarly, if you use WindowBlinds, it does the same thing. On Windows XP, it uses the same APIs as uxtheme.dll and uses its own wblind.dll which allows Windows XP to use WindowBlinds format visual styles. The difference being that WindowBlinds has had years of development behind it to make it as memory efficient as possible. As a result, WindowBlinds visual styles tend to use less memory and resources than a MS visual style. This is relatively easy to verify, simply load up one, load up task manager and measure how much total memory is consumed. Then load up the other one and do the same thing and compare.

Of course, bear in mind, both use a trivial amount of memory. Someone worried about something using a few megabytes of RAM these days has obviously never seen how much memory Internet Explorer uses or how much some things sitting in your system tray uses (my Palm Pilot hotsync tray program uses more memory than WindowBlinds and the msstyles loader combined).

Part 2 (next post): Choosing a visual style option...

Link to comment
Share on other sites

Visual Style Options: Which to choose?

There is no correct answer for this. If want to use .msstyles formatted visual styles, you'll have to find a way to patch out the digital signing security. Whether you want to do this or not depends on your level of comfort in modifying your Windows system DLLs (whether patching the file itself or doing it in RAM). If you can find a free way to do this, then it does have the benefit of not costing anything.

The other option as I mentioned is to use a program that allows Windows XP to use a visual style format that doesn't require being Microsoft digitally signed to be used. The most popular choice is WindowBlinds 3 (also called WindowBlinds XP). That's because the WindowBlinds visual style format supports virtually all of the Windows XP GUI elements and has a number of additional features in its format (animation, alpha blending, plugins, MP3 controls, hardware acceleration, on the fly coloring, and more).

One advantage WindowBlinds has on Windows XP is that it has the ability to make your existing programs theme aware. Of course, there is a downside to this too - programs that don't follow MS's guidelines can have visual anomalies. WB 3.4 and above has an option for it to behave like MS visual styles in only skinning "theme aware" applications.

For compatibility reasons, Microsoft's visual style format will only "skin" apps that are "theme aware". Other apps only get their title bar and borders skinned. That's why so many programs partially look like Windows 95 programs.

Windows XP comes with an integrated exclusion list that has many hundreds of applications on it. You can add additional programs to this exclusion list by going to the properties dialog on a program, clicking on the compatibility tab and telling it not to be affected by visual styles. With WindowBlinds, you must do this from the WindowBlinds configuration program. But in both cases it is relatively easy for you to block misbehaving applications from being skinned. But in either case, there is no such thing as "100% application compatibility". Some programs simply do funky things and neither Microsoft, Stardock or whoever else can do anything about that.

On the one hand, WindowBlinds will, by default, skin virtually all your programs since MS visual styles exclude non-theme aware applications, on the other hand WindowBlinds's visual style format does not yet support all of the Windows XP elements such as the task pane (shellstyle) and related elements. While each new version of WindowBlinds extends its visual style format to support more elements, right now it is a choice between skinning all your programs but with some elements not being completely skinned or only skinning some of your programs but it being very thorough.

One obstacle WindowBlinds has against it is perception. Because WindowBlinds has been available for so long, many users may have had their first experience on Windows 95 or Windows 98 which were not designed to be skinned. A user who had a poor experience on Windows 98 may bring that experience to Windows XP where WindowBlinds runs much more seamlessly.

Many users (myself included) tend to remember a program when we last ran it and forget that programs do improve over time. Afterall, look at the Linux users who still contend that Windows crashes "10 times a day" simply because the last version of Windows they ran did in fact perform problematically for them.

Windows XP is, in my opinion, the ultimate customizeable operating system. From working with Microsoft during the beta, I can tell you that they put in significant effort to make it so that customization programs would work better with it. Contrast that to other OS vendors who have been outright hostile to letting others customize their OS (despite telling people to "think different").

Next part will talk about the visual style formats.

Link to comment
Share on other sites

Visual Style Formats: What's the best route?

Let's talk about the actual format. This gets into a matter of philosophy. Since no matter how you slice it you're going to have to download a third party program in some capacity to use more "skins" than what comes with Windows XP, it really just comes down to what way allows you to run the skins you want?

Let's look at .msstyles and .uis (User Interface Specification - The WindowBlinds visual style format). Just fair warning, I was involved with .uis's design so I am a biased source. But I don't think any of the things being written here are particularly controversial.

.MSSTYLES: Microsof Visual Style Format

MSSTYLES is an INI based skin language that Microsoft created and arguably inspired by the WindowBlinds format to create the Windows XP visual style. It was designed for internal use by Microsoft and is not supported for use by third parties. It has one official skin (Windows XP Style, aka Luna).

What is good about .MSSTYLES is that it's thorough. Every GUI element in Windows XP is skinnable with it. Microsoft's team knew what they were doing. It's safe to say that if Microsoft wanted to, they could create the ultimate skinning format. If there's really anything to complain about in the .MSSTYLE language is that it's overly complex. It takes a lot of work to make a skin for it. But my complaint isn't legitimate because Microsoft never intended for third parties to use it. It was designed specifically so that they could create a single new look for Windows XP and it does the job extremely well.

As I said, Microsoft could create the ultimate skin language if they chose to. I know some of the guys involved and they're code gods. But they chose to make something that is pretty basic. As a result, .msstyles isvery limited in scope. Specifically it's limited to having the ability to simply create the Luna skin. The further away you get from the default Windows XP style (Luna) the more these limitations show up.

For example, you can't create a MacOS type skin with it because it doesn't support having title bar text backgrounds. You couldn't use it to create a BeOS style skin because it doesn't support tabbed title bars. You can't move the title bar buttons at all. The size of the borders is very limited. In short, the further away from the default Windows XP style you get, the more problematic things become.

And it wasn't designed to extend the user interface, merely make it look somewhat different. You can't put in plug-ins or add more types of controls and buttons or alpha blend parts into one another. In short, it's not as flexible. But this is by design. Microsoft could easily do these sorts of thing if it wanted to. But that wasn't its purpose. It wasn't meant for a bunch of third party "skinnerz" to run amuck with it.

And there may be other reasons why Microsoft put in so much effort to protect their format from being used by third parties. Microsoft has publicly stated they discovered that as soon as they tried making MS visual styles that strayed at all away from the default look that all sorts of compatibility problems occurred.

.UIS: WindowBlinds visual style format

Believe it or not, .UIS was the first skin language ever developed for the Windows GUI. It has been being developed since 1997. That alone gives it an advantage from a skin author's point of view. That's because much of the design of it and features of it have been based on skin author feedback. And it it can do an awful lot of things. It supports animated title bars, sound effects, plug-ins, additional controls, irregular window shapes, animated scrollbars, scripting, user configurable title bars, wallpapers, icons, explore backgrounds, dialog texturing, and a host of other things. Someone might say this makes WIndowBlinds "bloated". These features don't make WindowBlinds bloated but it can make a particular skin "bloated". And since WindowBlinds supports hardware acceleration, you can do a lot of neat things before your system feels a pinch.

If we think of skin formats to be akin to be like bitmap formats, WindowBlinds simply lets people have a far greater palette of colors (so to speak) than .msstyles. And with that, much bigger and more complex skins can be made. But it also means much better looking, much more productive, and even much smaller skins can be made. A user could put a stock ticker at the bottom of their window. .UIS supports roll-up buttons, MP3 controls, always on top buttons, and smart bars. And a big advantage is that WindowBlinds can change the color of a skin on the fly. So any skin literally has 16.8 million color choices.

The drawback to this flexibility is that many skins made for it are creative but less usable. Msstyles has the nicety that any skin made for it is ultimately going to be somewhat useable because of the confined parameters. Neither format will keep a visual style from being ugly but while WindowBlinds will let you put title bar buttons on the bottom, the question arrises "Well that's cool but how useful is that?" Fortunately there are thousands of WindowBinds visual styles available to choose from but one does have to weed out the visual styles that don't conform to your tastes.

Of course, another advantage to all this is that the WindowBlinds visual style format will work on any version of Windows where as a skin author making an msstyle will only be able to have their skin used by Windows XP users.

Which format people use depends on which one has the skins they want.

Both have their advantages and disadvantages. WB visual style flexibility gives skin authors more options. MS visual styles provide consistency between skins.

As other visual style formats come on-line (imagine a general visual style format based on WinAmp 3 for instance, that could be cool), we can explore those and look at what they can do.

The bottom line is, it's your computer, make it work the way you want it to! Have fun!

Link to comment
Share on other sites

'Stickified' by moderator.

Thanks Frogboy... I'm sure that n00bs and the l337 amongst us will be able to take something from your contribution.

Remember folks that Neowin has been a major player in the skinning world since the betas of XP, so keep posting news of your completed visual styles and WB themes in the relevant forums.

Peace / Cheeky out ;)

Link to comment
Share on other sites

The original one got zapped during the outage (I suspect that it was too long for the setup as there's a 10,000 line limit now).

So I took the opportunity to break it up into 3 parts and edit it based on early feedback.

Link to comment
Share on other sites

well frogboy, thats just a sneaky way of promoting your app, but i must say i like your way much more than the way of others to tell the peoples "buy my software" cause you talked very objective about both, and most companys only say "the other app is ****, use mine"

cya:alien:

Link to comment
Share on other sites

well, yeah, windowblinds is capable and so on

but it still just sticks on top, and bugs out programs such as bulletproof since bf have a extra button here and there.

so, it might look good, but no way im gonna use it.

Link to comment
Share on other sites

As I indicated in the series, WindowBlinds and MS's visual style engine work essentially identically. They are equally "on top" of the OS UI as the other.

Link to comment
Share on other sites

I was never a fan of WB. I read your article, and gave it a shot. I liked some of it, and I didn't like other parts. One thing in particular, when an app is slow responding, it shows the old windows look. (a good example is IE not immediately responding to an MOV loading) Anyway, I never have the problem with the uxthemes. Something as simple as that, has me running back to the original way I skinned this.

MS was dumb not to allow unsigned code for these. I understand why, but I still think it was not smart when other OS' are really customizable by default.

Link to comment
Share on other sites

Regarding MS: At least they don't go around sueing people like Apple was doing at first to companies trying to release software to customize MacOS X. So it could have been worse. ;)

Regarding WB and the title bar, this is actually something we recently addressed in the registered version (3.4C) that will be in the next public version (3.5) in a month or so.

Link to comment
Share on other sites

  • 1 month later...

Of course the problem I have with Windowsblinds, StyleXP, IconFactory, TweakXP, etc... Anything that has to do with customizing your desktop with the exception of Webshots!. Is that they all cost money!. Desktop customization is a big money maker. At least with Linux you get several desktop managers. Good ones KDE and Gnome for FREE. I'm not saying everything should be for free, but to change an icon, visual style, etc.. Give me a break people. I would have to spend around $100.00 for what I want in XP customization. The price of the operating system itself!.

Link to comment
Share on other sites

Brad, you say: 'You own the OS, so you should be able to do anything you like with it'. Actually, you don't own it, you just own a licence to use it. Of course if M$ have their way, you won't even own a licence to use it any more - you'll just be renting it.

Link to comment
Share on other sites

  • 5 years later...

Think some of the information from this thread can be updated for *6 years later* ?

I do realize that Windows Vista's theme patching differs much from XP's. Can someone explain how?

Also, what kinda new developments has there been from MS signed themes (Royale/ Energy Blue/ Media Center Style/ Tablet PC style + Royale Noir + Royale Zune) to 3rd-party fan made ones to WindowsBlinds ones?

Link to comment
Share on other sites

This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.