← back to Ticket System
beacon: pin to Steve's screen 1 by display ID (LG ULTRAWIDE, id 5) not macOS primary; defaults-overridable via beaconDisplayID (TK-11693)
0616e22bb0e92b5ac6d56ee016e861fe57bbc89b · 2026-09-13 23:58:04 -0700 · Steve Abrams
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Q3N4rPMPvxXqQPbpQfHorw
Files touched
M desktop-bar/TicketBar.swift
Diff
commit 0616e22bb0e92b5ac6d56ee016e861fe57bbc89b
Author: Steve Abrams <steve@designerwallcoverings.com>
Date: Sun Sep 13 23:58:04 2026 -0700
beacon: pin to Steve's screen 1 by display ID (LG ULTRAWIDE, id 5) not macOS primary; defaults-overridable via beaconDisplayID (TK-11693)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Q3N4rPMPvxXqQPbpQfHorw
---
desktop-bar/TicketBar.swift | 19 ++++++++++++++++---
1 file changed, 16 insertions(+), 3 deletions(-)
diff --git a/desktop-bar/TicketBar.swift b/desktop-bar/TicketBar.swift
index 2e7fba9c..adc05613 100644
--- a/desktop-bar/TicketBar.swift
+++ b/desktop-bar/TicketBar.swift
@@ -677,10 +677,23 @@ private final class BarController: NSObject, NSApplicationDelegate, NSWindowDele
if dots.count != beaconCount { NSLog("TicketBar beacon COUNT %d", dots.count); beaconCount = dots.count }
}
- // Pin to screen 1 = NSScreen.screens.first (the (0,0)/menu-bar screen), top-center
- // just under the menu bar. Zero screens → no-op (never crash).
+ // Steve's "screen 1" is NOT the macOS menu-bar/primary (that's NSScreen.screens.first).
+ // Pin to the display whose CGDirectDisplayID matches the "beaconDisplayID" default
+ // (default 5 = LG ULTRAWIDE, confirmed by Steve TK-11693). Override without a rebuild:
+ // defaults write ticket-desktop-bar beaconDisplayID -int <N>
+ // Fall back to main/first screen if that display is disconnected. Zero screens → no-op.
+ private func beaconTargetScreen() -> NSScreen? {
+ let want = (UserDefaults.standard.object(forKey: "beaconDisplayID") as? Int) ?? 5
+ for s in NSScreen.screens {
+ if let n = s.deviceDescription[NSDeviceDescriptionKey("NSScreenNumber")] as? NSNumber,
+ n.intValue == want { return s }
+ }
+ return NSScreen.main ?? NSScreen.screens.first
+ }
+
+ // Pin to Steve's screen 1 (see beaconTargetScreen), top-center just under the menu bar.
private func positionBeacon(lineCount: Int) {
- guard let screen = NSScreen.screens.first else { return }
+ guard let screen = beaconTargetScreen() else { return }
let full = screen.frame
let visible = screen.visibleFrame
let width: CGFloat = 620
← 30a93d61 TK-11676: mechanically cap masterdot-* tk-new authority (ded
·
back to Ticket System
·
run-ticket: close finished ticket window via /cs + /compact 94b9bb86 →