
Description
With an external monitor above and a MacBook below, one nudge of the pointer toward the bottom edge and the Dock jumps to the other screen, so you drag it back every time. macOS has no setting that says which display owns the Dock, and DockPin fills that gap with a small menu bar app: pick a target display and the Dock stays on it.
The method is plain. With Accessibility permission it watches the pointer and puts a soft gate along the edge you chose, so macOS treats that edge as the Dock edge while you can still move to the other screen normally. It does not touch system files, inject code into the Dock or use private APIs, and quitting DockPin puts the Dock back at the system default. The app makes no network requests and collects nothing. It is open source, written in Swift, and needs macOS 13 or later.
Choose the target display: select which screen owns the Dock from the menu bar, with bottom, left or right edge, including stacked vertical layouts
Soft gate: the pointer pauses briefly at the target edge before passing to another display, and holding Option while crossing skips the gate at once
Edge range and delay: both the length of the watched edge and the pause are adjustable, with 40% and 0.20 s suggested for an upper external display over a built-in one
Recovers after display changes: remembers the target, uses another screen while it is unplugged, and reapplies itself when it returns or after the Mac wakes
Running apps bar on other displays: optional: pause near the bottom inside edge of another screen to reveal a compact bar of running apps, click one to switch, and it takes no desktop space
Launch at login and setup guide: starts at login, and a first run guide walks through the Gatekeeper prompt and Accessibility permission
English and Chinese UI: the menu is available in English and Simplified Chinese
The method is plain. With Accessibility permission it watches the pointer and puts a soft gate along the edge you chose, so macOS treats that edge as the Dock edge while you can still move to the other screen normally. It does not touch system files, inject code into the Dock or use private APIs, and quitting DockPin puts the Dock back at the system default. The app makes no network requests and collects nothing. It is open source, written in Swift, and needs macOS 13 or later.
Features
Choose the target display: select which screen owns the Dock from the menu bar, with bottom, left or right edge, including stacked vertical layouts
Soft gate: the pointer pauses briefly at the target edge before passing to another display, and holding Option while crossing skips the gate at once
Edge range and delay: both the length of the watched edge and the pause are adjustable, with 40% and 0.20 s suggested for an upper external display over a built-in one
Recovers after display changes: remembers the target, uses another screen while it is unplugged, and reapplies itself when it returns or after the Mac wakes
Running apps bar on other displays: optional: pause near the bottom inside edge of another screen to reveal a compact bar of running apps, click one to switch, and it takes no desktop space
Launch at login and setup guide: starts at login, and a first run guide walks through the Gatekeeper prompt and Accessibility permission
English and Chinese UI: the menu is available in English and Simplified Chinese

