A macOS menu bar window switcher. Jump straight to the window you want, by name, in one click.
With a dozen projects open, finding the right window means hunting through look-alikes. Switch lists every app's windows by name: Word by document, VS Code by workspace. Click one and it fills the screen while the rest of that app's windows minimize. Shift-click several and they line up side by side.
Click the menu bar icon, pick an app on the left, then pick a window on the right.
- Click — show that window alone, filling the screen
- Shift+click — pick several, numbered in click order. Release Shift and they line up side by side, left to right
- Delete — quit the selected app, the same way its Quit menu does. If the app asks about unsaved work, you still get to answer
- Esc — close the panel
- Next window shortcut (
Command+`unless changed in System Settings) — opens this panel, whatever the number of windows on show. Switch takes the shortcut over from macOS, and it keeps working while another app has a password field open. Press again to move down the list, add Shift to move back up, use the up and down arrows, or type a letter or digit to go to the next window starting with it, and release to show that window
Only the app you picked changes. A minimized window you pick comes back, and that app's other windows minimize. Filling the screen and minimizing can each be turned off in Settings.
Most apps are listed with their window titles, for the current Space and minimized windows.
Working on many projects at once? Switch lists VS Code windows by workspace name, even untitled workspaces whose window titles can't tell them apart. Windows on other Spaces are listed too, and Switch takes you straight there.
Windows without a workspace, such as an empty window, appear under a separate Other Windows section.
Switch shows the window you pick and minimizes the rest. From there, press the next window shortcut (Command+` by default) to switch to a minimized window from the keyboard.
Out of all your windows, pin the few you are working on now. The next window shortcut (Command+` by default) then goes round those alone, however many other windows the app has, so one key takes you back and forth between them. To pin a window, click the pin at the left of its row in the panel. Pin two or more windows of the same app.
In the panel, an orange line joins the pinned windows and points back to the first, so you can see the round. The arrow keys and letters still reach every window.
Natively supports pterm, a terminal app that manages multiple terminals in a single window.
Get pterm: https://github.com/pontasan/pterm
Right-click the menu bar icon and choose Settings, or click the gear at the bottom right of the panel. Changes apply right away and stay after a restart.
| Right-click the menu bar icon | Gear at the bottom right of the panel |
|---|---|
![]() |
![]() |
| Setting | Default | What it does | Useful when |
|---|---|---|---|
Arrange Windows Automatically |
on | Fits the chosen windows to the screen, side by side if several | Turn off on a wide display or the Apple Vision Pro virtual display, to keep each window's size and place |
Minimize Other Windows |
on | Sends the app's other windows to the Dock | Turn off to keep other windows in view |
Show Panel in Center of Display |
off | Opens the panel in the center of the display instead of below the menu bar icon | Turn on when the icon is far from where you work, as on a wide display |
Arrange Windows Automatically |
|
Minimize Other Windows |
|
Show Panel in Center of Display |
- See what's on show — every window that is not minimized stands out in color, including windows side by side
- Turn Switch off for an app — flip the switch at the left of an app's row, and Switch leaves that app alone. While it is in front, the next window shortcut does what macOS does, and the panel does not switch, arrange or minimize its windows. Apps turned off move to the bottom of the list with their icons in grey. Every app is on to begin with

- Pin what you use — pinned windows stay at the top of their app's list, and the pins survive a restart
- Opens instantly — the panel shows right away and updates as apps answer, so a busy app can't hold it up
- Fits its contents — the panel is as tall as the list needs
- Liquid Glass — the panel uses the standard macOS glass
- Launch at login — on from the first launch. Turn it off with
Launch at Loginin the right-click menu
Zero third-party dependencies, and nothing that connects to a network. Switch does not sandbox, because macOS does not let a sandboxed app control other apps' windows, so it is distributed outside the App Store. Releases are code signed and notarized by Apple.
Switch needs the Accessibility permission to read and arrange windows, and asks for it on launch. It starts working as soon as you allow it, without a restart.
One private API is used: _AXUIElementGetWindow, which ties an Accessibility window to its window number.
- macOS 26 (Tahoe) or later
- Apple silicon
- Download
switch-darwin-arm64.zipfrom the latest release. - Double-click the zip to unzip it.
- Drag
Switch.appinto yourApplicationsfolder. - Open
Switch.app. It has no Dock icon or window: look for its icon in the menu bar.
Switch needs the Accessibility permission to read and arrange windows. macOS asks for it on the first launch: open System Settings from that dialog, then turn on Switch in the list.
To get there yourself on macOS 27:
- Open the Apple menu and choose System Settings.
- Click Privacy & Security in the sidebar.
- Click Device Control and Data Access.
- Turn on Switch in the list.
On macOS 26:
- Open the Apple menu and choose System Settings.
- Click Privacy & Security in the sidebar.
- Click Accessibility.
- Turn on Switch in the list.
If you dismissed the dialog, click the menu bar icon and use Open Settings in the panel to bring it back.
make test # unit testsBuilding the app needs a signing identity, because macOS ties the Accessibility permission to it. Put yours in local.mk, which git ignores:
IDENTITY = Developer ID Application: Your Name (TEAMID)Then use make run to build and launch a debug build, or make build for a release build.





