config: add quit-after-last-window-closed

Whether or not to quit after the last window is closed. This defaults
to false. Currently only supported on macOS.
This commit is contained in:
Jon Parise
2023-10-18 12:46:35 -07:00
parent 0eea5f00e2
commit 17b63f7617
3 changed files with 18 additions and 1 deletions

View File

@ -81,7 +81,11 @@ class AppDelegate: NSObject, ObservableObject, NSApplicationDelegate, GhosttyApp
// else is initialized.
NSApp.servicesProvider = ServiceProvider()
}
func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool {
return ghostty.shouldQuitAfterLastWindowClosed
}
func applicationShouldTerminate(_ sender: NSApplication) -> NSApplication.TerminateReply {
let windows = NSApplication.shared.windows
if (windows.isEmpty) { return .terminateNow }

View File

@ -51,6 +51,15 @@ extension Ghostty {
}
}
/// True if we should quit when the last window is closed.
var shouldQuitAfterLastWindowClosed: Bool {
guard let config = self.config else { return true }
var v = false;
let key = "quit-after-last-window-closed"
_ = ghostty_config_get(config, &v, key, UInt(key.count))
return v;
}
/// True if we need to confirm before quitting.
var needsConfirmQuit: Bool {
guard let app = app else { return false }

View File

@ -430,6 +430,10 @@ keybind: Keybinds = .{},
/// to true. If set to false, surfaces will close without any confirmation.
@"confirm-close-surface": bool = true,
/// Whether or not to quit after the last window is closed. This defaults
/// to false. Currently only supported on macOS.
@"quit-after-last-window-closed": bool = false,
/// Whether to enable shell integration auto-injection or not. Shell
/// integration greatly enhances the terminal experience by enabling
/// a number of features: