This lightweight extension allows changing the window title of Visual Studio to include a folder tree with a configurable min depth and max depth distance from the solution/project file, and the use of special tags to help with many other possible scenarios (Git, Mercurial, TFS…).
Solution-specific overriding rules are available as well to cover virtually any possible renaming needs.
It can also be configured so that the rules apply only when at least two instances of Visual Studio are running with the same window title.
With default settings, SolutionFolder – Microsoft Visual Studio (Administrator) will be rewritten as SolutionFolderParent\SolutionFolder – Microsoft Visual Studio (Administrator)\*.
The following special tags are available:
- [documentName] Active document or, if no active document, window name;
- [projectName] Active project name;
- [startupProjectsNames] Startup project(s) name(s), separated with ‘ & ‘ if multiple;
- [startupProjectsNames:X] Startup project(s) name(s), separated with X if multiple (recommended values: ‘ & ‘, ‘, ‘ or ‘ | ‘ without quotes);
- [documentProjectName] Active document project name (if the document is part of a loaded project);
- [documentProjectFileName] Active document project file name (if the document is part of a loaded project);
- [solutionName] Active solution name;
- [documentPath] Active document full path or, if no active document, window name;
- [documentPath:X] Active document path element at the specified index (e.g. for C:\F1\Foo.cs, [documentPath:0] = C:\, [documentPath:1] = C:\F1);
- [documentPath:X:Y] Active document path segment over the specified range (e.g. for C:\F1\Foo.cs, [path:0:2] = C:\F1\Foo.cs, [path:2:0] = Foo.cs\F1\C:);
- [documentParentPath:X] Active document path parent element at the specified index (e.g. for C:\F1\Foo.cs, [parent:0] = Foo.cs [parent:1] = F1);
- [documentParentPath:X:Y] Active document path parent segment over the specified range (e.g. for C:\F1\Foo.cs, [parent:1:0] =F1\Foo.cs, [parent:0:1] = Foo.cs\F1);
- [env:X] Environment variable X for current Visual Studio process;
- [path] Current solution full path or, if no solution open, document full path or, if no active document, window name;
- [path:X] Path element at the specified index (e.g. for C:\F1\MySolutionFolder\MySolution.sln, [path:0] = C:\, [path:1] = C:\F1);
- [path:X:Y] Path segment over the specified range (e.g. for C:\F1\MySolutionFolder\MySolution.sln, [path:0:2] = C:\F1\MySolutionFolder, [path:2:0] = MySolutionFolder\F1\C:);
- [parentPath] Current solution path or, if no solution open, document path, with depth determined by “Farthest parent folder depth” and “Closest parent folder depth” settings;
- [parent:X] Path parent element at the specified index (e.g. for C:\F1\MySolutionFolder\MySolution.sln, [parent:0] = MySolution.sln [parent:1] = MySolutionFolder);
- [parent:X:Y] Path parent segment over the specified range (e.g. for C:\F1\MySolutionFolder\MySolution.sln, [parent:2:1] =F1\MySolutionFolder, [parent:1:2] = MySolutionFolder\F1);
- [ideName] Name of the IDE (e.g. Microsoft Visual Studio), including elevation suffix if applicable (e.g. ” (Administrator)”);
- [elevationSuffix] Elevation suffix if applicable (e.g. ” (Administrator)”), otherwise empty;
- [platformName] Current platform name (e.g. x86);
- [configurationName] Current configuration name (e.g. Release);
- [vsMajorVersion] Major version of Visual Studio (e.g. 11, 12, 14, 15…);
- [vsMajorVersionYear] Major version of Visual Studio, in year form (e.g. 2012, 2013, 2015, 2017…);
- [vsProcessID] Process ID of Visual Studio;
- [gitBranchName] Current Git branch name. Make sure Git’s executable directory is added to the Windows PATH variable or specify its location in settings;
- [hgBranchName] Current Mercurial branch name. Make sure Mercurial’s executable directory is added to the Windows PATH variable or specify its location in settings;
- [workspaceName] Team Foundation Server (TFS) workspace name of the currently loaded solution;
- [workspaceOwnerName] Team Foundation Server (TFS) workspace owner name of the currently loaded solution.
- [debuggedProcessesArgs] Arguments of the processes currently debugged (including the executable file name before each set of arguments if more than 1 process).
The symbol ‘\*’ will be added at the end automatically to identify that the title is being improved (can be configured in settings).
This is particularly useful when branching a solution/project: it becomes possible to easily identify which branch you are working on, in the case where both would have the same solution/project name.
It is possible to allow solution-specific settings overrides in two different ways:
- By enabling this option in the settings, and placing a ‘MySolution.sln.rn.xml’ file in the same directory as the MySolution.sln file to which it should refer to. The file should be in xml format containing a single CustomizeVSWindowTitle/SettingsSet element, which attributes can be the following:SolutionName, FarthestParentDepth, ClosestParentDepth, PatternIfDesignMode, PatternIfBreakMode, PatternIfRunningMode, AppendedString.
- By enabling this option in the settings, and specifying a “Global solution-specific settings overrides file path”. This file should be in xml format containing multiple CustomizeVSWindowTitle/SettingsSet elements as for .sln.rn.xml files, with the addition of a Path attribute or child node(s) to specify to which solution path or solution name each SettingsSet is applicable (wildcards are supported). Overrides from this global file take precedence over those found in .sln.rn.xml files.
If useful, patterns may therefore be completely hardcoded on a per solution basis.
To automatically generate and open such xml files, go to the “Solution-specific overrides” section of the extension settings. There, click on either the “Open solution config” or “Open global config” convenience buttons. The files will be pre-populated with your current configuration to make further customization easier, and will be opened for edition as any other code file right in Visual Studio.
All available tags are listed inside the extension settings in Visual Studio > Tools > Options… > Customize VS Window Title > Supported tags. They can also be easily inserted in each pattern field by clicking on the dropdown arrow at the right of each field, and then on the … yellow button.
Feature requests are welcome here. Official GitHub repository here. Contributions are welcome. More screenshots are available in this review by Sergey Vlasov.
You can install the extension from within Visual Studio directly or download the VSIX installable package from the Visual Studio Marketplace.

Comments
Live comments coming soon — Waline + Google/GitHub login. Until then, reach out via the contact page.