A Swift library to display progress indicators directly in your macOS app's Dock icon.
DockProgress is a Swift library that allows macOS developers to display progress indicators directly in their application's Dock icon. It solves the problem of providing users with task progress feedback without cluttering the application's main interface. The library offers multiple visual styles and integrates seamlessly with both SwiftUI and traditional AppKit development.
macOS developers building applications that need to show progress for long-running tasks like downloads, file processing, or data synchronization.
Developers choose DockProgress because it provides a native macOS experience with minimal code, offers multiple built-in visual styles, and integrates easily with both SwiftUI and traditional Swift development patterns.
Show progress in your app's Dock icon
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Offers bar, squircle, circle, badge, and pie styles out of the box, providing visual variety without extra coding, as demonstrated in the README with GIF examples and code snippets.
Includes a .dockProgress() view modifier that simplifies adding progress indicators in SwiftUI apps, allowing easy binding to state variables for automatic updates.
Supports custom styles using SwiftUI views, Canvas drawing, or Core Graphics, enabling developers to create tailored progress indicators, as detailed in the custom style section of the README.
Binds to Foundation's Progress instances for automatic updates and resets progress when views disappear, reducing manual cleanup effort and potential errors.
Only supports macOS 12 and above, excluding applications that must run on older macOS versions, as stated in the requirements section of the README.
The Progress instance is weakly stored, requiring developers to manually retain it to avoid losing updates, which adds complexity and risk of bugs, as noted in the API usage.
The badge style is designed for counts and shortens large numbers (e.g., 1012 to 1k), but it cannot display percentages, restricting its use for certain progress scenarios, as mentioned in the README notes.