diff --git a/Commons/Settings.qml b/Commons/Settings.qml index 986d4248..0a38ca72 100644 --- a/Commons/Settings.qml +++ b/Commons/Settings.qml @@ -71,7 +71,13 @@ Singleton { id: saveTimer running: false interval: 1000 - onTriggered: settingsFileView.writeAdapter() + onTriggered: { + settingsFileView.writeAdapter() + // Write to fallback location if set + if (Quickshell.env("NOCTALIA_SETTINGS_FALLBACK")) { + settingsFallbackFileView.writeAdapter() + } + } } FileView { @@ -101,11 +107,25 @@ Singleton { } } onLoadFailed: function (error) { - if (error.toString().includes("No such file") || error === 2) + if (error.toString().includes("No such file") || error === 2) { // File doesn't exist, create it with default values writeAdapter() + // Also write to fallback if set + if (Quickshell.env("NOCTALIA_SETTINGS_FALLBACK")) { + settingsFallbackFileView.writeAdapter() + } + } } } + + // Fallback FileView for writing settings to alternate location + FileView { + id: settingsFallbackFileView + path: Quickshell.env("NOCTALIA_SETTINGS_FALLBACK") || "" + adapter: Quickshell.env("NOCTALIA_SETTINGS_FALLBACK") ? adapter : null + printErrors: false + watchChanges: false + } JsonAdapter { id: adapter diff --git a/flake.nix b/flake.nix index 437af0d7..179164ac 100644 --- a/flake.nix +++ b/flake.nix @@ -277,7 +277,10 @@ RestartSec = 3; TimeoutStartSec = 10; TimeoutStopSec = 5; - Environment = [ "PATH=${config.system.path}/bin" ]; + Environment = [ + "PATH=${config.system.path}/bin" + "NOCTALIA_SETTINGS_FALLBACK=%h/.config/noctalia/gui-settings.json" + ]; }; };