A second dock for macOS. Designed for multi-monitor setups where only the primary screen gets the native dock.
- Multi-screen support - Place the dock on any connected screen
- Auto-switch - Automatically moves to secondary screen when connected, falls back to primary when disconnected
- Dock position - Bottom or left side of screen
- Pinned apps - Pin/unpin apps, reorder via drag-and-drop, drag
.appfiles from Finder to pin - Running apps - Shows all running apps with active indicator dots
- Auto-hide - Dock hides when mouse moves away, reappears at screen edge
- Resizable icons - Adjustable icon size (24-64px)
- Native look - Vibrancy blur background matching macOS aesthetic
- Context menu - Right-click to pin/unpin, show in Finder, or quit apps
- Launch bounce - Spring animation when apps are launching
- Launch at login - Optional auto-start via SMAppService
- Menu bar app - Runs as a menu bar app, doesn't appear in its own dock
- macOS 14.0 (Sonoma) or later
- Xcode 16+ (for building from source)
Download the latest .dmg from Releases, open it, and drag DockPlus to Applications.
# Clone
git clone https://github.com/your-username/DockPlus.git
cd DockPlus
# Build and create DMG
chmod +x build.sh
./build.shThe DMG will be created at DockPlus.dmg in the project root.
Alternatively, open DockPlus.xcodeproj in Xcode and run (Cmd+R).
- Launch DockPlus - it appears as a menu bar icon
- The dock appears on your secondary screen by default (or primary if only one screen)
- Click the menu bar icon to access Preferences:
- Show dock on - Choose which screen to display the dock
- Position - Bottom or Left
- Icon size - Slider from 24px to 64px
- Auto-hide - Toggle automatic hiding
- Launch at login - Start automatically on login
Hybrid AppKit + SwiftUI:
- AppKit - Window management via
NSPanel(floating, non-activating, borderless) - SwiftUI - UI rendering via
NSHostingView - @Observable - State management with Swift Observation framework
AppDelegate
├── StatusBarController (menu bar icon)
├── DockPanelController
│ └── DockPanel (NSPanel)
│ └── NSHostingView
│ └── DockContainerView (SwiftUI)
│ ├── Pinned Apps
│ ├── Separator
│ └── Running Apps
├── AutoHideController
├── ScreenManager
└── PreferencesManager
MIT