⌥ open source · macOS 14+ · public APIs only

⌥ option⇥ tab
for the windows Cmd+` can't reach

macOS's built-in window switcher stops at the edge of the current Space. OptTab switches between windows of the current app — across Spaces, fullscreen, and minimized — with a thumbnail HUD that feels native.

Space 1 Space 2 Space 3 · fullscreen
⤷ switched — even across Spaces

this is a live demo — press ⇥ tab to cycle, ⏎ to switch

★ Star on GitHub Install in 30 seconds
The problem

Your windows live in different Spaces.
Your switcher doesn't know that.

✕ Cmd+`

Cycles windows inside the current Space only. That second browser window on another desktop? Fullscreen terminal? Minimized editor? Invisible. You end up in Mission Control, hunting with the trackpad.

✓ OptTab

One keystroke reaches every real window of the active app — other Spaces, fullscreen, minimized. macOS jumps to the right Space for you. App-to-app switching stays where it belongs: Cmd+Tab.

Features

Small tool. Sharp edges filed off.

🪐

Crosses Spaces & fullscreen

Reaches windows on other desktops and fullscreen Spaces. For apps whose windows hide from the Accessibility API (hi, Chromium), it drives the app's own Window menu instead.

🖼️

Thumbnail HUD

Live window previews via ScreenCaptureKit, centered on the display your cursor is on. Never steals focus — the panel is non-activating by design.

🎯

Active app only

Deliberately scoped: OptTab cycles windows of the app you're in. ⌘Tab keeps switching apps. Two keystrokes, two clean jobs.

🧠

Knows tabs aren't windows

Native-tab apps (Ghostty, Terminal…) leak background tabs into the window list. OptTab filters out anything you can't actually switch to.

🔓

Public APIs only

No private CGS calls, no injected code. CGEventTap + ScreenCaptureKit + Accessibility. Survives macOS updates like a good citizen.

🕯️

Degrades gracefully

No screen-recording permission? It still works — app-icon cards instead of thumbnails. Accessibility granted late? It picks itself up automatically.

Under the hood

Four public APIs in a trench coat

Everything is boring, documented macOS API — arranged in a fallback chain so the switch lands even when an app hides its windows.

CGEventTap ──▶ capture ⌥⇥ before the app sees it ──▶ swallow · cycle · commit on ⌥ release
ScreenCaptureKit ──▶ enumerate windows (onScreenWindowsOnly: false → every Space) + thumbnails
Accessibility ──▶ match CG ↔ AX windows ──▶ AXRaise the winner
└─ no AX handle? (other-Space Chromium…) ──▶ press its Window-menu item — jumps Spaces via public AX
Install

Brew, start, switch.

ghostty — zsh
$ brew install konaito/tap/opttab
$ brew services start opttab   # launchd service — no menu bar icon

# or build from source:
$ git clone https://github.com/konaito/opttab.git && cd opttab && ./Scripts/install-local.sh
⚠️ First start asks for Accessibility (required — the hotkey). Screen Recording is optional (icon cards instead of thumbnails otherwise). brew services manages start, stop, and launch-at-login — OptTab runs with no menu bar icon.
Keys

Nothing to memorize

⌥ + ⇥open the HUD / cycle forward
⌥ + ⇧ + ⇥cycle backward
release ⌥switch to the selected window
esccancel
quick taptoggle to the previous window — like ⌘⇥ muscle memory
FAQ

Questions people actually ask

Why doesn't ⌘` show all my windows on macOS?

macOS's built-in "Move focus to next window" shortcut only cycles windows inside the current Space. Windows on other Spaces, fullscreen windows, and minimized windows are skipped entirely — that's an OS behavior, not a setting you can change. OptTab exists precisely to reach them.

How is OptTab different from AltTab?

AltTab is great — it recreates Windows-style Alt-Tab across all apps. OptTab is deliberately smaller: it replaces ⌘` (same-app switching), keeps ⌘⇥ for apps, and uses only public macOS APIs — no private CGS calls to break on OS updates.

Does it work with fullscreen apps and Spaces?

Yes. Pick a window on another Space or in fullscreen and macOS jumps there automatically. For apps whose windows hide from the Accessibility API — Chromium browsers are the big one — OptTab presses the app's own Window-menu item, which crosses Spaces reliably.

Do I need to grant Screen Recording?

Only for thumbnails. Decline it and OptTab still works with app-icon cards. Accessibility permission is required — that's what makes a global ⌥⇥ hotkey possible.

Which macOS versions are supported?

macOS 14 Sonoma and later (Apple Silicon and Intel). Built with Swift and ScreenCaptureKit; the release build is notarized by Apple.