diff --git a/macos/Sources/Features/Terminal/TerminalManager.swift b/macos/Sources/Features/Terminal/TerminalManager.swift index e105a3711..fc4183864 100644 --- a/macos/Sources/Features/Terminal/TerminalManager.swift +++ b/macos/Sources/Features/Terminal/TerminalManager.swift @@ -67,6 +67,11 @@ class TerminalManager { Self.lastCascadePoint = window.cascadeTopLeft(from: Self.lastCascadePoint) } + if (ghostty.windowFullscreen) { + // NOTE: this doesn't properly handle non-native fullscreen yet + c.window?.toggleFullScreen(nil) + } + c.showWindow(self) } diff --git a/macos/Sources/Ghostty/AppState.swift b/macos/Sources/Ghostty/AppState.swift index 4f637e3a9..68d63b39c 100644 --- a/macos/Sources/Ghostty/AppState.swift +++ b/macos/Sources/Ghostty/AppState.swift @@ -105,6 +105,15 @@ extension Ghostty { _ = ghostty_config_get(config, &v, key, UInt(key.count)) return v } + + /// Whether to open new windows in fullscreen. + var windowFullscreen: Bool { + guard let config = self.config else { return true } + var v = false + let key = "fullscreen" + _ = ghostty_config_get(config, &v, key, UInt(key.count)) + return v + } /// The background opacity. var backgroundOpacity: Double { diff --git a/src/config/Config.zig b/src/config/Config.zig index 54f3d6c3f..b1512457c 100644 --- a/src/config/Config.zig +++ b/src/config/Config.zig @@ -281,6 +281,10 @@ command: ?[]const u8 = null, /// Start new windows in fullscreen. This setting applies to new /// windows and does not apply to tabs, splits, etc. However, this /// setting will apply to all new windows, not just the first one. +/// +/// On macOS, this always creates the window in native fullscreen. +/// Non-native fullscreen is not currently supported with this +/// setting. fullscreen: bool = false, /// The title Ghostty will use for the window. This will force the title