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],
|
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
|
||||||
|
@ -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")
|
||||||
|
}
|
||||||
|
@ -232,9 +232,18 @@ class BaseTerminalController: NSWindowController,
|
|||||||
|
|
||||||
func titleDidChange(to: String) {
|
func titleDidChange(to: String) {
|
||||||
guard let window else { return }
|
guard let window else { return }
|
||||||
|
|
||||||
// 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) {
|
||||||
|
@ -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
|
||||||
|
@ -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.
|
||||||
|
Reference in New Issue
Block a user