A flexible, native dock for macOS.
Create multiple docks, organize them into profiles, and make your workspace fit the way you work.
FreeDock is MIT-licensed and every feature remains free. If the project is useful to you, you can support its continued development and the creator’s education.
FreeDock is a free and open-source alternative for people who want more than one macOS Dock. Keep a compact launcher on each display, separate work and personal apps into profiles, pin files and folders beside applications, or build a focused dock for one project.
It is written in SwiftUI and AppKit, stores its configuration locally, and does not require an account or subscription.
Build FreeDock · Roadmap · Contribute · Support the project
- Create unlimited horizontal or vertical docks.
- Place docks on any connected display and restore their relative position after reconnecting.
- Resize, magnify, lock, snap, and auto-hide each dock independently.
- Customize blur, opacity, spacing, corners, shadows, indicators, and reusable appearance themes.
- Pin applications, documents, folders, separators, smart stacks, and Trash.
- Reorder items within a dock or drag them between docks; hold Option to copy.
- Browse live folder stacks in grid or list layouts.
- Add dynamic Recent Files and Downloads stacks.
- Drop Finder files onto compatible applications or Trash.
- Keep separate Work, Focus, Personal, or project-specific dock profiles.
- Switch profiles manually, with global shortcuts, when an app becomes active, or when a display connects.
- Use Quick Launch (
⌘⇧Spaceby default) to search the nearest dock entirely from the keyboard. - Export or import a complete configuration or one portable profile.
- See running indicators and optional recent/running applications.
- Preview and switch between an app’s windows across displays and Desktops.
- Use native context menus for application, document, folder, and Trash actions.
- Honor Reduce Motion, Increased Contrast, VoiceOver, and keyboard navigation.
- Optionally launch FreeDock when you sign in.
- Save configuration atomically to
~/.config/freedock.json. - Keep three rotating recovery generations and automatically recover from damaged configuration files.
- Undo destructive dock, profile, theme, history, and item actions during the current session.
- Run focused interaction regression tests for hide/reveal, resizing, reordering, Trash, and multi-display recovery.
Requirements:
- macOS 12 or later
- Xcode 16 or later with Swift 6
- Apple Silicon or Intel Mac
git clone https://github.com/Rubyherp/FreeDock.git
cd FreeDock
make runmake run builds a proper menu-bar .app bundle at build/FreeDock.app and opens it. Avoid swift run for normal use: it launches the executable without the bundle metadata FreeDock needs for menu-bar agent behavior.
Other useful commands:
make test # Run the complete test suite
make test-reliability # Run high-risk interaction scenarios
make bundle # Build without opening the app
make release # Build an optimized, ad-hoc-signed appFreeDock’s local builds are ad-hoc signed because the project does not currently use a paid Apple Developer account. macOS may warn that the developer cannot be verified, and Accessibility or Screen Recording permission may need to be granted again after rebuilding the executable.
This does not affect the source code or MIT license, but it is less convenient than a signed and notarized release. Review the source and build it locally if you prefer.
- Run FreeDock and open its grid icon in the menu bar.
- Choose New Dock → Horizontal or Vertical.
- Drag applications, files, or folders from Finder into the dock.
- Right-click dock items for additional actions and customization.
- Open Preferences to configure profiles, displays, appearance, shortcuts, automation, backups, and permissions.
- Use Lock Dock Positions after arranging your workspace.
The welcome guide appears on a fresh install and can be reopened from the FreeDock menu.
FreeDock works as a launcher without optional macOS permissions.
| Permission | Used for | Required? |
|---|---|---|
| Accessibility | Discovering and focusing application windows | Only for window switching |
| Screen Recording | Creating live window thumbnails | No; title and app-icon cards remain available |
Window discovery and focus happen locally. Thumbnails are held only in a small memory cache and are never written to disk. Recent Files records only documents successfully opened through FreeDock, stores at most 50 local paths, and can be cleared at any time.
FreeDock does not include analytics, advertising, online accounts, or feature paywalls.
Profiles, docks, appearance themes, shortcuts, automation rules, custom item artwork, and local recent history are stored in the human-readable file:
~/.config/freedock.json
Before replacing a valid configuration, FreeDock rotates these recovery files:
freedock.json.bak
freedock.json.bak.1
freedock.json.bak.2
If the primary file is damaged, FreeDock loads the newest valid recovery generation and repairs the primary file. A previous version can also be restored from Preferences → Backup & Restore.
FreeDock is actively developed. The core dock, profile, organization, window-switching, appearance, backup, and accessibility features are implemented and covered by automated tests. See the roadmap for planned work and areas where contributors can help.
Contributions, bug reports, design feedback, documentation improvements, and focused feature proposals are welcome. Start with CONTRIBUTING.md, follow the Code of Conduct, and use the issue templates when reporting a problem or suggesting a feature.
Please report security vulnerabilities privately using SECURITY.md.
FreeDock is available under the MIT License.






