Introduction
Due to Microsoft's flagrant disregard for the thousands of developers who have voiced their utter dislike for the new theme colors used
in Visual Studio 2012, it was necessary to create a custom theme in order to even consider using the new IDE. Included in this article are an outline
of the key changes made to the VS 2012 UI, the tools used, and a little background on why this was necessary. I've included some files & links to make it easy
for everyone to do for themselves what Microsoft should have done in the first place: Create a clean, colorful, user-friendly interface.
Background
Microsoft blatantly ignored the number one
complaint amongst developers who tested the Beta & Release Candidate versions of Visual Studio 2012: The horrific choice of colors used in its 'Light'
and 'Dark' color themes, as well as the switch to monotone icons. Even a cursory review of the thousands of comments reveals the new theme colors & icons result
in a significant decline in developer productivity and desire to use the new UI. Some comments even indicate that the dismal colors may lead to thoughts of suicide.
Although Microsoft did add back a miniscule amount of color in a few areas of the final product, the software giant clearly disregarded the majority of developers
who flat out hate what its design team did to Visual Studio.
Obviously, it is a very unfortunate decision on the part of Microsoft and the Visual Studio design team not to listen to those of us who tried our best
to voice our dislike for the new UI. I have already read numerous posts by developers who are either considering adopting a new IDE, or are simply not
upgrading to VS 2012 until Microsoft fixes the problem.
I personally considered not purchasing VS 2012. However, there are a few compelling additions to the .NET Framework 4.5 I would like to take advantage of.
As such, I took it upon myself to come up with a cleaner and more user-friendly color theme.
The New 'Cool Blue' Theme
As a fan of both the VS 2010 color scheme, as well as the Microsoft Office 2010 Blue theme, I decided to base my VS 2012 Cool Blue theme on those.
Below is a screen shot that captures most of the key color elements.
Obviously, we all have differing ideas on what works best for us. It doesn't matter to me if you want to use this theme as-is or modify it to suit your
own tastes. In fact, I’d love to see more user-designed themes pop up; I know we can do a better job than Microsoft! I will note that this was
just a quick-and-dirty run through of re-coloring the UI. I tried to make things pop, ease eyestrain, create some much-needed differentiation between
the different areas of the UI, etc... And of course, hopefully keep a few of my peers from slitting their wrists.
Change Notes, Links, and Files
The first key change I made was to tweak the Registry entry to eliminate the ALL CAPS menus. WHAT was Microsoft thinking when they did that?!
Here's a link to Richard Banks' article
that covers this easy fix.
To modify the UI colors, I used Brian Chavez's Visual
Studio 2012 Theme Editor. As he notes, this is a very basic, though functional, program. I began with the 'Light' theme, and modified it to get what I wanted.
One of the key problems I ran into was trying to figure out what properties (Theme Records) affected what parts of the UI. To help with this, I dumped all of the values
to an Excel spreadsheet. I've included this spreadsheet, which shows the original color values of the 'Light' theme and notes my changes.
To make things easier, I did sort each of the theme Categories alphabetically. To get the Theme Records listing to match, just add a simple sorter to the ThemeReader class:
private class ColorRecordSorter : IComparer<ColorRecord>
{
public int Compare(ColorRecord x, ColorRecord y)
{
return (x.Name.CompareTo(y.Name));
}
}
Then, within the UnpackColorCategory
method, add this line before returning the Category:
category.ColorRecords.Sort(new ColorRecordSorter());
I've included the modified Registry Editor (.reg) file and the Excel spreadsheet with my notes in the attached .ZIP file.
Good luck and happy coding!