     }
 
     // MARK:- Translucency, AutoHideTitle Bar
-    fileprivate dynamic var mouseOver: Bool = false {
+    dynamic var priorIdle: Bool = false
+    dynamic var mouseIdle: Bool = false {
         didSet {
-            let hideTitle = autoHideTitlePreference != .never
-
-            //  treat webURL titles specially
-            if let url = panel.representedURL, !url.isFileURL, url.absoluteString != UserSettings.HomePageURL.value {
-                NSAnimationContext.runAnimationGroup({ (context) in
-                    context.duration = 0.1
-                    panel.animator().titleVisibility = mouseOver ? .visible : .hidden
-                    titleDragButton?.animator().isBordered = mouseOver
-                    titleDragButton?.animator().layer?.backgroundColor = mouseOver ? NSColor(hex: 0x3399FF).cgColor : NSColor.clear.cgColor
-                    titleDragButton?.animator().isHidden = !mouseOver
-                    titleDragButton?.animator().isTransparent = mouseOver
-                })
-                return
-            }
-            
-            if let window = self.webView?.window {
-                NSAnimationContext.runAnimationGroup({ (context) in
-                    context.duration = 0.1
-
-                    if autoHideTitlePreference == .outside {
-                        window.animator().titleVisibility =
-                            (autoHideTitlePreference != .never)
-                                ? mouseOver ? .visible : .hidden : .visible
-                        titleDragButton?.animator().isHidden = !mouseOver
-                        titleDragButton?.animator().isBordered = mouseOver
-                    }
-                    else
-                    {
-                        window.animator().titleVisibility = .visible
-                        titleDragButton?.animator().isHidden = false
-                        titleDragButton?.animator().isBordered = true
-                    }
-
-                })
-            }
-            updateTranslucency()
-            
-            //  view or title entered
-            if hideTitle { updateTitleBar(didChange: true) }
-
-            docIconVisibility(mouseOver)
+            mouseStateChanged()
+        }
+    }
+    dynamic var priorOver: Bool = false
+    dynamic var mouseOver: Bool = false {
+        willSet {
+            priorOver = mouseOver
+        }
+        didSet {
+            mouseStateChanged()
+        }
+    }
+    
+    fileprivate func installTitleFader() {
+        let mouseSeen = mouseOver && !mouseIdle
+
+        if let timer = fadeTimer, timer.isValid { timer.invalidate() }
+        self.fadeTimer = Timer.scheduledTimer(withTimeInterval: 5.0, repeats: false, block: { (timer) in
+            if mouseSeen, timer.isValid {
+                timer.invalidate()
+                self.mouseIdle = true
+            }
+        })
+        if let timer = self.fadeTimer { RunLoop.current.add(timer, forMode: .common) }
+    }
+    
+    fileprivate func mouseStateChanged() {
+        let stateChange = priorOver != mouseOver || priorIdle != mouseIdle
+        
+        updateTranslucency()
+        
+        //  view or title entered
+        updateTitleBar(didChange: stateChange)
+        
+        if mouseOver && self.autoHideTitlePreference == .outside {
+            installTitleFader()
         }
     }
     

        titleDragButton?.title = ""
 
        NSAnimationContext.runAnimationGroup({ (context) in
            context.duration = 0.1

            panel.animator().titleVisibility = (autoHideTitlePreference != .never) ? mouseOver ? .visible : .hidden : .visible
            titleDragButton?.animator().layer?.backgroundColor = mouseOver ? NSColor(hex: 0x3399FF).cgColor : NSColor.clear.cgColor

        DispatchQueue.main.async {
            self.mouseOver = true
        }
    }
    
    override func mouseExited(with theEvent: NSEvent) {
