diff --git a/Flow.Launcher.Infrastructure/UserSettings/Settings.cs b/Flow.Launcher.Infrastructure/UserSettings/Settings.cs
index 04d5bdca9..9e98d70e0 100644
--- a/Flow.Launcher.Infrastructure/UserSettings/Settings.cs
+++ b/Flow.Launcher.Infrastructure/UserSettings/Settings.cs
@@ -15,7 +15,7 @@ namespace Flow.Launcher.Infrastructure.UserSettings
private string language = "en";
public string Hotkey { get; set; } = $"{KeyConstant.Alt} + {KeyConstant.Space}";
public string OpenResultModifiers { get; set; } = KeyConstant.Alt;
- public string DarkMode { get; set; }
+ public string DarkMode { get; set; } = "System";
public bool ShowOpenResultHotkey { get; set; } = true;
public double WindowSize { get; set; } = 580;
@@ -164,4 +164,11 @@ namespace Flow.Launcher.Infrastructure.UserSettings
Empty,
Preserved
}
+
+ public enum DarkMode
+ {
+ System,
+ Light,
+ Dark
+ }
}
\ No newline at end of file
diff --git a/Flow.Launcher/Flow.Launcher.csproj b/Flow.Launcher/Flow.Launcher.csproj
index b0560fbce..fd2f5f1d9 100644
--- a/Flow.Launcher/Flow.Launcher.csproj
+++ b/Flow.Launcher/Flow.Launcher.csproj
@@ -96,7 +96,6 @@
-
diff --git a/Flow.Launcher/Helper/SystemTheme.cs b/Flow.Launcher/Helper/SystemTheme.cs
deleted file mode 100644
index 3a05c3149..000000000
--- a/Flow.Launcher/Helper/SystemTheme.cs
+++ /dev/null
@@ -1,76 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using System.Diagnostics;
-using System.Management;
-using System.Security.Principal;
-
-namespace Flow.Launcher.Helper
-{
- class SystemTheme
- {
-
- private const string PersonalizeKey = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Themes\\Personalize";
- private const string SysThemeValueName = "SystemUsesLightTheme";
-
- public static event EventHandler SystemThemeChanged;
-
- public static bool GetIsSystemLightTheme() => ReadDWord(SysThemeValueName);
-
- private static bool ReadDWord(string valueName)
- {
- var regkey = Microsoft.Win32.Registry.CurrentUser.OpenSubKey(PersonalizeKey);
- if (regkey == null)
- {
- return false;
- }
-
- return (int)regkey.GetValue(valueName, 0) > 0;
- }
-
- public static void Initialize()
- {
- UpdateTheme();
- try
- {
- var currentUser = WindowsIdentity.GetCurrent();
- var query = new WqlEventQuery(string.Format("SELECT * FROM RegistryValueChangeEvent WHERE Hive='HKEY_USERS' AND KeyPath='{0}\\\\{1}' AND ValueName='{2}'",
- currentUser.User.Value, PersonalizeKey.Replace("\\", "\\\\"), SysThemeValueName));
-
- ManagementEventWatcher watcher = new(query);
-
- watcher.EventArrived += new EventArrivedEventHandler(HandleEvent);
-
- watcher.Start();
- }
- catch (ManagementException managementException)
- {
- Debug.WriteLine($"{nameof(SystemTheme)}: " + managementException.Message);
- }
- }
-
- private static void HandleEvent(object sender, EventArrivedEventArgs e)
- {
- UpdateTheme();
- }
-
- private static void UpdateTheme()
- {
- bool isSystemLightTheme = GetIsSystemLightTheme();
- var args = new SystemThemeChangedEventArgs(isSystemLightTheme);
- SystemThemeChanged?.Invoke(null, args);
- }
- }
-
- public class SystemThemeChangedEventArgs : EventArgs
- {
- public SystemThemeChangedEventArgs(bool isSystemLightTheme)
- {
- IsSystemLightTheme = isSystemLightTheme;
- }
-
- public bool IsSystemLightTheme { get; private set; }
- }
-}
diff --git a/Flow.Launcher/Languages/en.xaml b/Flow.Launcher/Languages/en.xaml
index fe1c5dd91..e2bcbd98c 100644
--- a/Flow.Launcher/Languages/en.xaml
+++ b/Flow.Launcher/Languages/en.xaml
@@ -84,7 +84,8 @@
Theme Folder
Open Theme Folder
Dark Mode
- System Default
+ System settings will take effect from the next run.
+ System Default
Light
Dark
diff --git a/Flow.Launcher/SettingWindow.xaml b/Flow.Launcher/SettingWindow.xaml
index 1c8bda508..1524a2940 100644
--- a/Flow.Launcher/SettingWindow.xaml
+++ b/Flow.Launcher/SettingWindow.xaml
@@ -1866,15 +1866,18 @@
+
diff --git a/Flow.Launcher/SettingWindow.xaml.cs b/Flow.Launcher/SettingWindow.xaml.cs
index 323847453..f1e7bdaa7 100644
--- a/Flow.Launcher/SettingWindow.xaml.cs
+++ b/Flow.Launcher/SettingWindow.xaml.cs
@@ -322,7 +322,6 @@ namespace Flow.Launcher
{
ModernWpf.ThemeManager.Current.ApplicationTheme = ModernWpf.ApplicationTheme.Dark;
}
-
}
/* Custom TitleBar */
diff --git a/Flow.Launcher/ViewModel/SettingWindowViewModel.cs b/Flow.Launcher/ViewModel/SettingWindowViewModel.cs
index a7ac164f4..e09bbe04b 100644
--- a/Flow.Launcher/ViewModel/SettingWindowViewModel.cs
+++ b/Flow.Launcher/ViewModel/SettingWindowViewModel.cs
@@ -317,20 +317,25 @@ namespace Flow.Launcher.ViewModel
}
}
- enum DarkModes
+ public class DarkMode
{
- System,
- Light,
- Dark
+ public string Display { get; set; }
+ public Infrastructure.UserSettings.DarkMode Value { get; set; }
}
- public List DarkMode
+ public List DarkModes
{
get
{
- var darkModeStrings = new List();
- var enumList = Enum.GetValues(typeof(DarkModes)).Cast().ToList();
- enumList.ForEach(x => darkModeStrings.Add(x.ToString()));
- return darkModeStrings;
+ List modes = new List();
+ var enums = (Infrastructure.UserSettings.DarkMode[])Enum.GetValues(typeof(Infrastructure.UserSettings.DarkMode));
+ foreach (var e in enums)
+ {
+ var key = $"DarkMode{e}";
+ var display = _translater.GetTranslation(key);
+ var m = new DarkMode { Display = display, Value = e, };
+ modes.Add(m);
+ }
+ return modes;
}
}