diff --git a/macos/Sources/App/macOS/AppDelegate.swift b/macos/Sources/App/macOS/AppDelegate.swift
index 1611541d1..47302f302 100644
--- a/macos/Sources/App/macOS/AppDelegate.swift
+++ b/macos/Sources/App/macOS/AppDelegate.swift
@@ -49,6 +49,7 @@ class AppDelegate: NSObject,
@IBOutlet private var menuIncreaseFontSize: NSMenuItem?
@IBOutlet private var menuDecreaseFontSize: NSMenuItem?
@IBOutlet private var menuResetFontSize: NSMenuItem?
+ @IBOutlet private var menuSlideTerminal: NSMenuItem?
@IBOutlet private var menuTerminalInspector: NSMenuItem?
@IBOutlet private var menuEqualizeSplits: NSMenuItem?
@@ -73,6 +74,9 @@ class AppDelegate: NSObject,
/// Manages our terminal windows.
let terminalManager: TerminalManager
+ /// Our slide terminal. This starts out uninitialized and only initializes if used.
+ private var slideController: SlideTerminalController? = nil
+
/// Manages updates
let updaterController: SPUStandardUpdaterController
let updaterDelegate: UpdaterDelegate = UpdaterDelegate()
@@ -156,8 +160,6 @@ class AppDelegate: NSObject,
center.delegate = self
}
- var foo: SlideTerminalController? = nil
-
func applicationDidBecomeActive(_ notification: Notification) {
guard !applicationHasBecomeActive else { return }
applicationHasBecomeActive = true
@@ -167,11 +169,8 @@ class AppDelegate: NSObject,
// - if we're opening a URL since `application(_:openFile:)` is called before this.
// - if we're restoring from persisted state
if terminalManager.windows.count == 0 {
- //terminalManager.newWindow()
+ terminalManager.newWindow()
}
-
- foo = SlideTerminalController(ghostty, baseConfig: nil)
- foo?.showWindow(self)
}
func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool {
@@ -315,6 +314,7 @@ class AppDelegate: NSObject,
syncMenuShortcut(action: "increase_font_size:1", menuItem: self.menuIncreaseFontSize)
syncMenuShortcut(action: "decrease_font_size:1", menuItem: self.menuDecreaseFontSize)
syncMenuShortcut(action: "reset_font_size", menuItem: self.menuResetFontSize)
+ syncMenuShortcut(action: "toggle_slide_terminal", menuItem: self.menuSlideTerminal)
syncMenuShortcut(action: "inspector:toggle", menuItem: self.menuTerminalInspector)
syncMenuShortcut(action: "toggle_secure_input", menuItem: self.menuSecureInput)
@@ -550,4 +550,13 @@ class AppDelegate: NSObject,
@IBAction func toggleSecureInput(_ sender: Any) {
setSecureInput(.toggle)
}
+
+ @IBAction func toggleSlideTerminal(_ sender: Any) {
+ if slideController == nil {
+ slideController = SlideTerminalController(ghostty, baseConfig: nil)
+ }
+
+ guard let slideController = self.slideController else { return }
+ slideController.slideToggle()
+ }
}
diff --git a/macos/Sources/App/macOS/MainMenu.xib b/macos/Sources/App/macOS/MainMenu.xib
index beb411987..f19f9d1ed 100644
--- a/macos/Sources/App/macOS/MainMenu.xib
+++ b/macos/Sources/App/macOS/MainMenu.xib
@@ -42,6 +42,7 @@
+
@@ -216,6 +217,13 @@
+
+