The Dock,
finally organised.

BetterDock is a free, open-source Dock for your Mac, with iPhone-style folders, live status for your AI agents, widgets and themes. Apps in a folder never clutter it again, even while they run.

0:00 / 0:45
  • Native Swift No Electron, no web view
  • ~26 MB and no CPU at rest
  • Nothing to sign up for No account, no analytics
  • MIT licensed Read every line

Everything the Dock should have done.

Every tile below is how BetterDock behaves on your Mac.

Folders that open like a phone's.

Group your apps and the folder springs out of its tile. Apps inside never take a spot of their own, even while they run, so the Dock stays as short as you made it. Hover to peek, right-click for a new folder, drag an app onto one to file it.

26MB

Lighter than the tab you're reading this in.

Native Swift and SwiftUI. 0.0% CPU while hidden, about 0.1% on screen with widgets running.

See your agents at a glance.

A dot on the app your Claude Code or Codex agent runs in: amber while it works, green when it's done, red when it needs you. Unread badges sit in the same corner.

Widgets that live in the Dock.

Eleven of them, from Now Playing and your weekly Claude and Codex limits to weather, calendar and a focus timer. They only update while the Dock is on screen.

Four icon styles, three themes.

Default, Dark, Clear and Tinted icons on Glass, Wallpaper or Ember. Switch from any right-click menu.

Drag, drop, poof.

Reorder with a drag and the rest slide aside. Pull an app up and away to remove it, in a puff of smoke.

Try it in one line.

BetterDock builds on your Mac in about a minute. The first run installs nothing and leaves Apple's Dock alone.

Let your agent do it

Paste this into Claude Code, Codex or Cursor. It checks your Mac, builds BetterDock and asks before changing anything.

Read INSTALL.md
Install BetterDock by following https://github.com/Bilal-Bjo/betterdock/blob/main/INSTALL.md
  1. Try it

    Clone, build and run once.

    git clone https://github.com/Bilal-Bjo/betterdock && cd betterdock && ./install.sh --try
  2. Keep it

    Install it, start it at login and hide Apple's Dock.

    ./install.sh
  3. Add agent dots

    Hook up Claude Code and Codex. Your existing hooks stay.

    ./hooks/install-hooks.sh

Questions

Does it replace Apple's Dock?

It replaces what you see. Apple's Dock keeps running, hidden, so Cmd-Tab, Mission Control and app badges keep working exactly as before.

Is it safe?

You can check for yourself. BetterDock is open source under the MIT licence, so every line is on GitHub. It will ship as a signed, notarized download; until then you build it yourself from the source.

There is no account and no analytics. The only network calls are album art for Now Playing and the weather from Open-Meteo for the city in your Mac's time zone.

It uses one private macOS framework, IconServices, only to draw Apple's own dark, clear and tinted icon variants, and falls back to its own renderer if a macOS update changes it. It never modifies your apps, and uninstalling restores Apple's Dock exactly as it was.

How do I go back?

Run ./uninstall.sh. It stops BetterDock, removes the login item and brings Apple's Dock back exactly as it was, from the settings it saved before hiding it.

What does it need?

macOS 14 or later on Apple silicon, and Xcode's Command Line Tools to build it. For now it builds from source on your Mac in about a minute.

Will it slow my Mac down?

No. It uses no measurable CPU at rest: 0.0% while the Dock is hidden, and about 0.1% on screen with widgets and a glowing agent dot. It is native Swift and SwiftUI, about 26 MB of memory, with no dependencies.

Which widgets are there?

Eleven: Now Playing, AI Usage, Calendar, Weather, Clock, Focus Timer, System, Network, Storage, Battery and Agents. AI Usage shows your weekly Claude and Codex limits. Each widget is small, medium or large from its right-click menu, and they only update while the Dock is on screen.

How do the icon styles work?

Default, Dark, Clear and Tinted use the same icon variants macOS draws for each app, with seven tint colours. Pick a style, and the Glass, Wallpaper or Ember theme, from any right-click menu.

Is there a Trash?

Yes. It shows whether it is full or empty, opens with a click, deletes files you drop on it and empties from its right-click menu.

Which permissions does it ask for?

Accessibility, to read unread badges from Apple's Dock; permission to talk to Spotify or Music for Now Playing; and calendar access for the Calendar widget. All of them are optional.

How do the agent dots work?

A one-line script adds hooks to Claude Code and Codex and keeps the ones you have. Each hook writes the agent's state to a local file, and BetterDock puts the dot on the app the agent runs in. The same script feeds the AI Usage widget your weekly Claude limit; Codex limits are read from its local session logs.

Give your Dock folders.