Merge remote-tracking branch 'refs/remotes/origin/main'

This commit is contained in:
johnseth97
2024-10-24 20:20:20 -04:00
5 changed files with 48 additions and 12 deletions

View File

@ -155,6 +155,14 @@ class AppDelegate: NSObject,
matching: [.keyDown], matching: [.keyDown],
handler: localEventHandler) handler: localEventHandler)
// Notifications
NotificationCenter.default.addObserver(
self,
selector: #selector(quickTerminalDidChangeVisibility),
name: .quickTerminalDidChangeVisibility,
object: nil
)
// Configure user notifications // Configure user notifications
let actions = [ let actions = [
UNNotificationAction(identifier: Ghostty.userNotificationActionShow, title: "Show") UNNotificationAction(identifier: Ghostty.userNotificationActionShow, title: "Show")
@ -409,6 +417,11 @@ class AppDelegate: NSObject,
return event 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 //MARK: - Restorable State
/// We support NSSecureCoding for restorable state. Required as of macOS Sonoma (14) but a good idea anyways. /// 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 } guard let quickController = self.quickController else { return }
quickController.toggle() 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 /// Toggles visibility of all Ghosty Terminal windows. When hidden, activates Ghostty as the frontmost application

View File

@ -140,6 +140,12 @@ class QuickTerminalController: BaseTerminalController {
guard !visible else { return } guard !visible else { return }
visible = true 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 // If we have a previously focused application and it isn't us, then
// we want to store it so we can restore state later. // we want to store it so we can restore state later.
if !NSApp.isActive { if !NSApp.isActive {
@ -170,6 +176,12 @@ class QuickTerminalController: BaseTerminalController {
guard visible else { return } guard visible else { return }
visible = false visible = false
// Notify the change
NotificationCenter.default.post(
name: .quickTerminalDidChangeVisibility,
object: self
)
animateWindowOut(window: window, to: position) animateWindowOut(window: window, to: position)
} }
@ -350,3 +362,8 @@ class QuickTerminalController: BaseTerminalController {
syncAppearance() syncAppearance()
} }
} }
extension Notification.Name {
/// The quick terminal did become hidden or visible.
static let quickTerminalDidChangeVisibility = Notification.Name("QuickTerminalDidChangeVisibility")
}

View File

@ -235,6 +235,15 @@ class BaseTerminalController: NSWindowController,
// Set the main window title // Set the main window title
window.title = to 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) { func cellSizeDidChange(to: NSSize) {

View File

@ -213,14 +213,7 @@ class TerminalController: BaseTerminalController {
} }
// If window decorations are disabled, remove our title // If window decorations are disabled, remove our title
if (!ghostty.config.windowDecorations) { if (!ghostty.config.windowDecorations) { window.styleMask.remove(.titled) }
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)
}
// Terminals typically operate in sRGB color space and macOS defaults // Terminals typically operate in sRGB color space and macOS defaults
// to "native" which is typically P3. There is a lot more resources // to "native" which is typically P3. There is a lot more resources

View File

@ -310,7 +310,13 @@ __bp_install() {
fi fi
# Adjust our HISTCONTROL Variable if needed. # 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 # 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. # backgrounded subshell commands (e.g. (pwd)& ). Believe this is a bug in Bash.