Visual Studio 2012: Additional theme support
Yesterday was a disappointing day. After installing VS 2012 on my dev box my eyeballs were assaulted by some Microsoft UX designers cruel joke: The absolutely aweful "Light" and "Dark" UI Themes. Apparently I'm not alone in thinking these themes are a HUGE step backwards in terms of usability of the IDE.
Since there was some rumbling on the interwebs about Theme support in VS 2012, I decided to fire up ProcMon to answer 2 questions:
- Where are the themes stored?
- Can I edit / create my own theme?
Pithy remark: I have come to think of Visual Studio 2012 as Microsoft Visual Distraction 2012 :)
References / Notes:
- Microsoft's responses to Visual Studio 2012 criticism [forums.digitalspy.co.uk]
- How can I switch themes in Visual Studio 2012 [stackoverflow.com]
- Why the face of Visual Studio 2012 is so ugly? Who designed it? [social.msdn.microsoft.com]
- Microsoft Visual Studio 2012 - is ugly as hell [connect.microsoft.com]
- Leave VS 2010 theme (and the theme editor extension) as an option [visualstudio.uservoice.com]
- Process Monitor [technet.microsoft.com]
Where do the themes live?
From my Procmon analysis I found that there is a Registry location that holds theme information:
HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\11.0_Config\Themes
There are 3 themes in the RTM version:
-
Light - {de3dbbcd-f642-433c-8353-8f1df4370aba}
-
Dark - {1ded0138-47ce-435e-84ef-9ec1f439b749}
-
HighContrast - {a5c004b4-2d4b-494e-bf01-45fc492522c7}
In looking around on the file system I found a place which has 'theme' files in it, but didn't investigate much since altering the registry keys seemed a more promising route:
C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\Themes
- HighContrastTheme.wtm
- VisioTheme.wtm
Can I edit or create a new 'Sane' theme?
I started playing around with the Registry keys and found that I could 'unlock' the hidden HighContrast theme by:
- Exporting the HighContrast reg key
- Changing the GUID to that of either the Light or Dark theme's GUID
- This was done using Notepad++ Find/Replace inside the exported .reg file
- Renaming the original 'Light' or 'Dark' theme reg key GUID
- Note that this is important if you ever want to go back to the original light/dark themes
- Import the altered REG file by double-clicking on it
- Restarting visual studio gives me something that looks like this:
Even though the High Contrast theme isn't quite right, it 'feels' closest to the Old way of doing things (VS2010 and earlier) as it has a mix of light and dark elements. The other themes are either TOO brigth or TOO dark by default.
Next, I ran a test to see what would happen if i deleted all the sub-keys from the Top level GUID folder of the Dark theme and restarted VS20120. On startup Visual Studio was in the Light theme.
After that I ran some more tests and found that I could get the UI to appear differently by deleting some of the Sub keys from beneath a given theme's Top level GUID folder. Unfortunately I wasn't able to progress much further since the Hex strings in the theme registry keys are not easy to analyze. I'd have to do more hacking to figure out what strings impact which UI elements.
When I get more time I may try to create a VS2012 theme that mixes the best of the high contrast and Dark themes while I wait for Microsoft to come to their senses and provides a VS2010 theme.