mirror of
https://github.com/ghostty-org/ghostty.git
synced 2025-07-16 08:46:08 +03:00
Merge pull request #2343 from ghostty-org/push-prytryysmvqw
macos: apply background opacity to quick terminal
This commit is contained in:
@ -33,6 +33,11 @@ class QuickTerminalController: BaseTerminalController {
|
|||||||
selector: #selector(onToggleFullscreen),
|
selector: #selector(onToggleFullscreen),
|
||||||
name: Ghostty.Notification.ghosttyToggleFullscreen,
|
name: Ghostty.Notification.ghosttyToggleFullscreen,
|
||||||
object: nil)
|
object: nil)
|
||||||
|
center.addObserver(
|
||||||
|
self,
|
||||||
|
selector: #selector(ghosttyDidReloadConfig),
|
||||||
|
name: Ghostty.Notification.ghosttyDidReloadConfig,
|
||||||
|
object: nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
required init?(coder: NSCoder) {
|
required init?(coder: NSCoder) {
|
||||||
@ -58,6 +63,9 @@ class QuickTerminalController: BaseTerminalController {
|
|||||||
// make this restorable, but it isn't currently implemented.
|
// make this restorable, but it isn't currently implemented.
|
||||||
window.isRestorable = false
|
window.isRestorable = false
|
||||||
|
|
||||||
|
// Setup our configured appearance that we support.
|
||||||
|
syncAppearance()
|
||||||
|
|
||||||
// Setup our initial size based on our configured position
|
// Setup our initial size based on our configured position
|
||||||
position.setLoaded(window)
|
position.setLoaded(window)
|
||||||
|
|
||||||
@ -242,6 +250,25 @@ class QuickTerminalController: BaseTerminalController {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private func syncAppearance() {
|
||||||
|
guard let window else { return }
|
||||||
|
|
||||||
|
// If we have window transparency then set it transparent. Otherwise set it opaque.
|
||||||
|
if (ghostty.config.backgroundOpacity < 1) {
|
||||||
|
window.isOpaque = false
|
||||||
|
|
||||||
|
// This is weird, but we don't use ".clear" because this creates a look that
|
||||||
|
// matches Terminal.app much more closer. This lets users transition from
|
||||||
|
// Terminal.app more easily.
|
||||||
|
window.backgroundColor = .white.withAlphaComponent(0.001)
|
||||||
|
|
||||||
|
ghostty_set_window_background_blur(ghostty.app, Unmanaged.passUnretained(window).toOpaque())
|
||||||
|
} else {
|
||||||
|
window.isOpaque = true
|
||||||
|
window.backgroundColor = .windowBackgroundColor
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// MARK: First Responder
|
// MARK: First Responder
|
||||||
|
|
||||||
@IBAction override func closeWindow(_ sender: Any) {
|
@IBAction override func closeWindow(_ sender: Any) {
|
||||||
@ -273,4 +300,8 @@ class QuickTerminalController: BaseTerminalController {
|
|||||||
// We ignore the requested mode and always use non-native for the quick terminal
|
// We ignore the requested mode and always use non-native for the quick terminal
|
||||||
toggleFullscreen(mode: .nonNative)
|
toggleFullscreen(mode: .nonNative)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@objc private func ghosttyDidReloadConfig(notification: SwiftUI.Notification) {
|
||||||
|
syncAppearance()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -363,6 +363,11 @@ extension Ghostty {
|
|||||||
delegate.configDidReload(state)
|
delegate.configDidReload(state)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Send an event out
|
||||||
|
NotificationCenter.default.post(
|
||||||
|
name: Ghostty.Notification.ghosttyDidReloadConfig,
|
||||||
|
object: nil)
|
||||||
|
|
||||||
return newConfig.config
|
return newConfig.config
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -202,6 +202,9 @@ extension Ghostty.Notification {
|
|||||||
/// Used to pass a configuration along when creating a new tab/window/split.
|
/// Used to pass a configuration along when creating a new tab/window/split.
|
||||||
static let NewSurfaceConfigKey = "com.mitchellh.ghostty.newSurfaceConfig"
|
static let NewSurfaceConfigKey = "com.mitchellh.ghostty.newSurfaceConfig"
|
||||||
|
|
||||||
|
/// Posted when the application configuration is reloaded.
|
||||||
|
static let ghosttyDidReloadConfig = Notification.Name("com.mitchellh.ghostty.didReloadConfig")
|
||||||
|
|
||||||
/// Posted when a new split is requested. The sending object will be the surface that had focus. The
|
/// Posted when a new split is requested. The sending object will be the surface that had focus. The
|
||||||
/// userdata has one key "direction" with the direction to split to.
|
/// userdata has one key "direction" with the direction to split to.
|
||||||
static let ghosttyNewSplit = Notification.Name("com.mitchellh.ghostty.newSplit")
|
static let ghosttyNewSplit = Notification.Name("com.mitchellh.ghostty.newSplit")
|
||||||
|
Reference in New Issue
Block a user