Hacker News new | ask | show | jobs
Show HN: Docktor – I put live window previews and widgets on the macOS 26 Dock (petercsauer.github.io)
3 points by petercsauer 47 days ago
There's dead space on both sides of the Dock. Nobody uses it. So I stuck widgets there. Music with synced lyrics (Spotify + Apple Music), calendar, weather, a Pomodoro timer, system stats. They sit in little glass panels and stay out of the way until you look down.

The other thing: hover a Dock icon and macOS shows you the app name. Thanks, I forgot what Safari was called. Docktor replaces that with live thumbnails of every window for that app. Click one, you're there. Same idea powers a Cmd+Tab replacement. Actual window previews instead of a beauty pageant of app icons.

I spent a lot of time matching the system look. Same blur radii, same animation timing. It should feel like part of the Dock, not something bolted on.

Native Swift. No Electron, no account, no telemetry.

First beta goes out next week. Looking for testers: https://petercsauer.github.io/docktor-releases/

Testers get lifetime access free. After that it'll be $10 one-time for 20 seats, 60-day trial. Share it with your whole family or team. No subscription, ever.

I'm also building a full Dock replacement for the Liquid Glass haters. Not shipped yet but it's next.

43s video: https://youtu.be/iI1zkkPG6hQ

1 comments

Good work on the polished design, it does seem to blend in with the native interface. Did you need to use any private APIs to position or capture the previews?

Personally I hide my dock to reclaim extra space. One app I wish existed is an endless scrollable desktop to plop windows on, in the same manner that Vision Pro does it but without the VR. However, I think that would be hard to impossible to implement with what the native window manager lets you do.

Thank you! I'd definitely be interested in giving something like that down the line, but I think that might be its own project haha. The one private API is _AXUIElementGetWindow to map AX elements to window IDs.