mirror of
https://github.com/ghostty-org/ghostty.git
synced 2025-07-17 09:16:11 +03:00
Merge remote-tracking branch 'refs/remotes/origin/main'
This commit is contained in:
@ -155,6 +155,14 @@ class AppDelegate: NSObject,
|
||||
matching: [.keyDown],
|
||||
handler: localEventHandler)
|
||||
|
||||
// Notifications
|
||||
NotificationCenter.default.addObserver(
|
||||
self,
|
||||
selector: #selector(quickTerminalDidChangeVisibility),
|
||||
name: .quickTerminalDidChangeVisibility,
|
||||
object: nil
|
||||
)
|
||||
|
||||
// Configure user notifications
|
||||
let actions = [
|
||||
UNNotificationAction(identifier: Ghostty.userNotificationActionShow, title: "Show")
|
||||
@ -409,6 +417,11 @@ class AppDelegate: NSObject,
|
||||
return event
|
||||
}
|
||||
|
||||
@objc private func quickTerminalDidChangeVisibility(_ notification: Notification) {
|
||||
guard let quickController = notification.object as? QuickTerminalController else { return }
|
||||
self.menuQuickTerminal?.state = if (quickController.visible) { .on } else { .off }
|
||||
}
|
||||
|
||||
//MARK: - Restorable State
|
||||
|
||||
/// We support NSSecureCoding for restorable state. Required as of macOS Sonoma (14) but a good idea anyways.
|
||||
@ -622,8 +635,6 @@ class AppDelegate: NSObject,
|
||||
|
||||
guard let quickController = self.quickController else { return }
|
||||
quickController.toggle()
|
||||
|
||||
self.menuQuickTerminal?.state = if (quickController.visible) { .on } else { .off }
|
||||
}
|
||||
|
||||
/// Toggles visibility of all Ghosty Terminal windows. When hidden, activates Ghostty as the frontmost application
|
||||
|
@ -140,6 +140,12 @@ class QuickTerminalController: BaseTerminalController {
|
||||
guard !visible else { return }
|
||||
visible = true
|
||||
|
||||
// Notify the change
|
||||
NotificationCenter.default.post(
|
||||
name: .quickTerminalDidChangeVisibility,
|
||||
object: self
|
||||
)
|
||||
|
||||
// If we have a previously focused application and it isn't us, then
|
||||
// we want to store it so we can restore state later.
|
||||
if !NSApp.isActive {
|
||||
@ -170,6 +176,12 @@ class QuickTerminalController: BaseTerminalController {
|
||||
guard visible else { return }
|
||||
visible = false
|
||||
|
||||
// Notify the change
|
||||
NotificationCenter.default.post(
|
||||
name: .quickTerminalDidChangeVisibility,
|
||||
object: self
|
||||
)
|
||||
|
||||
animateWindowOut(window: window, to: position)
|
||||
}
|
||||
|
||||
@ -350,3 +362,8 @@ class QuickTerminalController: BaseTerminalController {
|
||||
syncAppearance()
|
||||
}
|
||||
}
|
||||
|
||||
extension Notification.Name {
|
||||
/// The quick terminal did become hidden or visible.
|
||||
static let quickTerminalDidChangeVisibility = Notification.Name("QuickTerminalDidChangeVisibility")
|
||||
}
|
||||
|
@ -235,6 +235,15 @@ class BaseTerminalController: NSWindowController,
|
||||
|
||||
// Set the main window title
|
||||
window.title = to
|
||||
|
||||
// Get the current working directory from the focused surface
|
||||
if let pwd = focusedSurface?.pwd {
|
||||
// Set the window's representedURL to the current working directory
|
||||
window.representedURL = URL(fileURLWithPath: pwd)
|
||||
} else {
|
||||
// If we don't have a pwd, set representedURL to nil
|
||||
window.representedURL = nil
|
||||
}
|
||||
}
|
||||
|
||||
func cellSizeDidChange(to: NSSize) {
|
||||
|
@ -213,14 +213,7 @@ class TerminalController: BaseTerminalController {
|
||||
}
|
||||
|
||||
// If window decorations are disabled, remove our title
|
||||
if (!ghostty.config.windowDecorations) {
|
||||
window.titleVisibility = .hidden
|
||||
window.standardWindowButton(.closeButton)?.isHidden = true
|
||||
window.standardWindowButton(.miniaturizeButton)?.isHidden = true
|
||||
window.standardWindowButton(.zoomButton)?.isHidden = true
|
||||
window.titlebarAppearsTransparent = true
|
||||
window.styleMask.insert(.fullSizeContentView)
|
||||
}
|
||||
if (!ghostty.config.windowDecorations) { window.styleMask.remove(.titled) }
|
||||
|
||||
// Terminals typically operate in sRGB color space and macOS defaults
|
||||
// to "native" which is typically P3. There is a lot more resources
|
||||
|
@ -310,7 +310,13 @@ __bp_install() {
|
||||
fi
|
||||
|
||||
# Adjust our HISTCONTROL Variable if needed.
|
||||
__bp_adjust_histcontrol
|
||||
#
|
||||
# GHOSTTY: Don't modify HISTCONTROL. This hack is only needed to improve the
|
||||
# accuracy of the command argument passed to the preexec functions, and we
|
||||
# don't use that argument in our bash shell integration script (and nor does
|
||||
# the __bp_original_debug_trap function above, which is the only other active
|
||||
# preexec function).
|
||||
#__bp_adjust_histcontrol
|
||||
|
||||
# Issue #25. Setting debug trap for subshells causes sessions to exit for
|
||||
# backgrounded subshell commands (e.g. (pwd)& ). Believe this is a bug in Bash.
|
||||
|
Reference in New Issue
Block a user