mirror of
https://github.com/ghostty-org/ghostty.git
synced 2025-08-02 14:57:31 +03:00
config: quick terminal auto hide
Introduce a setting allowing to customize the behavior of the quick terminal when it loses focus. By default, the quick terminal will automatically hide. However, you can now configure it to remain open by setting `quick-terminal-autohide: false`. Resolves #2558
This commit is contained in:

committed by
Damien Mehala

parent
dd6460bc77
commit
196af6f2ca
@ -107,7 +107,9 @@ class QuickTerminalController: BaseTerminalController {
|
|||||||
self.previousApp = nil
|
self.previousApp = nil
|
||||||
}
|
}
|
||||||
|
|
||||||
animateOut()
|
if (derivedConfig.quickTerminalAutoHide) {
|
||||||
|
animateOut()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func windowWillResize(_ sender: NSWindow, to frameSize: NSSize) -> NSSize {
|
func windowWillResize(_ sender: NSWindow, to frameSize: NSSize) -> NSSize {
|
||||||
@ -395,15 +397,18 @@ class QuickTerminalController: BaseTerminalController {
|
|||||||
private struct DerivedConfig {
|
private struct DerivedConfig {
|
||||||
let quickTerminalScreen: QuickTerminalScreen
|
let quickTerminalScreen: QuickTerminalScreen
|
||||||
let quickTerminalAnimationDuration: Double
|
let quickTerminalAnimationDuration: Double
|
||||||
|
let quickTerminalAutoHide: Bool
|
||||||
|
|
||||||
init() {
|
init() {
|
||||||
self.quickTerminalScreen = .main
|
self.quickTerminalScreen = .main
|
||||||
self.quickTerminalAnimationDuration = 0.2
|
self.quickTerminalAnimationDuration = 0.2
|
||||||
|
self.quickTerminalAutoHide = true
|
||||||
}
|
}
|
||||||
|
|
||||||
init(_ config: Ghostty.Config) {
|
init(_ config: Ghostty.Config) {
|
||||||
self.quickTerminalScreen = config.quickTerminalScreen
|
self.quickTerminalScreen = config.quickTerminalScreen
|
||||||
self.quickTerminalAnimationDuration = config.quickTerminalAnimationDuration
|
self.quickTerminalAnimationDuration = config.quickTerminalAnimationDuration
|
||||||
|
self.quickTerminalAutoHide = config.quickTerminalAutoHide
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -232,7 +232,7 @@ extension Ghostty {
|
|||||||
guard let ptr = v else { return defaultValue }
|
guard let ptr = v else { return defaultValue }
|
||||||
return String(cString: ptr)
|
return String(cString: ptr)
|
||||||
}
|
}
|
||||||
|
|
||||||
var macosTitlebarProxyIcon: MacOSTitlebarProxyIcon {
|
var macosTitlebarProxyIcon: MacOSTitlebarProxyIcon {
|
||||||
let defaultValue = MacOSTitlebarProxyIcon.visible
|
let defaultValue = MacOSTitlebarProxyIcon.visible
|
||||||
guard let config = self.config else { return defaultValue }
|
guard let config = self.config else { return defaultValue }
|
||||||
@ -366,6 +366,14 @@ extension Ghostty {
|
|||||||
_ = ghostty_config_get(config, &v, key, UInt(key.count))
|
_ = ghostty_config_get(config, &v, key, UInt(key.count))
|
||||||
return v
|
return v
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var quickTerminalAutoHide: Bool {
|
||||||
|
guard let config = self.config else { return true }
|
||||||
|
var v = true
|
||||||
|
let key = "quick-terminal-autohide"
|
||||||
|
_ = ghostty_config_get(config, &v, key, UInt(key.count))
|
||||||
|
return v
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
var resizeOverlay: ResizeOverlay {
|
var resizeOverlay: ResizeOverlay {
|
||||||
|
@ -1404,6 +1404,10 @@ keybind: Keybinds = .{},
|
|||||||
/// runtime.
|
/// runtime.
|
||||||
@"quick-terminal-animation-duration": f64 = 0.2,
|
@"quick-terminal-animation-duration": f64 = 0.2,
|
||||||
|
|
||||||
|
/// Automatically hide the quick terminal when focus shifts to another window.
|
||||||
|
/// Set it to false for the quick terminal to remain open even when it loses focus.
|
||||||
|
@"quick-terminal-autohide": bool = true,
|
||||||
|
|
||||||
/// Whether to enable shell integration auto-injection or not. Shell integration
|
/// Whether to enable shell integration auto-injection or not. Shell integration
|
||||||
/// greatly enhances the terminal experience by enabling a number of features:
|
/// greatly enhances the terminal experience by enabling a number of features:
|
||||||
///
|
///
|
||||||
|
Reference in New Issue
Block a user