Skip to content

Commit c8dd84c

Browse files
authored
fix/Jiggler settings not saving (#786)
Ensure the jiggler config loads the defaults so they can be saved. Ensure the file.Sync occurs before acknowledging save. Also fixup the old KeyboardLayout to use en-US not en_US
1 parent c98592a commit c8dd84c

File tree

3 files changed

+30
-5
lines changed

3 files changed

+30
-5
lines changed

config.go

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,7 @@ var defaultConfig = &Config{
118118
DisplayMaxBrightness: 64,
119119
DisplayDimAfterSec: 120, // 2 minutes
120120
DisplayOffAfterSec: 1800, // 30 minutes
121+
JigglerEnabled: false,
121122
// This is the "Standard" jiggler option in the UI
122123
JigglerConfig: &JigglerConfig{
123124
InactivityLimitSeconds: 60,
@@ -205,6 +206,15 @@ func LoadConfig() {
205206
loadedConfig.NetworkConfig = defaultConfig.NetworkConfig
206207
}
207208

209+
if loadedConfig.JigglerConfig == nil {
210+
loadedConfig.JigglerConfig = defaultConfig.JigglerConfig
211+
}
212+
213+
// fixup old keyboard layout value
214+
if loadedConfig.KeyboardLayout == "en_US" {
215+
loadedConfig.KeyboardLayout = "en-US"
216+
}
217+
208218
config = &loadedConfig
209219

210220
logging.GetRootLogger().UpdateLogLevel(config.DefaultLogLevel)
@@ -221,6 +231,11 @@ func SaveConfig() error {
221231

222232
logger.Trace().Str("path", configPath).Msg("Saving config")
223233

234+
// fixup old keyboard layout value
235+
if config.KeyboardLayout == "en_US" {
236+
config.KeyboardLayout = "en-US"
237+
}
238+
224239
file, err := os.Create(configPath)
225240
if err != nil {
226241
return fmt.Errorf("failed to create config file: %w", err)
@@ -233,6 +248,11 @@ func SaveConfig() error {
233248
return fmt.Errorf("failed to encode config: %w", err)
234249
}
235250

251+
if err := file.Sync(); err != nil {
252+
return fmt.Errorf("failed to wite config: %w", err)
253+
}
254+
255+
logger.Info().Str("path", configPath).Msg("config saved")
236256
return nil
237257
}
238258

jiggler.go

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,16 +17,20 @@ type JigglerConfig struct {
1717
Timezone string `json:"timezone,omitempty"`
1818
}
1919

20-
var jigglerEnabled = false
2120
var jobDelta time.Duration = 0
2221
var scheduler gocron.Scheduler = nil
2322

24-
func rpcSetJigglerState(enabled bool) {
25-
jigglerEnabled = enabled
23+
func rpcSetJigglerState(enabled bool) error {
24+
config.JigglerEnabled = enabled
25+
err := SaveConfig()
26+
if err != nil {
27+
return fmt.Errorf("failed to save config: %w", err)
28+
}
29+
return nil
2630
}
2731

2832
func rpcGetJigglerState() bool {
29-
return jigglerEnabled
33+
return config.JigglerEnabled
3034
}
3135

3236
func rpcGetTimezones() []string {
@@ -118,7 +122,7 @@ func runJigglerCronTab() error {
118122
}
119123

120124
func runJiggler() {
121-
if jigglerEnabled {
125+
if config.JigglerEnabled {
122126
if config.JigglerConfig.JitterPercentage != 0 {
123127
jitter := calculateJitterDuration(jobDelta)
124128
time.Sleep(jitter)

ui/src/routes/devices.$id.settings.mouse.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@ export default function SettingsMouseRoute() {
9090
send("getJigglerState", {}, (resp: JsonRpcResponse) => {
9191
if ("error" in resp) return;
9292
const isEnabled = resp.result as boolean;
93+
console.log("Jiggler is enabled:", isEnabled);
9394

9495
// If the jiggler is disabled, set the selected option to "disabled" and nothing else
9596
if (!isEnabled) return setSelectedJigglerOption("disabled");

0 commit comments

Comments
 (0)