aboutsummaryrefslogtreecommitdiff
path: root/patches/bar-screen_hotplug-20260810-f6805c9.patch
diff options
context:
space:
mode:
Diffstat (limited to 'patches/bar-screen_hotplug-20260810-f6805c9.patch')
-rw-r--r--patches/bar-screen_hotplug-20260810-f6805c9.patch73
1 files changed, 0 insertions, 73 deletions
diff --git a/patches/bar-screen_hotplug-20260810-f6805c9.patch b/patches/bar-screen_hotplug-20260810-f6805c9.patch
deleted file mode 100644
index 1533b15..0000000
--- a/patches/bar-screen_hotplug-20260810-f6805c9.patch
+++ /dev/null
@@ -1,73 +0,0 @@
-diff --git a/Sources/bar/Models/AppDelegate.swift b/Sources/bar/Models/AppDelegate.swift
-index cefdfc0..5db4946 100644
---- a/Sources/bar/Models/AppDelegate.swift
-+++ b/Sources/bar/Models/AppDelegate.swift
-@@ -6,15 +6,10 @@ final class AppDelegate: NSObject, NSApplicationDelegate {
- private var windows: [BarWindow] = []
- private var blocks: [Block] = Config.blocks.map(\.resolved)
- private var tokens: [UnsafeMutableRawPointer] = []
-+ private var screenObserver: NSObjectProtocol?
-
- func applicationDidFinishLaunching(_ notification: Notification) {
-- for screen in NSScreen.screens {
-- let frame = Screen.barFrame(screen, position: Config.position, height: Config.height)
-- let window = BarWindow(contentRect: frame)
-- window.contentView = NSHostingView(rootView: BarView(blocks: blocks))
-- window.orderFrontRegardless()
-- windows.append(window)
-- }
-+ buildWindows()
-
- // Register a listener to hide the bar
- tokens.append(
-@@ -41,11 +36,24 @@ final class AppDelegate: NSObject, NSApplicationDelegate {
-
- // Start the block's auto refresh
- for block in blocks { block.start() }
-+
-+ // Observe screen changes — recreate windows when displays
-+ // are added or removed.
-+ screenObserver = NotificationCenter.default.addObserver(
-+ forName: NSApplication.didChangeScreenParametersNotification,
-+ object: nil,
-+ queue: .main
-+ ) { [weak self] _ in
-+ self?.rebuildWindows()
-+ }
- }
-
- func applicationWillTerminate(_ notification: Notification) {
- for block in blocks { block.stop() }
- for token in tokens { Notifier.cancel(token) }
-+ if let observer = screenObserver {
-+ NotificationCenter.default.removeObserver(observer)
-+ }
- }
-
- /// Order out all bar windows
-@@ -68,6 +76,25 @@ final class AppDelegate: NSObject, NSApplicationDelegate {
- }
- }
-
-+ /// Create a bar window for each connected screen.
-+ @MainActor private func buildWindows() {
-+ for screen in NSScreen.screens {
-+ let frame = Screen.barFrame(screen, position: Config.position, height: Config.height)
-+ let window = BarWindow(contentRect: frame)
-+ window.contentView = NSHostingView(rootView: BarView(blocks: blocks))
-+ window.orderFrontRegardless()
-+ windows.append(window)
-+ }
-+ }
-+
-+ /// Remove all existing windows and create new ones for the current
-+ /// set of screens — called when a display is connected or disconnected.
-+ @MainActor private func rebuildWindows() {
-+ for window in windows { window.orderOut(nil) }
-+ windows.removeAll()
-+ buildWindows()
-+ }
-+
- /// Called from a Darwin notification handler. Marked `nonisolated` because
- /// libnotify's delivery contract isn't statically visible to Swift, so we
- /// hop back to the main actor explicitly.