# [3.0.0](https://github.com/lwouis/alt-tab-macos/compare/v2.3.4...v3.0.0) (2020-03-10) ### Bug Fixes * a title change often means the content has change ([b8d6bc9](https://github.com/lwouis/alt-tab-macos/commit/b8d6bc9)) * add rough downscaling when there are many windows (closes [#69](https://github.com/lwouis/alt-tab-macos/issues/69)) ([ced5ee6](https://github.com/lwouis/alt-tab-macos/commit/ced5ee6)) * added releases link and aligned layout left on tab 3 ([6bb73dc](https://github.com/lwouis/alt-tab-macos/commit/6bb73dc)) * also codesign debug builds ([a5f9911](https://github.com/lwouis/alt-tab-macos/commit/a5f9911)) * app launched while in fullscreen shows first window ([c5cbcdb](https://github.com/lwouis/alt-tab-macos/commit/c5cbcdb)), closes [/github.com/lwouis/alt-tab-macos/pull/114#issuecomment-576384795](https://github.com//github.com/lwouis/alt-tab-macos/pull/114/issues/issuecomment-576384795) * auto-update preferences sync with os from launch ([b3fb222](https://github.com/lwouis/alt-tab-macos/commit/b3fb222)) * avoid rendering if app is not used ([fdddb0f](https://github.com/lwouis/alt-tab-macos/commit/fdddb0f)) * better float rounding = sharper cell contents ([9a96e49](https://github.com/lwouis/alt-tab-macos/commit/9a96e49)) * better focus/order for preferences (closes [#80](https://github.com/lwouis/alt-tab-macos/issues/80)) ([4a8bdeb](https://github.com/lwouis/alt-tab-macos/commit/4a8bdeb)) * better textareas ([efc9bd3](https://github.com/lwouis/alt-tab-macos/commit/efc9bd3)) * bring back the window delay that regressed with v2 ([bb95e55](https://github.com/lwouis/alt-tab-macos/commit/bb95e55)) * compare correctly since pid can go away when an app dies ([4ded030](https://github.com/lwouis/alt-tab-macos/commit/4ded030)) * compiler warnings ([1faa74c](https://github.com/lwouis/alt-tab-macos/commit/1faa74c)) * cpu and memory leaks (see discussion in [#117](https://github.com/lwouis/alt-tab-macos/issues/117)) ([52626aa](https://github.com/lwouis/alt-tab-macos/commit/52626aa)) * dock being shown was blocking alt-tab ([2826a1b](https://github.com/lwouis/alt-tab-macos/commit/2826a1b)) * don't show floating windows + efficiencies ([3f8e3ea](https://github.com/lwouis/alt-tab-macos/commit/3f8e3ea)) * don't show ui on fast trigger ([f8e1b00](https://github.com/lwouis/alt-tab-macos/commit/f8e1b00)) * don't trigger ui refreshes if the app is not active ([b9a0152](https://github.com/lwouis/alt-tab-macos/commit/b9a0152)) * don't upscale thumbnails of small windows ([0bc7472](https://github.com/lwouis/alt-tab-macos/commit/0bc7472)) * feedback token injected during ci ([effdc5f](https://github.com/lwouis/alt-tab-macos/commit/effdc5f)) * getting sparkle ready for release ([9f1f522](https://github.com/lwouis/alt-tab-macos/commit/9f1f522)) * handle on-all-spaces windows better ([4abe9f3](https://github.com/lwouis/alt-tab-macos/commit/4abe9f3)) * ignore build folder ([a2bb19f](https://github.com/lwouis/alt-tab-macos/commit/a2bb19f)) * ignore trigger shortcuts if mission control is active ([b03b0aa](https://github.com/lwouis/alt-tab-macos/commit/b03b0aa)) * initial discovery when single space was glitching the os ([3cd4b6d](https://github.com/lwouis/alt-tab-macos/commit/3cd4b6d)) * keyboard shortcuts didn't work without a menu ([cf92dc1](https://github.com/lwouis/alt-tab-macos/commit/cf92dc1)) * layout is now correct; also removed layout preferences for now ([a1b5266](https://github.com/lwouis/alt-tab-macos/commit/a1b5266)) * layout regression introduced by eed0353 ([bdc41be](https://github.com/lwouis/alt-tab-macos/commit/bdc41be)) * layout was incorrect resulting in thumbnails clipping ([fd906f4](https://github.com/lwouis/alt-tab-macos/commit/fd906f4)) * letsmove was not active on release builds ([6ac0658](https://github.com/lwouis/alt-tab-macos/commit/6ac0658)) * list temporary AXDialog windows like activity monitor ([51a8838](https://github.com/lwouis/alt-tab-macos/commit/51a8838)) * more robust screen-recording permission check ([ce574a2](https://github.com/lwouis/alt-tab-macos/commit/ce574a2)) * notarization issues ([d125dd3](https://github.com/lwouis/alt-tab-macos/commit/d125dd3)) * observer leak would throw and crash the app sometimes ([9ca28eb](https://github.com/lwouis/alt-tab-macos/commit/9ca28eb)) * only test permissions on the correct os versions ([4612e37](https://github.com/lwouis/alt-tab-macos/commit/4612e37)) * open alt-tab during space transitions (closes [#92](https://github.com/lwouis/alt-tab-macos/issues/92)) ([141562d](https://github.com/lwouis/alt-tab-macos/commit/141562d)) * prevent visual flickering (closes [#115](https://github.com/lwouis/alt-tab-macos/issues/115)) ([9a8c83e](https://github.com/lwouis/alt-tab-macos/commit/9a8c83e)) * quitting apps was not properly removing apps from the list ([10b2c71](https://github.com/lwouis/alt-tab-macos/commit/10b2c71)) * quitting multiple apps would refresh the ui multiple times ([bfc2700](https://github.com/lwouis/alt-tab-macos/commit/bfc2700)) * regression on collectionviewitem titles (not showing) ([8cb6d86](https://github.com/lwouis/alt-tab-macos/commit/8cb6d86)) * remove debug colors ([e588d55](https://github.com/lwouis/alt-tab-macos/commit/e588d55)) * remove unnecessary/wrong layout code ([9e719e6](https://github.com/lwouis/alt-tab-macos/commit/9e719e6)) * sharper images on non-retina displays ([1bb4d2a](https://github.com/lwouis/alt-tab-macos/commit/1bb4d2a)) * smaller payload for the icons ([bddb6fa](https://github.com/lwouis/alt-tab-macos/commit/bddb6fa)) * some apps have messy launch behavior ([7eb216d](https://github.com/lwouis/alt-tab-macos/commit/7eb216d)), closes [/github.com/lwouis/alt-tab-macos/issues/117#issuecomment-583868046](https://github.com//github.com/lwouis/alt-tab-macos/issues/117/issues/issuecomment-583868046) * some apps should retry observing until it works ([0c731f4](https://github.com/lwouis/alt-tab-macos/commit/0c731f4)) * using floor() everywhere to avoid blurry rendering ([2a36196](https://github.com/lwouis/alt-tab-macos/commit/2a36196)) ### Code Refactoring * complete rework of the internals ([547311e](https://github.com/lwouis/alt-tab-macos/commit/547311e)), closes [#93](https://github.com/lwouis/alt-tab-macos/issues/93) [#24](https://github.com/lwouis/alt-tab-macos/issues/24) [#117](https://github.com/lwouis/alt-tab-macos/issues/117) [/github.com/lwouis/alt-tab-macos/issues/45#issuecomment-571898826](https://github.com//github.com/lwouis/alt-tab-macos/issues/45/issues/issuecomment-571898826) ### Features * add an app icon and menubar icon (closes [#38](https://github.com/lwouis/alt-tab-macos/issues/38)) ([a345dae](https://github.com/lwouis/alt-tab-macos/commit/a345dae)) * add back the preferences for the new layout algo ([d52eb6d](https://github.com/lwouis/alt-tab-macos/commit/d52eb6d)) * add debug profile to feedback message ([a14f965](https://github.com/lwouis/alt-tab-macos/commit/a14f965)) * add feedback button on about window ([4046136](https://github.com/lwouis/alt-tab-macos/commit/4046136)) * add in-app feedback form (closes [#145](https://github.com/lwouis/alt-tab-macos/issues/145)) ([725a030](https://github.com/lwouis/alt-tab-macos/commit/725a030)) * add licence to about page ([cb66b79](https://github.com/lwouis/alt-tab-macos/commit/cb66b79)) * add preference to start at login (closes [#159](https://github.com/lwouis/alt-tab-macos/issues/159)) ([982fe6c](https://github.com/lwouis/alt-tab-macos/commit/982fe6c)) * adding cocoapods and letsmove/sparkle ([606bae7](https://github.com/lwouis/alt-tab-macos/commit/606bae7)) * better packing; tall thumbnails are 1/2 the width of wide ones ([e34e3b1](https://github.com/lwouis/alt-tab-macos/commit/e34e3b1)) * bump major version ([3c3b18c](https://github.com/lwouis/alt-tab-macos/commit/3c3b18c)) * cleaner layout and explanation text ([fd3e768](https://github.com/lwouis/alt-tab-macos/commit/fd3e768)) * debug build has code-signing to preserve permissions ([34a32f3](https://github.com/lwouis/alt-tab-macos/commit/34a32f3)) * divide preferences by topic (closes [#130](https://github.com/lwouis/alt-tab-macos/issues/130)) ([291f872](https://github.com/lwouis/alt-tab-macos/commit/291f872)) * drag-and-drop files on the ui (closes [#74](https://github.com/lwouis/alt-tab-macos/issues/74)) ([e1e3633](https://github.com/lwouis/alt-tab-macos/commit/e1e3633)) * german and spanish localization ([6c440a7](https://github.com/lwouis/alt-tab-macos/commit/6c440a7)) * improved translations ([debd3ae](https://github.com/lwouis/alt-tab-macos/commit/debd3ae)) * integrate sparkle for auto-updates (closes [#131](https://github.com/lwouis/alt-tab-macos/issues/131)) ([069382c](https://github.com/lwouis/alt-tab-macos/commit/069382c)) * localization (closes [#134](https://github.com/lwouis/alt-tab-macos/issues/134)) ([36e4bb0](https://github.com/lwouis/alt-tab-macos/commit/36e4bb0)) * make system calls more parallel (closes [#160](https://github.com/lwouis/alt-tab-macos/issues/160)) ([a29b39f](https://github.com/lwouis/alt-tab-macos/commit/a29b39f)) * migrate to standard os-backed preferences (closes [#161](https://github.com/lwouis/alt-tab-macos/issues/161)) ([e28c43f](https://github.com/lwouis/alt-tab-macos/commit/e28c43f)) * more appealing presentation + minor refac ([67f291d](https://github.com/lwouis/alt-tab-macos/commit/67f291d)) * nicer layout for about preferences ([03a5f77](https://github.com/lwouis/alt-tab-macos/commit/03a5f77)) * quit button is clearer with explicit mention of the name ([6b6d748](https://github.com/lwouis/alt-tab-macos/commit/6b6d748)) * replace default copyright with correct licence ([60b49ea](https://github.com/lwouis/alt-tab-macos/commit/60b49ea)) * separating the quit button as it is a special case ([9fa0c06](https://github.com/lwouis/alt-tab-macos/commit/9fa0c06)) * slightly increase contrast (mitigates [#82](https://github.com/lwouis/alt-tab-macos/issues/82)) ([291770e](https://github.com/lwouis/alt-tab-macos/commit/291770e)) * support macos "sudden termination" ([671fdab](https://github.com/lwouis/alt-tab-macos/commit/671fdab)), closes [/developer.apple.com/documentation/foundation/processinfo#1651129](https://github.com//developer.apple.com/documentation/foundation/processinfo/issues/1651129) ### BREAKING CHANGES * bump major version * Instead of asking the OS about the state of the whole system on trigger (what we do today; hard to do fast), or asking the state of the whole system on a timer (what HyperSwitch does today; inaccurate) - instead of one of 2 approaches, v3 observes the Accessibility events such as "an app was launched", "a window was closed". This means we build a cache as we receive these events in the background, and when the user trigger the app, we can show accurate state of the windows instantly. Of course there is no free lunch, so this approach has its own issues. However from my work on it from the past week, I'm very optimistic! The thing I'm the most excited about actually is not the perf (because on my machine even v2 is instant; I have a recent macbook and no 4k displays), but the fact that we will finally have the thumbnails in order of recently-used to least-recently-used, instead of the order of their stack (z-index) on the desktop. It's a big difference! There are many more limitations that are no longer applying also with this approach.
alt-tab-macos
alt-tab-macos brings the power of Windows' "alt-tab" window switcher to macOS.
Installation
Download the latest release and extract it in your Applications folder. If macOS refuses to run the application because it's from an unidentified developer, right-click the application, choose Open then click Open in the prompt that appears.
Compatibility
From macOS 10.12 to 10.15
Localization
The app is currently available in: English, Français, Deutsch, Español, 日本語
Contribute your own language easily!
Usage
- Press
⌥ option+⇥ tabto shows the thumbnails. - Hold
⌥ optionand press⇥ tabto select the next thumbnail. - Hold
⌥ optionand press⇧ shift+⇥ tabto select the previous thumbnail. - Release
⌥ optionto switch focus to the window.
Extra:
- You hover and click with the
🖱️ mouse. - You cycle with
⇦ left arrowand⇨ right arrow. - You can cancel with
⎋ escape.
Configuration
- Change the shortcut key, switch to a Windows theme and more, using the Preferences window.
- If you like scriptable/portable configuration, you can edit
~/Library/Preferences/alt-tab-macos.json.
Contributing
- CONTRIBUTING.md gives an overview of the project for newcomers who want to contribute.
- Come discuss with us on the Discord server.
- Suggest an enhancement or discuss an issue on github.
Alternatives
Before building my own app, I looked around at similar apps. However, none was completely satisfactory so I rolled my own. Also, the almost-good-enough apps are not open-source.
| Alternative | Differences |
|---|---|
| HyperSwitch and HyperDock | Closed-source. Thumbnails are too small. App icon is on top of the thumbnail |
| WindowSwitcher | 7$. Thumbnails are small and blurry. App icon is on top of the thumbnail |
| Switch | Open Source. Thumbnails are small. Very little customization. Latest release is from 2016 |
| Witch and Context | 10-15$. Closed-source. Focus on text. No thumbnails |
| Built-in MissionControl | No keyboard support |
⌘ command + ⇥ tab |
Only shows apps, not windows (note: can press down to see window of selected app) |
⌘ command + ` |
Cycles through tabs and windows, but only of the same app. Only cycling, no direct access |
Building the project locally
This project has minimal dependency on Xcode-only features (e.g. InterfaceBuilder, Playgrounds). You can build it using 2 commands:
pod installto fetch the dependencies with CocoaPodsxcodebuild -workspace alt-tab-macos.xcworkspace -scheme Releaseto build the .app
Note that on debug builds, to avoid having to re-check the System Preferences > Security & Privacy permissions on every build, we use a code-signing certificate. You can generate one on your local machine in one step by running scripts/generate_selfsigned_codesign_certificate.sh.
If you want to contribute a PR, please run npm install once. It will add the pre-commit hook to ensure that your commits follow the convention and will pass the PR.



