diff --git a/config.go b/config.go index 1fa56a7..680999a 100644 --- a/config.go +++ b/config.go @@ -118,6 +118,7 @@ var defaultConfig = &Config{ DisplayMaxBrightness: 64, DisplayDimAfterSec: 120, // 2 minutes DisplayOffAfterSec: 1800, // 30 minutes + JigglerEnabled: false, // This is the "Standard" jiggler option in the UI JigglerConfig: &JigglerConfig{ InactivityLimitSeconds: 60, @@ -205,6 +206,15 @@ func LoadConfig() { loadedConfig.NetworkConfig = defaultConfig.NetworkConfig } + if loadedConfig.JigglerConfig == nil { + loadedConfig.JigglerConfig = defaultConfig.JigglerConfig + } + + // fixup old keyboard layout value + if loadedConfig.KeyboardLayout == "en_US" { + loadedConfig.KeyboardLayout = "en-US" + } + config = &loadedConfig logging.GetRootLogger().UpdateLogLevel(config.DefaultLogLevel) @@ -221,6 +231,11 @@ func SaveConfig() error { logger.Trace().Str("path", configPath).Msg("Saving config") + // fixup old keyboard layout value + if config.KeyboardLayout == "en_US" { + config.KeyboardLayout = "en-US" + } + file, err := os.Create(configPath) if err != nil { return fmt.Errorf("failed to create config file: %w", err) @@ -233,6 +248,11 @@ func SaveConfig() error { return fmt.Errorf("failed to encode config: %w", err) } + if err := file.Sync(); err != nil { + return fmt.Errorf("failed to wite config: %w", err) + } + + logger.Info().Str("path", configPath).Msg("config saved") return nil } diff --git a/jiggler.go b/jiggler.go index 52882c0..b2463e0 100644 --- a/jiggler.go +++ b/jiggler.go @@ -17,16 +17,20 @@ type JigglerConfig struct { Timezone string `json:"timezone,omitempty"` } -var jigglerEnabled = false var jobDelta time.Duration = 0 var scheduler gocron.Scheduler = nil -func rpcSetJigglerState(enabled bool) { - jigglerEnabled = enabled +func rpcSetJigglerState(enabled bool) error { + config.JigglerEnabled = enabled + err := SaveConfig() + if err != nil { + return fmt.Errorf("failed to save config: %w", err) + } + return nil } func rpcGetJigglerState() bool { - return jigglerEnabled + return config.JigglerEnabled } func rpcGetTimezones() []string { @@ -118,7 +122,7 @@ func runJigglerCronTab() error { } func runJiggler() { - if jigglerEnabled { + if config.JigglerEnabled { if config.JigglerConfig.JitterPercentage != 0 { jitter := calculateJitterDuration(jobDelta) time.Sleep(jitter) diff --git a/ui/src/routes/devices.$id.settings.mouse.tsx b/ui/src/routes/devices.$id.settings.mouse.tsx index f2b169d..76b0ae2 100644 --- a/ui/src/routes/devices.$id.settings.mouse.tsx +++ b/ui/src/routes/devices.$id.settings.mouse.tsx @@ -90,6 +90,7 @@ export default function SettingsMouseRoute() { send("getJigglerState", {}, (resp: JsonRpcResponse) => { if ("error" in resp) return; const isEnabled = resp.result as boolean; + console.log("Jiggler is enabled:", isEnabled); // If the jiggler is disabled, set the selected option to "disabled" and nothing else if (!isEnabled) return setSelectedJigglerOption("disabled");