diff options
author | Aylur <[email protected]> | 2024-07-31 16:25:04 +0200 |
---|---|---|
committer | Aylur <[email protected]> | 2024-07-31 16:25:04 +0200 |
commit | a0680e3b88c767da23186648024a5b05c4a2f013 (patch) | |
tree | 5dde966f23ecba2a438b633fba62f4e112c7763f | |
parent | f86a908952c5ae34a0e2ac832ffe43cb4d0ae0cc (diff) |
feat: optiona exit code on App.quit
-rw-r--r-- | gjs/src/application.ts | 5 | ||||
-rw-r--r-- | lua/astal/application.lua | 5 | ||||
-rw-r--r-- | lua/test.lua | 8 | ||||
-rw-r--r-- | src/astal.vala | 15 |
4 files changed, 26 insertions, 7 deletions
diff --git a/gjs/src/application.ts b/gjs/src/application.ts index 835b319..0c14278 100644 --- a/gjs/src/application.ts +++ b/gjs/src/application.ts @@ -59,6 +59,11 @@ class AstalJS extends Astal.Application { super.apply_css(style, reset) } + quit(code?: number): void { + super.quit() + exit(code ?? 0) + } + start({ requestHandler, css, hold, main, client, ...cfg }: Config = {}) { client ??= () => { print(`Astal instance "${this.instanceName}" already running`) diff --git a/lua/astal/application.lua b/lua/astal/application.lua index c325ed1..f32552c 100644 --- a/lua/astal/application.lua +++ b/lua/astal/application.lua @@ -16,6 +16,11 @@ function AstalLua:do_request(msg, conn) end end +function AstalLua:quit(code) + Astal.Application.quit(self) + os.exit(code) +end + local app = AstalLua() ---@class StartConfig diff --git a/lua/test.lua b/lua/test.lua new file mode 100644 index 0000000..f5123a3 --- /dev/null +++ b/lua/test.lua @@ -0,0 +1,8 @@ +local App = require("astal.application") + +App:start({ + instance_name = "test", + main = function() + App:quit(1) + end, +}) diff --git a/src/astal.vala b/src/astal.vala index 3ed705d..6868a7e 100644 --- a/src/astal.vala +++ b/src/astal.vala @@ -192,11 +192,11 @@ public class Application : Gtk.Application { } } - construct { + public new void quit() throws DBusError, IOError { if (instance_name == null) instance_name = "astal"; - shutdown.connect(() => { + if (service != null) { if (FileUtils.test(socket_path, GLib.FileTest.EXISTS)){ try { File.new_for_path(socket_path).delete(null); @@ -204,17 +204,18 @@ public class Application : Gtk.Application { warning(err.message); } } - }); + } + + base.quit(); + } + construct { + shutdown.connect(() => { try { quit(); } catch(Error err) {} }); Unix.signal_add(1, () => { try { quit(); } catch(Error err) {} }, Priority.HIGH); Unix.signal_add(2, () => { try { quit(); } catch(Error err) {} }, Priority.HIGH); Unix.signal_add(15, () => { try { quit(); } catch(Error err) {} }, Priority.HIGH); } - public new void quit() throws DBusError, IOError { - base.quit(); - } - public static List<string> get_instances() { var list = new List<string>(); var prefix = "io.Astal."; |