From fe55d90ec597997b80001ee29bd158a72f501a04 Mon Sep 17 00:00:00 2001 From: Mitchell Hashimoto Date: Thu, 18 Sep 2025 14:32:46 -0700 Subject: [PATCH] macos: implement bell-features=border on macOS --- macos/Sources/Ghostty/SurfaceView.swift | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/macos/Sources/Ghostty/SurfaceView.swift b/macos/Sources/Ghostty/SurfaceView.swift index 89f7d6c9e..aca17c0fc 100644 --- a/macos/Sources/Ghostty/SurfaceView.swift +++ b/macos/Sources/Ghostty/SurfaceView.swift @@ -198,6 +198,11 @@ extension Ghostty { SecureInputOverlay() } #endif + + // Show bell border if enabled + if (ghostty.config.bellFeatures.contains(.border)) { + BellBorderOverlay(bell: surfaceView.bell) + } // If our surface is not healthy, then we render an error view over it. if (!surfaceView.healthy) { @@ -526,6 +531,22 @@ extension Ghostty { } } + /// Visual overlay that shows a border around the edges when the bell rings with border feature enabled. + struct BellBorderOverlay: View { + let bell: Bool + + var body: some View { + Rectangle() + .strokeBorder( + Color(red: 1.0, green: 0.8, blue: 0.0).opacity(0.5), + lineWidth: 3 + ) + .allowsHitTesting(false) + .opacity(bell ? 1.0 : 0.0) + .animation(.easeInOut(duration: 0.3), value: bell) + } + } + #if canImport(AppKit) /// When changing the split state, or going full screen (native or non), the terminal view /// will lose focus. There has to be some nice SwiftUI-native way to fix this but I can't