Lippershey is a native macOS status-bar magnifier. It opens floating windows that sample a highlighted source area with ScreenCaptureKit, scale the sample with nearest-neighbor rendering, and let the source area move independently from the window.
The app starts as a status-bar accessory app and opens one 4x window on launch. Closing all windows leaves the status-bar item running.
- macOS 14 or later.
- Screen Recording permission for screen sampling.
Lippershey is distributed through the hleinone/tap Homebrew tap:
brew tap hleinone/tap
brew install --cask lippersheyNew Windowopens another 4x window. You can also useControl-Command-Zfrom anywhere.Request Screen Recording Permissionappears when permission has not been granted.About Lippersheyopens the About window.Quit Lippersheyterminates the app.
- Drag the title bar to move a window.
- Resize a window to change the sampled source size at the current zoom level.
- Press
Control-Command-Zto open a new 4x window. - Hold
Optionwhile a window is focused to hide it and show the source rectangle. - While holding
Option, drag the highlighted source rectangle to move it. - While holding
Option, scroll vertically over either the window or the highlighted source rectangle to step through zoom levels: 2x, 3x, 4x, 6x, 8x, and 12x. - Release
Optionto exit source placement. - Press
Command-Qwhile a window is focused to close it.
Lippershey captures the area beneath each window's source rectangle and excludes its own floating UI from the sample where ScreenCaptureKit exposes those windows. If permission is missing, windows show Screen Recording permission required. Grant access in System Settings, then restart the app.
swift buildTo create the app bundle:
./scripts/build_app.sh
open .build/Lippershey.appTo create a release archive for GitHub Releases and Homebrew Cask:
./scripts/package_release.shTo create a Developer ID signed and notarized release archive:
CODESIGN_IDENTITY="Developer ID Application: Hannu Leinonen (R8LTCU48YM)" \
NOTARY_PROFILE="lippershey-notary" \
./scripts/package_release.shMaintainer release flow:
-
Ensure
CFBundleShortVersionStringinResources/Info.plistmatches the release version. -
Run
CODESIGN_IDENTITY="Developer ID Application: Hannu Leinonen (R8LTCU48YM)" NOTARY_PROFILE="lippershey-notary" ./scripts/package_release.shand confirm signing, notarization, and stapling pass locally. -
Commit and push the app changes.
-
Create and push a matching version tag:
git tag v0.1.0 git push origin v0.1.0
-
The release workflow builds the app, creates or updates the GitHub release, uploads
Lippershey-0.1.0.zip, and writes the Homebrew Caskversionandsha256values into the release notes. -
Update
Casks/lippershey.rbinhleinone/homebrew-tapwith those release note values. -
Test with
brew install --cask hleinone/tap/lippershey,brew uninstall --cask lippershey, andbrew audit --cask hleinone/tap/lippershey.
The tap update is manual for now. Automating it requires a token with write access to hleinone/homebrew-tap.
The release workflow requires these GitHub Actions secrets:
DEVELOPER_ID_CERTIFICATE_BASE64: base64-encoded.p12export of the Developer ID Application certificate and private key.DEVELOPER_ID_CERTIFICATE_PASSWORD: password for that.p12export.APPLE_NOTARY_KEY_BASE64: base64-encoded App Store Connect API key.p8file.APPLE_NOTARY_KEY_ID: App Store Connect API key ID.APPLE_NOTARY_ISSUER_ID: App Store Connect issuer ID.
Official homebrew/cask submission can happen later. Before submitting there, use Developer ID signing and notarization so the app passes Gatekeeper on supported macOS versions.
Lippershey is licensed under the MIT License. See LICENSE.