- Classic Window Switcher (cws) is a reimplementation of the classic CSRSS Windows Alt+Tab window switcher, designed to work on modern versions of Windows, including Windows 11 24H2 and later.
- Also, it features more modern features, such as UWP icon support, richer navigation with mouse and arrow keys, better HiDPI support, and more.
- Based on the Simple Window Switcher (sws) from ExplorerPatcher by Valinet.
- Build
ClassicWindowSwitcherandcws-loaderprojects, and runClassicWindowSwitcher.exe. - Loading CWS inside Explorer.exe is also possible by using the
cws-loader.wh.cppWindhawk mod from this repository. You must change the DLL path in the mod settings to point to your path ofClassicWindowSwitcher.dll. - You can also put the CWS DLL as
C:\Windows\dxgi.dllto have it loaded by Explorer.exe automatically on every launch, replacing the default Windows Alt+Tab switcher. - Note that you must disable the default Windows Alt+Tab switcher by setting
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AltTabSettingsto1(DWORD) for the standalone CWS executable to work properly.
If you need more information, you can also consult the GitHub Actions automated build file here.
The following prerequisites are necessary in order to compile this project:
-
Microsoft C/C++ Optimizing Compiler - this can be obtained by installing either of these packages:
- Visual Studio - this is a fully featured IDE; you'll need to check "C/C++ application development role" when installing. If you do not require the full suite, use the package bellow.
- Build Tools for Visual Studio - this just installs the compiler, which you'll be able to use from the command line, or from other applications like CMake
Download either of those here. The guide assumes you have installed either Visual Studio 2019, either Build Tools for Visual Studio 2019.
-
A recent version of the Windows SDK - for development, version 10.0.19041.0 was used, available here (this may also be offered as an option when installing Visual Studio)
-
Git - you can use Git for Windows, or git command via the Windows Subsystem for Linux.
Steps:
-
Clone git repo
git clone https://github.com/valinet/swsIf "git" is not found as a command, type its full path, or have its folder added to PATH, or open Git command window in the respective folder if using Git for Windows.
-
Compile sws
-
Double click the
SimpleWindowSwitcher.slnfile to open the solution in Visual Studio. Choose Release and your processor architecture in the toolbar. Press[Ctrl]+[Shift]+[B]or choose "Build" - "Build solution" to compile. -
Open an "x86 Native Tools Command Prompt for VS 2019" (for x86), or "x64 Native Tools Command Prompt for VS 2019" (for x64) (search that in Start), go to folder containing solution file and type:
-
For x86:
msbuild ExplorerPatcher.sln /property:Configuration=Release /property:Platform=x86 -
For x64:
msbuild ExplorerPatcher.sln /property:Configuration=Release /property:Platform=x64
-
The resulting libraries will be in the "Release" (for x86) or "x64\Release" (for x64) folder in the directory containing the solution file.
-
That's it.
HKEY_CURRENT_USER\SOFTWARE\Ingan121\ClassicWindowSwitcher- Everything here is
REG_DWORD
| Name | Description | Default Behavior |
|---|---|---|
ShowDelay |
Set to the number of milliseconds to wait before showing the switcher. Set to 0 to show the switcher immediately. |
100 ms |
IncludeWallpaper |
Set to 1 to include the 'show desktop' item at the end of the list. |
Hidden (0) |
PrimaryMonitorOnly |
Set to 1 to show the switcher only on the primary monitor. |
Shown on the monitor where the mouse cursor is located (0) |
PerMonitor |
Not implemented yet. Only show windows on the switcher's monitor? | Disabled (0) |
NoPerApplicationList |
Set to 1 to disable the per-application window list, which is shown when Alt+Tilde is pressed. |
Enabled (0) |
SwitcherIsPerApplication |
Set to 1 to make the switcher only show a single entry per application. |
Disabled (0) |
AlwaysUseWindowTitleAndIcon |
Set to 1 to always use the window title and icon. |
Disabled (0) |
ScrollWheelBehavior |
Sets the behavior of the mouse scroll wheel when the switcher is open.0: Disabled1: Move selection item by item, only when the cursor is over the switcher.2: Move selection item by item, regardless of cursor position.3: Scroll the grid list, only when the cursor is over the switcher.4: Scroll the grid list if the cursor is over the switcher, otherwise move selection item by item.5: Scroll the grid list, regardless of cursor position.6: Move selection item by item if the cursor is over the switcher, otherwise scroll the grid list.If there are not enough items to scroll, the behavior falls back to item by item movement. |
Disabled (0) |
ScrollWheelInvert |
Set to 1 to invert the scroll wheel behavior. |
Not inverted (0) |
SkipIfOneWindow |
Set to 1 to skip showing the switcher and immediately switch to the only window if there is just one window to switch to. |
Enabled (1) |
HKEY_CURRENT_USER\Contol Panel\Desktop
| Name | Type | Description | Default Behavior |
|---|---|---|---|
CoolSwitchColumns |
REG_SZ | Set to the number of columns to use in the switcher grid. | 7 columns |
CoolSwitchRows |
REG_SZ | Set to the number of rows to use in the switcher grid. | 3 rows |