diff --git a/macos/Sources/Features/QuickTerminal/QuickTerminalPosition.swift b/macos/Sources/Features/QuickTerminal/QuickTerminalPosition.swift index 51b450700..3d2a2a045 100644 --- a/macos/Sources/Features/QuickTerminal/QuickTerminalPosition.swift +++ b/macos/Sources/Features/QuickTerminal/QuickTerminalPosition.swift @@ -5,6 +5,7 @@ enum QuickTerminalPosition : String { case bottom case left case right + case center /// Set the loaded state for a window. func setLoaded(_ window: NSWindow) { @@ -25,6 +26,14 @@ enum QuickTerminalPosition : String { width: screen.frame.width / 4, height: screen.frame.height) ), display: false) + + case .center: + window.setFrame(.init( + origin: window.frame.origin, + size: .init( + width: screen.frame.width / 2, + height: screen.frame.height / 3) + ), display: false) } } @@ -61,6 +70,10 @@ enum QuickTerminalPosition : String { case .left, .right: finalSize.height = screen.frame.height + + case .center: + finalSize.width = screen.frame.width / 2 + finalSize.height = screen.frame.height / 3 } return finalSize @@ -80,6 +93,9 @@ enum QuickTerminalPosition : String { case .right: return .init(x: screen.frame.maxX, y: 0) + + case .center: + return .init(x: (screen.visibleFrame.maxX - window.frame.width) / 2, y: screen.visibleFrame.maxY - window.frame.width) } } @@ -97,6 +113,9 @@ enum QuickTerminalPosition : String { case .right: return .init(x: screen.visibleFrame.maxX - window.frame.width, y: window.frame.origin.y) + + case .center: + return .init(x: (screen.visibleFrame.maxX - window.frame.width) / 2, y: (screen.visibleFrame.maxY - window.frame.height) / 2) } } } diff --git a/src/config/Config.zig b/src/config/Config.zig index 806c16b1c..b89aa566d 100644 --- a/src/config/Config.zig +++ b/src/config/Config.zig @@ -1377,6 +1377,7 @@ keybind: Keybinds = .{}, /// * `bottom` - Terminal appears at the bottom of the screen. /// * `left` - Terminal appears at the left of the screen. /// * `right` - Terminal appears at the right of the screen. +/// * `center` - Terminal appears at the center of the screen. /// /// Changing this configuration requires restarting Ghostty completely. @"quick-terminal-position": QuickTerminalPosition = .top, @@ -5283,6 +5284,7 @@ pub const QuickTerminalPosition = enum { bottom, left, right, + center, }; /// See quick-terminal-screen