Changing Visual Studio’s Color Palette

Changing Visual Studio’s Color Palette

Rate This

[Update 2/9/2010] The RC version of the extension is now available (using the same link).  Users who installed this extension for Beta 2 and customized the theme for VS2010 Beta 2 : If you have installed VS2010 RC on the same computer, you may experience a "rainbow colored" VS.  To remedy this problem, please do one of the following:

1. Follow the “Uninstall” instructions at the end of this post and make sure you uninstall the extension and do the cleanup as detailed.  You will see Visual Studio starting up with random colors if you have kept the customization from Beta 2 OR customize again in Visual Studio 2010 RC using the Beta 2 version of this extension.

2. Install the RC/RTM version of the extension (now available at the link provided below).  After installing the RC/RTM version of the extension and starting Visual Studio, you themes should be automatically upgraded, and the random colors should go away.

Many users have requested different color themes for Visual Studio, or for the ability to change color themes to suit their preferences.  I have just released an extension for Visual Studio 2010 Beta 2 that allows users to customize colors used by our shell color service.

Preview of theme change

What colors are in the shell color service?

Colors used by the command and window management system can be customized using this extension.  These are colors that can be read programmatically by anyone via the IVsUIShell.GetVSSysColorEx method.  There are a number of specific tool windows (like the Toolbox and the Start Page) that use colors from this color service, so their colors can also be customized.  However, other tool windows (such as the Solution Explorer) use native Win32 controls, which are rendered based on the current Win32 theme and are not inherently color-aware inside of Visual Studio.  The text editor and tool windows based on it (such as the Output window) already use a different user-customizable color service (in Tools\Options\Environment\Fonts and Colors), and are not affected by this extension.

You’ll notice that the color service exposes hundreds of colors, accumulated over many releases of Visual Studio.  It can be difficult to determine where colors are used in Visual Studio (I’m working on making it easier to determine where colors are used for a future version of the extension), and it may seem daunting to consider editing the values of hundreds of colors.  However, there are a few ways to quickly create a new theme without spending hours—some helpful tips are included below.

You can learn more about the color service and other UI guidelines in the Visual Studio UX Guidelines document.

Walkthrough: Creating a new “Expression” gray theme

A frequent request for Visual Studio is an Expression-style theme, so let’s use that as a scenario for the walkthrough.

1.  Install the extension.  You can use the Extension Manager dialog inside Visual Studio (Tools\Extension Manager) and search for “visual studio color theme editor”, or you can download the VSIX file from here.

Extension Manager

2.  Create a new theme.  After you install the extension and launch Visual Studio, you should see a new top-level menu called Theme.  The two themes that ship with Visual Studio 2010 are available by default.  The Default theme is the Visual Studio 2010 blue theme, and the High Contrast theme is the theme used when a Windows high-contrast theme is selected.  The High Contrast theme is built entirely of Windows system theme colors, and as such has a limited palette.  There are also three custom themes created as examples—feel free to use them as starting points for your own themes.

Theme menu 

Choosing “Customize Colors…” brings up the dialog that will let you create a new theme.  The built-in themes are not editable, but you can create a new theme using the hyperlink in the information bar or the toolbar button on the far left.

New Theme screenshot

3.  Change colors to gray.  The ModifyHSL Modify Hue/Saturation/Lightness option lets you saturate/desaturate or lighten/darken each color, or rotate the hues of each color.  Hue, saturation, and lightness refer to aspects of the HSL color model; if you’re interested in more information about the HSL model and how it relates to RGB, Wikipedia has a great article.  Using this dialog, we can desaturate all of the colors to gray by moving the S slider to –100.

Modify Hue/Saturation/Lightness dialog

 

4.  Apply the theme.  After applying the Modify Hue/Saturation/Lightness dialog, choose OK on the Customize Colors dialog.  The new Gray theme will be applied and should now show up as checked in the Theme menu!

Gray

Editing individual colors

Bulk-editing operation will only get you so far, and you will soon want to change the value of a few individual colors.  You can easily do this using the color picker popup.  This popup lets you change the HSL or RGB values of the color directly, or modify the raw hexadecimal RGB value.  You can also specify that the color should come from one of the Windows system colors.  Pressing Enter or clicking Apply will save the value; pressing Escape or clicking away will cancel editing.

Editing a single color

Other useful features

  • Importing and exporting.  By default, your current set of custom themes is saved in the registry, and restored each time you start Visual Studio.  However, you can export colors into a VSTHEME file for backup purposes, or to share across multiple machines or with friends.  Be careful: importing a theme that you already have will overwrite the in-memory copy; look for improvements in this area in future versions.
  • Copy and paste.  By selecting one or more colors in the Customize Colors dialog, you can copy the color’s values.  In the clipboard, these values are stored as as hex RGB values in a comma-delimited string.  You can then paste the values into multiple other color “cells”.  I call them “cells” because copying and pasting behaves the same way that Excel behaves when copying and pasting cell values.  You can even copy a single color, select multiple cells, and paste that single value into all selected cells with one operation.
  • Undo and redo.  Any of the operations you take while the Customize Colors dialog is open can be undone and redone while the dialog is open.
  • Search filtering.  The Search box above the color list can currently be used to filter the color list by name, which can help you quickly identify all colors containing some keyword (for example, finding all of the “StartPage”-related colors).
  • Colorization. The Colorize Colorize option lets you apply a single hue to all of the selected colors.  Note that colorizing hues is not the same as the “rotate” feature of Modify Hue/Saturation/Lightness.  When rotating, colors with different hues will still have different hues after rotating their values, whereas colorizing changes every color’s hue to the same value.

    Colorize dialog

Uninstall

Hopefully everyone will happily use this extension forever, but some may decide to uninstall the extension.  If you had any non-Default theme applied before uninstalling, you will find that the colors are still used after restarting Visual Studio (even though the extension is no longer installed).

The reason this happens is that the extension writes registry data to a value that Visual Studio always reads upon startup—even if the extension is not installed.  This is a user-specific value (written to the HKCU Visual Studio registry hive), so every user can have their own theme.  However, extensions in general are machine-wide.  When uninstalling the extension, there isn’t a way to remove the custom theme data from each user’s registry hive, and so each user will have the last-applied theme still applied even after the extension is uninstalled.  To avoid this problem, apply the Default theme before uninstalling the extension—applying the Default theme deletes this registry value instead of writing a custom color theme to it, so it will leave Visual Studio in a theme-free state (at least for your user account).

If you need to clean up these registry keys after uninstalling, you can run the following from a command prompt (replace 10.0 with 10.0Exp if you were using the experimental hive):

reg delete HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\10.0\UseDebugColorScheme /f
reg delete HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\10.0\ThemeColorCache /f

Matt Matthew Johnson – Developer, Visual Studio Platform
Short Bio:  Matthew has been at Microsoft for three years and on the Visual Studio Platform for two years.  He works on WPF-related features of the Visual Studio window layout system.
Leave a Comment
  • Please add 4 and 2 and type the answer here:
  • Post
  • Interesting, but after installing it, the top-level menu Theme doesn't appear, any clue?

    The extension is installed without problem, I can see it in the Extension Manager.

    I am using VS2010 Beta2.

  • There is an option about allowing Admin installed extensions when running as non-admin.  It is in Tools->Options (not sure exact location as I am at home at the moment and don't have a computer handy with VS installed on it).  If you install the extension as admin and then run as a normal user I believe the extension won't be loaded unless you specifically enable it.  Apart from that...have you restarted visual studio?  I don't think extensions installed on a running instance would be able to affect the menu UI without a restart.

  • OK, after checking the "Load per user extensions when running as administrator" in Tools->Options->Environment, the menu Theme appears. Thanks. I like this extension.

  • Does it theme only the VS app or does it also include color themes for the editor?

  • This extension is specifically for the VS app colors.  Future versions may include integration with editor colors, but for now it's possible to change those separately via the Fonts and Colors page in the Tools\Options dialog.

  • What a useless feature...

  • I love you! Thanks for providing this extension. Now I can darken everything in the studio!

  • "However, extensions in general are machine-wide."

    Not by default (for VS2010).  It would be more accurate to write that VS2010 extensions in general are per-user.

  • me again.

    "When uninstalling the extension, there isn’t a way to remove the custom theme..."

    VS2010 users need to become accustomed to the idea that extensions are not uninstalled, but rather are removed.  So no extension driven cleanup can occur (for vsix installed extensions).

  • Thank you thank you thank you!!!  Now I can get rid of the drab, Vista hues.  Believe it or not this was actually a huge pain point for me.  As someone who lives in VS I'll appreciate this work daily for years to come.

  • Nice extension .I like it . @Mike : If you don't like the feature you don't need to install it

  • Thanks, this is cool. Too lazy to make my own theme, but waiting for someone to make an expression-dark theme and a zenburn-like thing for the editor. These things matter to me. :)

  • Thanks. My principal argument about VS2010 was the lack of contrast between icons and toolbar background, and bad system integration about colors.

    Now theses are gone...

  • "However, other tool windows (such as the Solution Explorer) use native Win32 controls"

    I thought VS10 was built on WPF. Are you saying that Solution Explorer still uses the Win32 treeview control, and not the WPF one?

  • Yes, the Solution Explorer (and several other prominent tool windows: Toolbox, Error List, Class View, Server Explorer, Team Explorer) are still Win32 windows hosted in WPF via HwndHost.  If you're curious, Spy++ can quickly show you what content is still hosted in an HWND and what's not, although users should generally not notice the difference. :-)

    It would be ideal for us if we had the resources to convert all of the tool windows and designers we ship to WPF in a single release, but I'm probably venturing into a topic large enough for another post.

Page 1 of 10 (139 items) 12345»