Skip to main content

General

HopTab is a lightweight macOS app switcher that lets you pin specific apps and hop between them with a single shortcut (Option+Tab by default).Instead of cycling through all 10+ open apps like Cmd+Tab does, you pin the 2-3 apps you’re actually using right now and switch only between those.
Cmd+Tab cycles through all open apps. HopTab only cycles through the apps you’ve pinned to your current profile.This means:
  • Fewer apps to cycle through (typically 2-3 instead of 10+)
  • Faster switching (one or two presses instead of holding Tab 5 times)
  • Context-aware (you can have different pinned apps for different workflows)
Yes. HopTab is open source (MIT license) and completely free to use.
No. Cmd+Tab still works normally. HopTab uses Option+Tab by default (configurable) so it doesn’t conflict with the native app switcher.You can use both:
  • Cmd+Tab for switching to any open app
  • Option+Tab for switching between your pinned apps

Installation

HopTab is ad-hoc signed (not Apple notarized) because it uses low-level event taps that are incompatible with the App Sandbox.This is safe — HopTab is open source and you can verify the code yourself. To bypass the warning:
xattr -d com.apple.quarantine /Applications/HopTab.app
This removes the Gatekeeper quarantine flag and allows HopTab to launch normally.
You can use the pre-built binary from GitHub Releases. Building from source is only necessary if you want to modify the code or contribute to the project.
Not yet. Currently you need to download the .zip from GitHub Releases and drag it to /Applications.If you’d like a Homebrew cask, please open an issue or submit a PR.

Permissions

HopTab needs Accessibility permission to:
  • Detect global keyboard shortcuts (Option+Tab, Option+`)
  • Intercept and swallow the shortcut so it doesn’t reach other apps
  • Switch between your pinned apps
  • Raise windows to the front when activated
Without Accessibility permission, the global shortcuts won’t work and the event tap will fail to start.
No. The core functionality (global shortcuts and app switching) requires Accessibility permission. Without it, HopTab cannot function.
No. HopTab only listens for its configured shortcuts (Option+Tab and Option+` by default). All other keystrokes are passed through unchanged.You can verify this yourself — HopTab is open source and the event handling code is in HotkeyService.swift:115.

Usage

  1. Open Settings from the menu bar icon
  2. Go to Pinned Apps
  3. Click the app you want to pin (it will show a checkmark)
  4. Close Settings
Now press Option+Tab to switch between your pinned apps.
Not directly. The app picker in Settings only shows currently running apps.However, once you pin an app, it stays pinned even if you quit it. When you activate it from the switcher, HopTab will launch it if it’s not running.
  1. Open Settings from the menu bar icon
  2. Go to Shortcut
  3. Select a preset: Option+Tab (default), Control+Tab, or Option+`
  4. The shortcut changes immediately
Not yet. Currently you can only choose from three presets:
  • Option+Tab (default)
  • Control+Tab
  • Option+`
If you’d like custom shortcut support, please open an issue on GitHub.
Hold Shift while pressing the shortcut. For example:
  • Option+Tab cycles forward
  • Shift+Option+Tab cycles backward
Press Escape while the switcher is visible. This dismisses the overlay without activating any app.

Profiles

Profiles let you maintain different sets of pinned apps for different workflows.For example:
  • Coding profile: Xcode, Simulator, Terminal
  • Design profile: Figma, Safari, Preview
  • Writing profile: Notion, Safari, ChatGPT
You can switch between profiles with Option+` (or Control+` if your app switcher uses Option+`).
  1. Open Settings > Profiles
  2. Click Add
  3. Name your profile (e.g. “Coding”, “Design”, “Writing”)
  4. Switch to the new profile
  5. Go to Pinned Apps and pin the apps for this workflow
You can switch profiles in three ways:
  • Press Option+` (or Control+` if your app switcher uses Option+`)
  • Use the dropdown in the menu bar
  • Go to Settings > Profiles and click a profile
Yes. This is one of HopTab’s most powerful features.
  1. Swipe to the desktop you want to assign
  2. Open Settings > Profiles
  3. Click Assign to this desktop next to the profile you want
Now when you swipe to that desktop, the profile (and its pinned apps) automatically switches.Example:
  • Desktop 1 → “Coding” profile → Xcode + Simulator + Terminal
  • Desktop 2 → “Design” profile → Figma + Safari + Preview
Swipe to Desktop 1 and Option+Tab hops between Xcode, Simulator, and Terminal. Swipe to Desktop 2 and it hops between Figma, Safari, and Preview.
Space IDs are session-local — they can change after a reboot or when you add/remove desktops.HopTab uses the private CGSGetActiveSpace API to identify Spaces. This is the only way to detect desktop switches, but the IDs are not persistent.To fix:
  1. Swipe to each desktop
  2. Open Settings > Profiles
  3. Click Assign to this desktop
Reassigning takes 5 seconds and only needs to be done after reboots.

Technical

HopTab uses CGEvent.tapCreate(.defaultTap) to intercept global keyboard events. This requires raw event access, which is incompatible with the macOS App Sandbox.The App Sandbox would prevent the event tap from starting, making HopTab non-functional.
NSEvent.addGlobalMonitorForEvents can listen to global events, but it cannot swallow them. That means the shortcut would still reach other apps, and the native Cmd+Tab would still trigger alongside HopTab.CGEvent.tapCreate is the only API that lets you intercept and suppress keyboard events, which is critical for a custom app switcher.
HopTab uses the Accessibility API (AXUIElement with kAXRaiseAction) to force-raise windows.This is more aggressive than NSRunningApplication.activate() and works with stubborn apps like Simulator that don’t always respond to standard activation.See AppSwitcherService.swift:activateApp() for the implementation.
MacOS sometimes disables event taps if they take too long to process events (typically more than 1 second).When this happens, HopTab automatically re-enables the tap and resets the modifier state. If the switcher was active, it will be cancelled.This is handled in HotkeyService.swift:117.
Yes. HopTab is a universal binary and runs natively on both Intel and Apple Silicon Macs.
HopTab requires macOS 14.0 (Sonoma) or later.It may work on older versions, but it’s only tested and supported on macOS 14+.

Troubleshooting

This usually means HopTab doesn’t have Accessibility permission.
  1. Open System Settings > Privacy & Security > Accessibility
  2. Make sure HopTab is in the list and toggled on
  3. If it’s not there, click + and add HopTab from /Applications
See Troubleshooting for more details.
HopTab uses the Accessibility API to force-raise windows, but some apps (like system utilities) may not respond to these commands.Try:
  1. Make sure the app is actually running (not just in the Dock)
  2. Click the app in the switcher overlay instead of using the keyboard
  3. Activate it from the macOS menu bar first
If an app consistently doesn’t raise, please file an issue on GitHub with the app name.
  • Check the Troubleshooting guide
  • File an issue on GitHub Issues
  • Include your macOS version, HopTab version, and steps to reproduce the issue

Build docs developers (and LLMs) love