summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAylur <[email protected]>2024-07-31 16:25:04 +0200
committerAylur <[email protected]>2024-07-31 16:25:04 +0200
commita0680e3b88c767da23186648024a5b05c4a2f013 (patch)
tree5dde966f23ecba2a438b633fba62f4e112c7763f
parentf86a908952c5ae34a0e2ac832ffe43cb4d0ae0cc (diff)
feat: optiona exit code on App.quit
-rw-r--r--gjs/src/application.ts5
-rw-r--r--lua/astal/application.lua5
-rw-r--r--lua/test.lua8
-rw-r--r--src/astal.vala15
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.";