Show progress in your app's Dock icon
macOS 12+
Add https://github.com/sindresorhus/DockProgress
in the “Swift Package Manager” tab in Xcode.
Latest version: 5.0.0
import DockProgress
foo.onUpdate = { progress in
DockProgress.progress = progress
}
Specify a Progress
instance
import Foundation
import DockProgress
let progress = Progress(totalUnitCount: 1)
progress.becomeCurrent(withPendingUnitCount: 1)
DockProgress.progressInstance = progress
The given Progress
instance is weakly stored. It's up to you to retain it.
Includes built-in styles (bar, squircle, circle, badge, pie) plus support for custom styles using SwiftUI views or Canvas drawing.
See the example app in the Xcode project for demonstrations.
Create custom progress indicators with:
- SwiftUI View:
.customView { progress in /* return any View */ }
- Maximum flexibility with any SwiftUI view - SwiftUI Canvas:
.customCanvas { context, size, progress in /* draw on canvas */ }
- High-performance custom drawing - Legacy Core Graphics:
.custom(drawHandler: (_ rect: CGRect) -> Void)
- Direct Core Graphics drawing (backward compatibility)
import DockProgress
DockProgress.style = .bar
This is the default.
import DockProgress
DockProgress.style = .squircle(color: .white.opacity(0.5))
Fits perfectly around macOS app icons by default. Use the inset
parameter for adjustments if needed.
import DockProgress
DockProgress.style = .circle(radius: 55, color: .blue)
import DockProgress
DockProgress.style = .badge(color: .blue, badgeValue: { getDownloadCount() })
Large numbers are shortened: 1012
→ 1k
, 10000
→ 9k+
.
Note: badgeValue
is for counts (downloads, files, etc.), not percentages.
import DockProgress
DockProgress.style = .pie(color: .blue)
- Defaults - Swifty and modern UserDefaults
- KeyboardShortcuts - Add user-customizable global keyboard shortcuts to your macOS app
- LaunchAtLogin - Add "Launch at Login" functionality to your macOS app
- More…