mirror of
https://github.com/ghostty-org/ghostty.git
synced 2025-08-02 14:57:31 +03:00
Add fallback timer for empty window title
This commit is contained in:
@ -12,7 +12,14 @@ extension Ghostty {
|
|||||||
// The current title of the surface as defined by the pty. This can be
|
// The current title of the surface as defined by the pty. This can be
|
||||||
// changed with escape codes. This is public because the callbacks go
|
// changed with escape codes. This is public because the callbacks go
|
||||||
// to the app level and it is set from there.
|
// to the app level and it is set from there.
|
||||||
@Published private(set) var title: String = ""
|
@Published private(set) var title: String = "" {
|
||||||
|
didSet {
|
||||||
|
if !title.isEmpty {
|
||||||
|
titleFallbackTimer?.invalidate()
|
||||||
|
titleFallbackTimer = nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// The current pwd of the surface as defined by the pty. This can be
|
// The current pwd of the surface as defined by the pty. This can be
|
||||||
// changed with escape codes.
|
// changed with escape codes.
|
||||||
@ -113,6 +120,9 @@ extension Ghostty {
|
|||||||
// A small delay that is introduced before a title change to avoid flickers
|
// A small delay that is introduced before a title change to avoid flickers
|
||||||
private var titleChangeTimer: Timer?
|
private var titleChangeTimer: Timer?
|
||||||
|
|
||||||
|
// A timer to fallback to ghost emoji if no title is set within the grace period
|
||||||
|
private var titleFallbackTimer: Timer?
|
||||||
|
|
||||||
/// Event monitor (see individual events for why)
|
/// Event monitor (see individual events for why)
|
||||||
private var eventMonitor: Any? = nil
|
private var eventMonitor: Any? = nil
|
||||||
|
|
||||||
@ -139,6 +149,13 @@ extension Ghostty {
|
|||||||
// can do SOMETHING.
|
// can do SOMETHING.
|
||||||
super.init(frame: NSMakeRect(0, 0, 800, 600))
|
super.init(frame: NSMakeRect(0, 0, 800, 600))
|
||||||
|
|
||||||
|
// Set a timer to show the ghost emoji after 500ms if no title is set
|
||||||
|
titleFallbackTimer = Timer.scheduledTimer(withTimeInterval: 0.5, repeats: false) { [weak self] _ in
|
||||||
|
if let self = self, self.title.isEmpty {
|
||||||
|
self.title = "👻"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Before we initialize the surface we want to register our notifications
|
// Before we initialize the surface we want to register our notifications
|
||||||
// so there is no window where we can't receive them.
|
// so there is no window where we can't receive them.
|
||||||
let center = NotificationCenter.default
|
let center = NotificationCenter.default
|
||||||
|
Reference in New Issue
Block a user