diff --git a/macos/Sources/AppDelegate.swift b/macos/Sources/AppDelegate.swift
index 8cd035991..4ff6dcb51 100644
--- a/macos/Sources/AppDelegate.swift
+++ b/macos/Sources/AppDelegate.swift
@@ -27,6 +27,7 @@ class AppDelegate: NSObject, ObservableObject, NSApplicationDelegate, GhosttyApp
@IBOutlet private var menuCopy: NSMenuItem?
@IBOutlet private var menuPaste: NSMenuItem?
+ @IBOutlet private var menuZoomSplit: NSMenuItem?
@IBOutlet private var menuPreviousSplit: NSMenuItem?
@IBOutlet private var menuNextSplit: NSMenuItem?
@IBOutlet private var menuSelectSplitAbove: NSMenuItem?
@@ -138,6 +139,7 @@ class AppDelegate: NSObject, ObservableObject, NSApplicationDelegate, GhosttyApp
syncMenuShortcut(action: "copy_to_clipboard", menuItem: self.menuCopy)
syncMenuShortcut(action: "paste_from_clipboard", menuItem: self.menuPaste)
+ syncMenuShortcut(action: "toggle_split_zoom", menuItem: self.menuZoomSplit)
syncMenuShortcut(action: "goto_split:previous", menuItem: self.menuPreviousSplit)
syncMenuShortcut(action: "goto_split:next", menuItem: self.menuNextSplit)
syncMenuShortcut(action: "goto_split:top", menuItem: self.menuSelectSplitAbove)
@@ -234,6 +236,11 @@ class AppDelegate: NSObject, ObservableObject, NSApplicationDelegate, GhosttyApp
ghostty.split(surface: surface, direction: GHOSTTY_SPLIT_DOWN)
}
+ @IBAction func splitZoom(_ sender: Any) {
+ guard let surface = focusedSurface() else { return }
+ ghostty.splitToggleZoom(surface: surface)
+ }
+
@IBAction func splitMoveFocusPrevious(_ sender: Any) {
splitMoveFocus(direction: .previous)
}
diff --git a/macos/Sources/Ghostty/AppState.swift b/macos/Sources/Ghostty/AppState.swift
index 2eccd3c2a..4b7b85d82 100644
--- a/macos/Sources/Ghostty/AppState.swift
+++ b/macos/Sources/Ghostty/AppState.swift
@@ -170,6 +170,13 @@ extension Ghostty {
ghostty_surface_split_focus(surface, direction.toNative())
}
+ func splitToggleZoom(surface: ghostty_surface_t) {
+ let action = "toggle_split_zoom"
+ if (!ghostty_surface_binding_action(surface, action, UInt(action.count))) {
+ AppDelegate.logger.warning("action failed action=\(action)")
+ }
+ }
+
// Called when the selected keyboard changes. We have to notify Ghostty so that
// it can reload the keyboard mapping for input.
@objc private func keyboardSelectionDidChange(notification: NSNotification) {
diff --git a/macos/Sources/MainMenu.xib b/macos/Sources/MainMenu.xib
index 1de314192..a65d314f2 100644
--- a/macos/Sources/MainMenu.xib
+++ b/macos/Sources/MainMenu.xib
@@ -29,6 +29,7 @@
+
@@ -162,6 +163,12 @@
+