Requirements
- Xcode 15.0 or later
- macOS 14.0 (Sonoma) or later
- Git for cloning the repository
HopTab uses SwiftUI APIs introduced in macOS 14, so earlier versions are not supported.
Clone the repository
Open in Xcode
Build configuration
Entitlements
HopTab requires specific entitlements to function:Info.plist keys
TheInfo.plist includes:
Build and run
Debug build
Press Cmd+R in Xcode to build and run in debug mode. On first launch:- macOS will prompt for Accessibility permission
- Click Open System Settings
- Enable HopTab in Privacy & Security > Accessibility
- Return to HopTab and it will start automatically
Release build
To build a release version:- In Xcode, select Product > Scheme > Edit Scheme…
- Under Run, change Build Configuration to Release
- Press Cmd+B to build
Release builds are ad-hoc signed by default. To notarize for distribution, you need an Apple Developer account and signing certificate.
Code signing
Ad-hoc signing (default)
Xcode automatically ad-hoc signs the app for local development. This is sufficient for running on your own machine.Developer ID signing (for distribution)
To distribute the app, you need a Developer ID Application certificate:- In Xcode, select the HopTab target
- Go to Signing & Capabilities
- Set Team to your Apple Developer team
- Change Signing Certificate to Developer ID Application
- Build the app
Notarization (optional)
Notarization submits your app to Apple for malware scanning:Running without Accessibility permission
If you skip the Accessibility permission, the app will:- Launch successfully
- Show a warning in the menu bar: “Accessibility permission required”
- Not respond to keyboard shortcuts
HopTab/Services/HotkeyService.swift
CI/CD builds
The repository includes GitHub Actions workflows:Build workflow
.github/workflows/build.yml - Runs on every PR to verify the code compiles:
Release workflow
.github/workflows/release.yml - Triggered by version tags (e.g., v1.0.0):
- Extracts version from tag
- Updates
MARKETING_VERSIONandCURRENT_PROJECT_VERSIONin Xcode project - Builds in Release configuration
- Packages
HopTab.appinto a.zip - Creates a GitHub Release with the
.zipattached
The release workflow uses ad-hoc signing. Users must run
xattr -d com.apple.quarantine HopTab.app after download to bypass Gatekeeper.Common build issues
”Code signing error”
Problem: Xcode can’t find a valid signing identity. Solution: In Signing & Capabilities, set Signing Certificate to Sign to Run Locally for local development.”Deployment target mismatch”
Problem: The deployment target is higher than your macOS version. Solution: The project requires macOS 14.0+. Upgrade macOS or change the deployment target in Build Settings > Deployment > macOS Deployment Target (may cause runtime errors if using macOS 14 APIs).”Event tap creation failed”
Problem: Accessibility permission not granted. Solution: Go to System Settings > Privacy & Security > Accessibility and enable HopTab. You may need to quit and relaunch the app.”App crashes on launch”
Problem: Missing system frameworks or corrupted build. Solution:Debugging tips
Console logging
HopTab usesNSLog for debug output. To view logs:
- Open Console.app
- Filter by process:
HopTab - Press the shortcut and watch for log messages
Xcode debugger
Set breakpoints in:HotkeyService.swift:handleEvent- Hotkey detection logicAppState.swift:showSwitcher- Overlay displayAppSwitcherService.swift:activate- App activation
Event tap debugging
If shortcuts aren’t working, check:isRunning == false, the event tap creation failed (likely missing Accessibility permission).