Hush is a modern macOS app that automatically detects when you're screen sharing and enables Do Not Disturb mode to protect your privacy, similar to the popular Muzzle.app.
- π― Advanced Screen Sharing Detection - Multiple detection methods for reliable operation
- π Automatic Do Not Disturb - Toggles Focus modes automatically when screen sharing starts/stops
- π Background Operation - Runs quietly in your menu bar
- π Smart Notifications - Notifies you when protection is enabled/disabled
- βοΈ Customizable Settings - Configure Focus modes, detection intervals, and more
- π Usage Statistics - Track how often you share your screen and for how long
- π Auto Launch - Optional startup at login
- π Privacy Focused - Works locally on your Mac with no data collection
Hush uses multiple methods to reliably detect screen sharing:
- macOS built-in screen sharing status
- Active application detection for common screen sharing apps (Zoom, Teams, etc.)
- Window monitoring for screen sharing indicators
- Screen capture state detection
- macOS 12.0 or later (Monterey and above)
- Xcode 16.0 or later (for development)
- Swift 6.0
Hush has been fully migrated to Swift 6, taking advantage of its new features:
- Enhanced Safety: Full data-race safety with strict concurrency checking
- Performance Improvements: Optimized memory management and execution
- Modern Testing: Using Swift's new Testing framework for comprehensive test coverage
- Low-level Concurrency: Leveraging the Synchronization library for thread safety
For developers working with this codebase, we've prepared a detailed Swift 6 Migration Guide to help understand the changes and patterns used.
- Open
Hush.xcodeproj
in Xcode 16 or later - Build and run the project
For detailed development information, please see our Development Guide.
This project uses GitHub Actions for Continuous Integration and Deployment:
- CI Workflow: Runs tests, linting, and build validation on every pull request and push to main
- Release Workflow: Builds, signs, notarizes, and releases the app when a new version tag is pushed
Our release process is automated using GitHub Actions and the action-releaser GitHub Action:
- Update the version in your project files and
CHANGELOG.md
- Create and push a new git tag (e.g.,
git tag v1.0.0 && git push origin v1.0.0
) - The Release workflow automatically:
- Builds the macOS app
- Creates a signed and notarized DMG
- Creates a GitHub Release with the DMG attached
- Updates the Homebrew formula (if configured)
The action-releaser provides flexible configuration options for customizing the release process. See the .github/workflows/release.yml
file for details.
For more information on the release process, see the Release Guide.
- Hush runs in your menu bar
- When screen sharing is detected, Do Not Disturb mode is automatically enabled
- When screen sharing ends, Do Not Disturb mode is automatically disabled
- Click the menu bar icon to access settings, statistics, and more
Hush only detects screen sharing state locally on your Mac and doesn't collect or transmit any data.
swift test
You can also run the Xcode tests using:
cd Hush
xcodebuild test -project Hush.xcodeproj -scheme Hush
Please see our CHANGELOG.md for more information on what has changed recently.
Please see the Contributing Guide for details.
For help, discussion about best practices, or any other conversation that would benefit from being searchable:
"Software that is free, but hopes for a postcard." We love receiving postcards from around the world showing where Stacks is being used! We showcase them on our website too.
Our address: Stacks.js, 12665 Village Ln #2306, Playa Vista, CA 90094, United States π
We would like to extend our thanks to the following sponsors for funding Stacks development. If you are interested in becoming a sponsor, please reach out to us.
- Muzzle - Thanks for the inspiration!
- Chris Breuer
- All Contributors
The MIT License (MIT). Please see LICENSE for more information.
Made with π
Download the latest DMG from the Releases page.
brew install username/tap/hush