How it works
The app switcher uses a release to activate pattern. When you press the shortcut, an overlay appears showing your pinned apps. Continue holding the modifier key and press the trigger key to cycle through apps. When you release the modifier, the selected app activates.Trigger the switcher
Press your configured shortcut (default:
Option + Tab) to show the switcher overlayCycle through apps
While holding the modifier key, press the trigger key again to move forward through your pinned apps
Keyboard controls
| Action | Shortcut |
|---|---|
| Show switcher & cycle forward | Option + Tab (default) |
| Cycle backward | Shift + Option + Tab |
| Activate selected app | Release Option |
| Cancel without switching | Escape |
Cycling direction
The app switcher supports bidirectional cycling:- Forward: Press the trigger key (e.g.,
Tab) while holding the modifier - Backward: Add
Shiftto reverse direction (e.g.,Shift + Option + Tab)
HotkeyService.swift:196-207:
App activation behavior
When you release the modifier key, HopTab activates the selected app using an aggressive activation strategy to ensure windows come to the front reliably.Activation sequence
HopTab performs three steps to activate an app (AppSwitcherService.swift:15-31):
Unhide the app
If the app is hidden, unhide it first. Hidden apps won’t come to the front otherwise.
Activate with ignore other apps
Use
activate(options: .activateIgnoringOtherApps) to bring the app forwardThe three-step activation process fixes issues with stubborn apps like Simulator, Terminal, and other utilities that don’t always raise their windows on macOS 14+.
Canceling the switcher
You can cancel the switcher without switching apps:- Press
Escapewhile the switcher is visible - The overlay closes and focus returns to your current app
HotkeyService.swift:226-239:
Recent app first (optional)
By default, the switcher starts at the second app in your list when you first trigger it. You can enable recent app first mode to automatically move the last-activated app to the front of the list. When enabled (AppState.swift:264-266):
Profiles
Create different app sets for different workflows
Keyboard shortcuts
Customize your app switcher shortcut