diff --git a/src/modules/powerdisplay/PowerDisplay.Lib/Services/LightSwitchService.cs b/src/modules/powerdisplay/PowerDisplay.Lib/Services/LightSwitchService.cs
deleted file mode 100644
index 92f81be6e8..0000000000
--- a/src/modules/powerdisplay/PowerDisplay.Lib/Services/LightSwitchService.cs
+++ /dev/null
@@ -1,112 +0,0 @@
-// Copyright (c) Microsoft Corporation
-// The Microsoft Corporation licenses this file to you under the MIT license.
-// See the LICENSE file in the project root for more information.
-
-using System;
-using System.IO;
-using System.Text.Json;
-using ManagedCommon;
-
-namespace PowerDisplay.Common.Services
-{
- ///
- /// Service for handling LightSwitch theme change events.
- /// Provides methods to process theme changes and read LightSwitch settings.
- /// Event listening is handled externally via NativeEventWaiter.
- ///
- public static class LightSwitchService
- {
- private const string LogPrefix = "[LightSwitch]";
-
- ///
- /// Process a theme change event and return the profile name to apply.
- ///
- /// Whether the theme changed to light mode.
- /// The profile name to apply, or null if no profile is configured.
- public static string? GetProfileForTheme(bool isLightMode)
- {
- try
- {
- Logger.LogInfo($"{LogPrefix} Processing theme change to {(isLightMode ? "light" : "dark")} mode");
-
- var profileToApply = ReadProfileFromLightSwitchSettings(isLightMode);
-
- if (string.IsNullOrEmpty(profileToApply) || profileToApply == "(None)")
- {
- Logger.LogInfo($"{LogPrefix} No profile configured for {(isLightMode ? "light" : "dark")} mode");
- return null;
- }
-
- Logger.LogInfo($"{LogPrefix} Profile to apply: {profileToApply}");
- return profileToApply;
- }
- catch (Exception ex)
- {
- Logger.LogError($"{LogPrefix} Failed to process theme change: {ex.Message}");
- return null;
- }
- }
-
- ///
- /// Reads LightSwitch settings and returns the profile name to apply for the given theme.
- ///
- /// Whether the theme is light mode.
- /// The profile name to apply, or null if not configured.
- private static string? ReadProfileFromLightSwitchSettings(bool isLightMode)
- {
- var settingsPath = PathConstants.LightSwitchSettingsFilePath;
-
- if (!File.Exists(settingsPath))
- {
- Logger.LogWarning($"{LogPrefix} LightSwitch settings file not found");
- return null;
- }
-
- var json = File.ReadAllText(settingsPath);
- var settings = JsonDocument.Parse(json);
- var root = settings.RootElement;
-
- if (!root.TryGetProperty("properties", out var properties))
- {
- Logger.LogWarning($"{LogPrefix} LightSwitch settings has no properties");
- return null;
- }
-
- // Check if monitor settings integration is enabled
- if (!properties.TryGetProperty("apply_monitor_settings", out var applyMonitorSettingsElement) ||
- !applyMonitorSettingsElement.TryGetProperty("value", out var applyValue) ||
- !applyValue.GetBoolean())
- {
- Logger.LogInfo($"{LogPrefix} Monitor settings integration is disabled");
- return null;
- }
-
- // Get the appropriate profile name based on the theme
- if (isLightMode)
- {
- return GetProfileFromSettings(properties, "enable_light_mode_profile", "light_mode_profile");
- }
- else
- {
- return GetProfileFromSettings(properties, "enable_dark_mode_profile", "dark_mode_profile");
- }
- }
-
- private static string? GetProfileFromSettings(
- JsonElement properties,
- string enableKey,
- string profileKey)
- {
- if (properties.TryGetProperty(enableKey, out var enableElement) &&
- enableElement.TryGetProperty("value", out var enableValue) &&
- enableValue.GetBoolean() &&
- properties.TryGetProperty(profileKey, out var profileElement) &&
- profileElement.TryGetProperty("value", out var profileValue))
- {
- return profileValue.GetString();
- }
-
- return null;
- }
- }
-}
diff --git a/src/modules/powerdisplay/PowerDisplay/Services/LightSwitchService.cs b/src/modules/powerdisplay/PowerDisplay/Services/LightSwitchService.cs
new file mode 100644
index 0000000000..7182fd32ed
--- /dev/null
+++ b/src/modules/powerdisplay/PowerDisplay/Services/LightSwitchService.cs
@@ -0,0 +1,77 @@
+// Copyright (c) Microsoft Corporation
+// The Microsoft Corporation licenses this file to you under the MIT license.
+// See the LICENSE file in the project root for more information.
+
+using System;
+using ManagedCommon;
+using Microsoft.PowerToys.Settings.UI.Library;
+using Settings.UI.Library;
+
+namespace PowerDisplay.Services
+{
+ ///
+ /// Service for handling LightSwitch theme change events.
+ /// Reads LightSwitch settings using the standard PowerToys settings pattern.
+ ///
+ public static class LightSwitchService
+ {
+ private const string LogPrefix = "[LightSwitch]";
+
+ ///
+ /// Get the profile name to apply for the given theme.
+ ///
+ /// Whether the theme changed to light mode.
+ /// The profile name to apply, or null if no profile is configured.
+ public static string? GetProfileForTheme(bool isLightMode)
+ {
+ try
+ {
+ Logger.LogInfo($"{LogPrefix} Processing theme change to {(isLightMode ? "light" : "dark")} mode");
+
+ var settings = SettingsUtils.Default.GetSettingsOrDefault(LightSwitchSettings.ModuleName);
+
+ if (settings?.Properties == null)
+ {
+ Logger.LogWarning($"{LogPrefix} LightSwitch settings not found");
+ return null;
+ }
+
+ string? profileName;
+ if (isLightMode)
+ {
+ if (!settings.Properties.EnableLightModeProfile.Value)
+ {
+ Logger.LogInfo($"{LogPrefix} Light mode profile is disabled");
+ return null;
+ }
+
+ profileName = settings.Properties.LightModeProfile.Value;
+ }
+ else
+ {
+ if (!settings.Properties.EnableDarkModeProfile.Value)
+ {
+ Logger.LogInfo($"{LogPrefix} Dark mode profile is disabled");
+ return null;
+ }
+
+ profileName = settings.Properties.DarkModeProfile.Value;
+ }
+
+ if (string.IsNullOrEmpty(profileName) || profileName == "(None)")
+ {
+ Logger.LogInfo($"{LogPrefix} No profile configured for {(isLightMode ? "light" : "dark")} mode");
+ return null;
+ }
+
+ Logger.LogInfo($"{LogPrefix} Profile to apply: {profileName}");
+ return profileName;
+ }
+ catch (Exception ex)
+ {
+ Logger.LogError($"{LogPrefix} Failed to get profile for theme: {ex.Message}");
+ return null;
+ }
+ }
+ }
+}
diff --git a/src/modules/powerdisplay/PowerDisplay/ViewModels/MainViewModel.Settings.cs b/src/modules/powerdisplay/PowerDisplay/ViewModels/MainViewModel.Settings.cs
index 4dc94a38c3..31f1906c9a 100644
--- a/src/modules/powerdisplay/PowerDisplay/ViewModels/MainViewModel.Settings.cs
+++ b/src/modules/powerdisplay/PowerDisplay/ViewModels/MainViewModel.Settings.cs
@@ -12,6 +12,7 @@ using PowerDisplay.Common.Models;
using PowerDisplay.Common.Services;
using PowerDisplay.Common.Utils;
using PowerDisplay.Serialization;
+using PowerDisplay.Services;
using PowerToys.Interop;
namespace PowerDisplay.ViewModels;