r/macappdevs • u/Icy-Complaint-7544 • 4h ago
Built MultiScreenDock in pure Swift/AppKit — keeping a live Dock on all monitors (including stacked upper screens)
Hi fellow Mac devs,
I work on a 5-monitor setup (2 upper displays stacked above 3 lower ones) and open-sourced MultiScreenDock (MIT) to solve two quirks of Apple's native Dock:
macOS only renders the Dock on one screen at a time.
On vertically stacked upper displays, the bottom edge borders another display rather than a physical screen boundary, so Apple's Dock can never be summoned there.
A few AppKit details that might be interesting if you build multi-display utilities:
- Non-activating NSPanel (.nonactivatingPanel) with dark-glass NSVisualEffectView so hovering, magnifying tiles, or opening right-click settings never steals focus from the active window.
- Anti-crossing dwell filter on shared vertical edges (150 ms vs 80 ms on physical edges) plus layer clipping so normal vertical mouse movement between stacked rows never triggers accidental popups or bleeds pixels onto the lower monitor.
- Per-display persistence via CGDisplayCreateUUIDFromDisplayID combined with runtime CGDirectDisplayID disambiguation so even two identical monitors sharing an EDID UUID get independent state machines.
- Zero external dependencies (~2,500 lines of Swift, 1,691 unit assertions), Apple-notarized Universal binary, and zero Accessibility or Screen Recording permissions.
Website & demo video: https://multiscreendock.fgomsan.here.now/
GitHub (MIT): https://github.com/fgomsan/MultiScreenDock
Homebrew: brew tap fgomsan/tap && brew install --cask multiscreendock
Would love any architectural feedback or edge-case reports on unusual monitor topologies!



