-
Notifications
You must be signed in to change notification settings - Fork 7.7k
Revert "[Light Switch] Switch desktop wallpapers with the Light/Dark mode" #44588
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
@YexuanXiao, just looping you in here as you were the original author of the PR. We are likely to still move forward just without this feature. |
|
Although this feature is unstable, Windows generally does not change it frequently, so I don't see it as a problem. As the one who implemented it, I will continue to maintain it in the future. Why are you in such a hurry to revert it? |
|
@YexuanXiao We’re really getting close to the next release, so we’ve decided to open a revert PR first. |
|
@YexuanXiao I tried reverting the revert, but that would make the new commit authored by me. To avoid any confusion around credits, would you mind re-opening the PR from your branch instead? Thanks a lot for your help, and really appreciate the work you put into this. |
I've opened #44598. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull request overview
This PR reverts a feature that allowed desktop wallpapers to switch automatically with Light/Dark mode. The revert is necessary because the feature relied on IVirtualDesktopManagerInternal*, an undocumented Windows Shell internal API that poses long-term stability risks as it can change across Windows updates.
Changes:
- Removed wallpaper switching functionality from the LightSwitch module
- Eliminated dependencies on undocumented Windows internal APIs
- Cleaned up related UI components, settings, and resource strings
Reviewed changes
Copilot reviewed 25 out of 25 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
LightSwitchViewModel.cs |
Removed wallpaper-related properties, validation logic, and event handlers |
Resources.resw |
Removed UI text strings for wallpaper configuration options |
LightSwitchPage.xaml.cs |
Removed wallpaper file picker implementation |
LightSwitchPage.xaml |
Removed wallpaper UI components and converter declarations |
LightSwitchSettings.cs |
Removed wallpaper properties from settings cloning |
LightSwitchProperties.cs |
Removed wallpaper-related property definitions and defaults |
ThemeHelper.h (Service) |
Created new simplified header without wallpaper functions |
ThemeHelper.cpp (Service) |
Created new implementation with only theme and night light support |
SettingsConstants.h (Service) |
Created new constants file without wallpaper-related settings |
SettingsConstants.cpp (Service) |
Added empty implementation file |
LightSwitchStateManager.cpp |
Removed wallpaper path validation and application logic |
LightSwitchSettings.h |
Removed wallpaper configuration fields from struct |
LightSwitchSettings.cpp |
Removed wallpaper settings loading logic |
LightSwitchService.vcxproj.filters |
Updated file references from Common to Service directory |
LightSwitchService.vcxproj |
Updated include paths and source file references |
LightSwitchService.cpp |
Removed wallpaper setting function and integration |
dllmain.cpp (ModuleInterface) |
Removed wallpaper settings from module configuration |
ThemeHelper.h (ModuleInterface) |
Created new simplified header for module interface |
ThemeHelper.cpp (ModuleInterface) |
Created new implementation without wallpaper support |
LightSwitchModuleInterface.vcxproj.filters |
Updated file references and removed natvis item |
LightSwitchModuleInterface.vcxproj |
Removed Common directory includes and WIL library dependency |
ThemeHelper.h (Common - deleted) |
Removed common header with wallpaper API declarations |
ThemeHelper.cpp (Common - deleted) |
Removed implementation using undocumented Windows APIs |
SettingsConstants.h (Common - deleted) |
Removed common constants including wallpaper settings |
expect.txt |
Removed spell-check exceptions for wallpaper-related terms |
Comments suppressed due to low confidence (1)
src/settings-ui/Settings.UI/SettingsXAML/Views/LightSwitchPage.xaml.cs:1
- Corrected character encoding for degree symbol. The character '�' should be '°' for proper display.
// Copyright (c) Microsoft Corporation
| { | ||
| shouldBeLight = !IsNightLightEnabled(); | ||
| } | ||
| } |
Copilot
AI
Jan 12, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Trailing whitespace after closing brace should be removed for code cleanliness.
| } | |
| } |

This uses IVirtualDesktopManagerInternal*, which is an undocumented Windows Shell internal API.
These interfaces are not stable and can change across Windows updates, so using them in PowerToys carries some long-term risk