public static FenestraSettingsArgs LoadSettings()
        {
            var filePath = Path.Combine(GetFenestraSettingsPath(), SettingsFileName);

            if (!File.Exists(filePath))
            {
                return(FenestraSettingsArgs.CreateDefault());
            }
            try {
                using var sr = new StreamReader(new FileStream(filePath, FileMode.Open));
                var settingsJson = sr.ReadToEnd();
                return(JsonConvert.DeserializeObject <FenestraSettingsArgs>(settingsJson));
            } catch (Exception) {
                return(FenestraSettingsArgs.CreateDefault());
            }
        }
        public static void SaveSettings(FenestraSettingsArgs settingsArgs)
        {
            var path = GetFenestraSettingsPath();

            if (!Directory.Exists(path))
            {
                Directory.CreateDirectory(path);
            }
            var filePath = Path.Combine(GetFenestraSettingsPath(), SettingsFileName);

            using var sw = new StreamWriter(new FileStream(filePath, FileMode.Create));
            var settingsJson = JsonConvert.SerializeObject(settingsArgs);

            sw.Write(settingsJson);
            sw.Flush();
        }
        public static void ApplySettings(FenestraSettingsArgs args, Window mainWindow)
        {
            FenestraHotkeyUtil.SetupHotkey(mainWindow, args.HotKeys);
            var registryKey = GetStartAtLoginRegistryKey();

            if (args.StartAtLogin)
            {
                var applicationPath = Assembly.GetEntryAssembly()?.Location;
                if (applicationPath != null)
                {
                    registryKey.SetValue(FenestraRegistryKeyName, applicationPath);
                }
            }
            else
            {
                registryKey.DeleteValue(FenestraRegistryKeyName, false);
            }
        }