summaryrefslogtreecommitdiff
path: root/src/config/funcs.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/config/funcs.ts')
-rw-r--r--src/config/funcs.ts14
1 files changed, 11 insertions, 3 deletions
diff --git a/src/config/funcs.ts b/src/config/funcs.ts
index 473c502..72823eb 100644
--- a/src/config/funcs.ts
+++ b/src/config/funcs.ts
@@ -1,4 +1,4 @@
-import { GLib, monitorFile, readFileAsync, Variable } from "astal";
+import { GLib, monitorFile, readFileAsync, Variable, writeFileAsync } from "astal";
import config from ".";
import { loadStyleAsync } from "../../app";
import defaults from "./defaults";
@@ -88,7 +88,15 @@ export const updateConfig = async () => {
loadStyleAsync().catch(console.error);
};
-export const initConfig = () => {
+export const initConfig = async () => {
monitorFile(CONFIG, () => updateConfig().catch(e => console.warn(`Invalid config: ${e}`)));
- updateConfig().catch(e => console.warn(`Invalid config: ${e}`));
+ await updateConfig().catch(e => console.warn(`Invalid config: ${e}`));
+};
+
+export const setConfig = async (path: string, value: any) => {
+ const conf = JSON.parse(await readFileAsync(CONFIG));
+ let obj = conf;
+ for (const p of path.split(".").slice(0, -1)) obj = obj[p];
+ obj[path.split(".").at(-1)!] = value;
+ await writeFileAsync(CONFIG, JSON.stringify(conf, null, 4));
};