💥 chore(app): correcly use appScope and dispose

This commit is contained in:
retrozinndev
2025-07-30 16:16:23 -03:00
parent 89851d4642
commit 30109b00a8
+12 -17
View File
@@ -14,13 +14,12 @@ import { Stylesheet } from "./scripts/stylesheet";
import { Clipboard } from "./scripts/clipboard"; import { Clipboard } from "./scripts/clipboard";
import { PluginClipboard } from "./runner/plugins/clipboard"; import { PluginClipboard } from "./runner/plugins/clipboard";
import { Config } from "./scripts/config"; import { Config } from "./scripts/config";
import { onCleanup, Scope } from "/usr/share/ags/js/gnim/src/jsx/scope"; import { Scope } from "/usr/share/ags/js/gnim/src/jsx/scope";
import App from "ags/gtk4/app" import App from "ags/gtk4/app"
import GObject from "ags/gobject"; import GObject from "ags/gobject";
import AstalNotifd from "gi://AstalNotifd"; import AstalNotifd from "gi://AstalNotifd";
export const appScope: Scope = new Scope(null); export const appScope: Scope = new Scope(null);
let osdTimer: (Time|undefined), osdTimeout = 3500; let osdTimer: (Time|undefined), osdTimeout = 3500;
@@ -43,22 +42,15 @@ App.start({
requestHandler: (request: string, response: (result: any) => void): void => { requestHandler: (request: string, response: (result: any) => void): void => {
response(handleArguments(request)); response(handleArguments(request));
}, },
main: (..._args: Array<string>) => appScope.run(() => { main: (..._args: Array<string>) => {
console.log(`Initialized astal instance as: ${ App.instanceName || "astal" }`); console.log(`Colorshell: initialized instance as: "${ App.instanceName || "astal" }"`);
App.connect("shutdown", () => appScope.dispose()); connections.set(App, App.connect("shutdown", () => appScope.dispose()));
console.log("Config: initializing configuration file"); console.log("Config: initializing configuration file");
Config.getDefault(); Config.getDefault();
Stylesheet.getDefault().compileApply(); Stylesheet.getDefault().compileApply();
App.vfunc_dispose = () => {
console.log("Disconnecting stuff");
connections.forEach((v, k) => Array.isArray(v) ?
v.map(id => k.disconnect(id))
: k.disconnect(v));
};
// Init clipboard module // Init clipboard module
Clipboard.getDefault(); Clipboard.getDefault();
@@ -66,7 +58,7 @@ App.start({
Wallpaper.getDefault(); Wallpaper.getDefault();
console.log("Adding runner plugins"); console.log("Adding runner plugins");
runnerPlugins.map(plugin => Runner.addPlugin(plugin)); runnerPlugins.forEach(plugin => Runner.addPlugin(plugin));
connections.set(Wireplumber.getDefault(), connections.set(Wireplumber.getDefault(),
Wireplumber.getDefault().getDefaultSink().connect("notify::volume", () => Wireplumber.getDefault().getDefaultSink().connect("notify::volume", () =>
@@ -84,10 +76,13 @@ App.start({
defaultWindows.forEach(w => Windows.getDefault().open(w)); defaultWindows.forEach(w => Windows.getDefault().open(w));
onCleanup(() => connections.forEach((ids, obj) => Array.isArray(ids) ? appScope.onCleanup(() => {
ids.forEach(id => obj.disconnect(id)) console.log("Colorshell: disconnecting from GObjects because of ::shutdown");
: obj.disconnect(ids))); connections.forEach((ids, obj) => Array.isArray(ids) ?
}) ids.forEach(id => obj.disconnect(id))
: obj.disconnect(ids));
});
}
}); });
function triggerOSD() { function triggerOSD() {