By default - alt and tab shifts the keyboard focus within the frontmost window - the one with focus for the keyboard. It has nothing to do with app switching. Command + Tab switches between apps that run.
Macs offer an application switcher that works just like Alt + Tab does on Windows, but there are many more keyboard shortcuts that tie into the Mission Control feature. Read our our guide to using Mission Control for more keyboard shortcuts and tricks. Command + Tab – Move through a list of open applications. This is like Alt + Tab on Windows. IBook 1.42 Ghz Power PC G4, Mac OS X (10.4.8) Posted on Jul 2, 2008 10:06 PM Reply I have this question too ( 227 ) I have this question too Me too (227) Me too. Alt(aka Option)+tab is between Windows of an Application (like between open PDF files) Click to expand. I assume you are talking about command+, not alt+tab. Go to steam, press the steam tab at the top left. Go to preferences. Go to the in-game tab and click on the overlay shortcut keys and press f5. Restart whatever game you are playing and press f5 to tab out and there you go. Hope this helped:D.
There are many ways to contribute:
- Come discuss with us on the Discord server.
- Suggest an enhancement or discuss an issue on github, or use the feedback form in the app.
Technical overview
This document gives an technical overview of the project, for newcomers who want to contribute.
Building the project locally
This project has minimal dependency on Xcode-only features (e.g. InterfaceBuilder, Playgrounds). You can build it by doing:
scripts/codesign/setup_local.sh
to generate a local self-signed certificate, to avoid having to re-check theSystem Preferences > Security & Privacy
permissions on every build- Either open
alt-tab-macos.xcworkspace
with XCode, or use the cli:xcodebuild -workspace alt-tab-macos.xcworkspace -scheme Debug
to build the .app with theDebug
build configuration
Raising a pull-request
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.
Mac development ecosystem
Mac development ecosystem is pretty terrible in general. They keep piling on the tech stacks on top of each other, so you have C APIs, ObjC APIs, Swift APIs, Interface builder, Playgrounds, Swift UI, Mac Catalyst. All these are bridging with each other with a bunch of macros, SDKs glue, compiler flags, compatibility mode, XCode legacy build system, etc. For alt-tab, we are on Swift 5.0. Note that swift just recently started being stable, but overall any change of version breaks a lot of stuff. Swift itself is the mainstream language with the worst governance I've seen in modern times.
Regarding SDKs, it's very different from other (better) ecosystems like Java. Here the SDK is bundled with XCode, and XCode is bundled with the OS. This means that from a machine running let's say macOS 10.10, you have access to only a specific range of XCode versions (you can't run the latest for instance), and these give you access to a specific range of SDKs (i.e. Swift + objc + c + bridges + compiler + toolchain + etc)
Documentation is abysmal. Very simple things are not documented at all, and good information is hard to find. Compared to other ecosystem I've worked on in the past like Android, nodejs, Java, rust, this is really a bad spot. You can truly tell Apple doesn't care about supporting third-parties. They are in such a good position that people will struggle and just push through to deliver on their ecosystem because it is so valuable, and because they don't have to care, they don't. They could pay an intern to update the docs over the summer for instance, just to give you context of the lack of care we are talking about here.
Dependencies were historically never handled by Apple. The community came up with Cocoapods which is the de-facto dependency manager for Apple ecosystem projects these days, even though Apple is now trying to push their own.
OS APIs are quite limited for the kind of low-level, system-wide app AltTab is. This means often we just don't have an API to do something. For instance, there is no API to ask the OS 'how many Spaces does the user have?' or 'Can you focus the window on Space 2?'. There are however, retro-engineered private APIs which you can call. These are not documented at all, not guaranteed to be there in future macOS releases, and prevent us from releasing AltTab on the Mac AppStore. We have tried my best to document the ones we are using, as well as ones we investigated in the past.
This project specifically
Documentation is abysmal. Very simple things are not documented at all, and good information is hard to find. Compared to other ecosystem I've worked on in the past like Android, nodejs, Java, rust, this is really a bad spot. You can truly tell Apple doesn't care about supporting third-parties. They are in such a good position that people will struggle and just push through to deliver on their ecosystem because it is so valuable, and because they don't have to care, they don't. They could pay an intern to update the docs over the summer for instance, just to give you context of the lack of care we are talking about here.
Dependencies were historically never handled by Apple. The community came up with Cocoapods which is the de-facto dependency manager for Apple ecosystem projects these days, even though Apple is now trying to push their own.
OS APIs are quite limited for the kind of low-level, system-wide app AltTab is. This means often we just don't have an API to do something. For instance, there is no API to ask the OS 'how many Spaces does the user have?' or 'Can you focus the window on Space 2?'. There are however, retro-engineered private APIs which you can call. These are not documented at all, not guaranteed to be there in future macOS releases, and prevent us from releasing AltTab on the Mac AppStore. We have tried my best to document the ones we are using, as well as ones we investigated in the past.
This project specifically
To mitigate the issues listed above, we took some measures.
We minimize reliance on XCode, InterfaceBuilder, Playground, and other GUI tools. You can't cut the dependency completely though as only XCode can build macos apps. Currently the project has these files:
- 1 xib (InterfaceBuilder UI file, describing the menubar items like 'Edit' or 'Format')
alt-tab-macos.xcodeproj
file describing AltTab itself. It contains some settings for the appalt-tab-macos.xcworkspace
file describing an xcode workspace containing AltTab + cocoapods dependencies. You open that file to open the project in XCode or AppCodeAlt-tab-macos.entitlements
and Info.plist which are static files describing some app config for XCodePodFile
andPodFile.lock
describe dependencies on open-source libraries (e.g. Sparkle)- Some
.xcconfig
files inconfig/
which contain XCode settings that people typically change using XCode UI, but that I want to be version controlled
The project directory is organized in the following way:
Path | Role |
---|---|
config/ | XCode build settings |
docs/ | supporting material to document the project |
resources/ | files that are shipped inside the final .app (e.g. icons) |
scripts/ | bash scripts useful for CI and local workflows |
src/ | Swift source code |
src/api-wrappers | Wrapping some unfriendly APIs (usually C-APIs) |
src/logic | Business logic (i.e. 'models') |
src/ui | UI code (e.g. sublasses of NSView or NSCollectionView) |
Other folders/files are either tooling or auto-generated (e.g. Pods/
and Frameworks/
are generated by pod install
)
QA
Mac Version Of Alt Tab
alt-tab-macos is deeply integrated with the OS and other apps. Thus doing end-to-end automated QA would be a nightmare. For the time being QA is done manually.
In an attempt to not have too many regressions, this documents will list OS interactions. This should be useful as some of them are very exotic and not many people know about them.
List of use-cases
Which windows to list, and be able to focus
- Minimized windows
- Windows from hidden apps
- Windows of fullscreen apps
- Windows of fullscreen apps with split-screen
- Windows merged into 1 as tabs (e.g. Finder 'Merge All Windows', drag-and-drop a window onto an existing window, etc)
- Windows on multiple monitors
- Windows on multiple Spaces
- Should not show: dialogs, pop-overs, context menus (e.g. Outlook meeting reminder, iStats Pro menus)
App is summoned during an OS animation
- The UI should only appear after the animation completes for:
- Space transition
- an app going fullscreen
- The UI should not show at all (i.e. ignore the shortcut) if Mission Control is open
- The UI should show instantly during:
- Window minimizing/de-minimizing
- Window maximizing (i.e. double-click the titlebar)
- An app is launching/quitting
Thumbnail layout corner-cases
- Very small windows (i.e. smaller than the thumbnail min size)
- Very wide/tall windows
- Should show the app name for windows without a title
- Long titles should be truncated
- Many windows are opened
- There is no open window
- AltTab should appear on top of all windows, dialogs, pop-overs, the Dock, etc
OS events to handle while AltTab's UI is shown
- An app is launching/quitting
- A new window opens
- An existing window is closed
Drag-and-drop on top of the thumbnails
- Drag-and-dropping a URL onto a window thumbnail should open it with that window's app
- Drag-and-dropping a file onto a window thumbnail should open it with that window's app
System Preferences
- General > Appearance > 'Dark': switches to Dark Mode
- General > Show scroll bars > 'Always': regenerates all scrollbars
- Display > Resolution > Scaled: changes DPI and rescale AltTab
- Mission Control > 'Displays have separate Spaces': changes Spaces behavior on multi-displays setups
Spaces
- Spaces get created/destroyed
- A window is moved to another space by drag-and-dropping on the Spaces thumbnails at the top of the Mission Control UI
- A window is moved to another space by dragging it on the side of the current Space, and waiting for a Space transition, then dropping it
- A window is moved to another space by destroying the Space it is in
- An app is assigned to a specific space or all spaces by clicking it's Dock icon > Options > Assign to
Shortcuts
- The hold 'key' can be multiple modifiers (e.g.
⌥⇧
) - Shortcuts should have priority over system shortcuts such as
cmd+tab
, so the user can replace these - The 'select next window' shortcut can be modifiers, modifiers+key, or just key; it can also contain the same modifiers as the hold 'key'
- All shortcuts, except the hold key, can be disabled by the user
- Shortcuts can include the
escape
anddelete
key; these should not stop recording shortcuts - Secure Input can prevent AltTab from listening to the keyboard
- Some shortcuts should only work when AltTab is open
- These shortcuts should active whether the hold shortcut is held or not
- Shortcuts should work with capslock active or inactive
- Shortcuts should repeat if kept pressed
- Repeat rate and initial delay should match the values set in
System Preference
>Keyboard
- when navigating left/right/up/down, the repeating behavior should stop when hitting the last window in the list. The user can then manually do the shortcut once more to cycle to the other side; it then repeats again
- Repeat rate and initial delay should match the values set in
- The shortcut sets 1 and 2 should not interact with each other (e.g. opening AltTab with one, then using the other to navigate)
- Shortcuts can focus the window on release, or be pressing a key or using the mouse
- Keyboards from other countries have different layout which impact shortcuts
- e.g. the default
⌥`
shortcut should become⌥>
on a Spanish ISO keyboard
- e.g. the default
Localization
- Right-to-left languages (e.g. arabic) have the whole layout reversed
- For the main window, even navigation is reversed
- For preferences and feedback windows, all layout is reversed
- Text length can varies per languages which can create layout issues
Misc
- AltTab is launched after some apps/windows are already opened
- Displays/mouses/trackpads/keyboards get connected/disconnected while AltTab is used
- Sudden Termination
To use a keyboard shortcut, press and hold one or more modifier keys and then press the last key of the shortcut. For example, to use Command-C (copy), press and hold the Command key, then the C key, then release both keys. Mac menus and keyboards often use symbols for certain keys, including modifier keys:
On keyboards made for Windows PCs, use the Alt key instead of Option, and the Windows logo key instead of Command.
Some keys on some Apple keyboards have special symbols and functions, such as for display brightness , keyboard brightness , Mission Control, and more. If these functions aren't available on your keyboard, you might be able to reproduce some of them by creating your own keyboard shortcuts. To use these keys as F1, F2, F3, or other standard function keys, combine them with the Fn key.
Cut, copy, paste, and other common shortcuts
- Command-X: Cut the selected item and copy it to the Clipboard.
- Command-C: Copy the selected item to the Clipboard. This also works for files in the Finder.
- Command-V: Paste the contents of the Clipboard into the current document or app. This also works for files in the Finder.
- Command-Z: Undo the previous command. You can then press Shift-Command-Z to Redo, reversing the undo command. In some apps, you can undo and redo multiple commands.
- Command-A: Select All items.
- Command-F: Find items in a document or open a Find window.
- Command-G: Find Again: Find the next occurrence of the item previously found. To find the previous occurrence, press Shift-Command-G.
- Command-H: Hide the windows of the front app. To view the front app but hide all other apps, press Option-Command-H.
- Command-M: Minimize the front window to the Dock. To minimize all windows of the front app, press Option-Command-M.
- Command-O: Open the selected item, or open a dialog to select a file to open.
- Command-P: Print the current document.
- Command-S: Save the current document.
- Command-T: Open a new tab.
- Command-W: Close the front window. To close all windows of the app, press Option-Command-W.
- Option-Command-Esc: Force quit an app.
- Command–Space bar: Show or hide the Spotlight search field. To perform a Spotlight search from a Finder window, press Command–Option–Space bar. (If you use multiple input sources to type in different languages, these shortcuts change input sources instead of showing Spotlight. Learn how to change a conflicting keyboard shortcut.)
- Control–Command–Space bar: Show the Character Viewer, from which you can choose emoji and other symbols.
- Control-Command-F: Use the app in full screen, if supported by the app.
- Space bar: Use Quick Look to preview the selected item.
- Command-Tab: Switch to the next most recently used app among your open apps.
- Shift-Command-5: In macOS Mojave or later, take a screenshot or make a screen recording. Or use Shift-Command-3 or Shift-Command-4 for screenshots. Learn more about screenshots.
- Shift-Command-N: Create a new folder in the Finder.
- Command-Comma (,): Open preferences for the front app.
Sleep, log out, and shut down shortcuts
You might need to press and hold some of these shortcuts for slightly longer than other shortcuts. This helps you to avoid using them unintentionally.
- Power button: Press to turn on your Mac or wake it from sleep. Press and hold for 1.5 seconds to put your Mac to sleep.* Continue holding to force your Mac to turn off.
- Option–Command–Power button* or Option–Command–Media Eject : Put your Mac to sleep.
- Control–Shift–Power button* or Control–Shift–Media Eject : Put your displays to sleep.
- Control–Power button* or Control–Media Eject : Display a dialog asking whether you want to restart, sleep, or shut down.
- Control–Command–Power button:* Force your Mac to restart, without prompting to save any open and unsaved documents.
- Control–Command–Media Eject : Quit all apps, then restart your Mac. If any open documents have unsaved changes, you will be asked whether you want to save them.
- Control–Option–Command–Power button* or Control–Option–Command–Media Eject : Quit all apps, then shut down your Mac. If any open documents have unsaved changes, you will be asked whether you want to save them.
- Control-Command-Q: Immediately lock your screen.
- Shift-Command-Q: Log out of your macOS user account. You will be asked to confirm. To log out immediately without confirming, press Option-Shift-Command-Q.
Macos Alt Tab
* Does not apply to the Touch ID sensor.
Finder and system shortcuts
- Command-D: Duplicate the selected files.
- Command-E: Eject the selected disk or volume.
- Command-F: Start a Spotlight search in the Finder window.
- Command-I: Show the Get Info window for a selected file.
- Command-R: (1) When an alias is selected in the Finder: show the original file for the selected alias. (2) In some apps, such as Calendar or Safari, refresh or reload the page. (3) In Software Update preferences, check for software updates again.
- Shift-Command-C: Open the Computer window.
- Shift-Command-D: Open the desktop folder.
- Shift-Command-F: Open the Recents window, showing all of the files you viewed or changed recently.
- Shift-Command-G: Open a Go to Folder window.
- Shift-Command-H: Open the Home folder of the current macOS user account.
- Shift-Command-I: Open iCloud Drive.
- Shift-Command-K: Open the Network window.
- Option-Command-L: Open the Downloads folder.
- Shift-Command-N: Create a new folder.
- Shift-Command-O: Open the Documents folder.
- Shift-Command-P: Show or hide the Preview pane in Finder windows.
- Shift-Command-R: Open the AirDrop window.
- Shift-Command-T: Show or hide the tab bar in Finder windows.
- Control-Shift-Command-T: Add selected Finder item to the Dock (OS X Mavericks or later)
- Shift-Command-U: Open the Utilities folder.
- Option-Command-D: Show or hide the Dock.
- Control-Command-T: Add the selected item to the sidebar (OS X Mavericks or later).
- Option-Command-P: Hide or show the path bar in Finder windows.
- Option-Command-S: Hide or show the Sidebar in Finder windows.
- Command–Slash (/): Hide or show the status bar in Finder windows.
- Command-J: Show View Options.
- Command-K: Open the Connect to Server window.
- Control-Command-A: Make an alias of the selected item.
- Command-N: Open a new Finder window.
- Option-Command-N: Create a new Smart Folder.
- Command-T: Show or hide the tab bar when a single tab is open in the current Finder window.
- Option-Command-T: Show or hide the toolbar when a single tab is open in the current Finder window.
- Option-Command-V: Move the files in the Clipboard from their original location to the current location.
- Command-Y: Use Quick Look to preview the selected files.
- Option-Command-Y: View a Quick Look slideshow of the selected files.
- Command-1: View the items in the Finder window as icons.
- Command-2: View the items in a Finder window as a list.
- Command-3: View the items in a Finder window in columns.
- Command-4: View the items in a Finder window in a gallery.
- Command–Left Bracket ([): Go to the previous folder.
- Command–Right Bracket (]): Go to the next folder.
- Command–Up Arrow: Open the folder that contains the current folder.
- Command–Control–Up Arrow: Open the folder that contains the current folder in a new window.
- Command–Down Arrow: Open the selected item.
- Right Arrow: Open the selected folder. This works only when in list view.
- Left Arrow: Close the selected folder. This works only when in list view.
- Command-Delete: Move the selected item to the Trash.
- Shift-Command-Delete: Empty the Trash.
- Option-Shift-Command-Delete: Empty the Trash without confirmation dialog.
- Command–Brightness Down: Turn video mirroring on or off when your Mac is connected to more than one display.
- Option–Brightness Up: Open Displays preferences. This works with either Brightness key.
- Control–Brightness Up or Control–Brightness Down: Change the brightness of your external display, if supported by your display.
- Option–Shift–Brightness Up or Option–Shift–Brightness Down: Adjust the display brightness in smaller steps. Add the Control key to this shortcut to make the adjustment on your external display, if supported by your display.
- Option–Mission Control: Open Mission Control preferences.
- Command–Mission Control: Show the desktop.
- Control–Down Arrow: Show all windows of the front app.
- Option–Volume Up: Open Sound preferences. This works with any of the volume keys.
- Option–Shift–Volume Up or Option–Shift–Volume Down: Adjust the sound volume in smaller steps.
- Option–Keyboard Brightness Up: Open Keyboard preferences. This works with either Keyboard Brightness key.
- Option–Shift–Keyboard Brightness Up or Option–Shift–Keyboard Brightness Down: Adjust the keyboard brightness in smaller steps.
- Option key while double-clicking: Open the item in a separate window, then close the original window.
- Command key while double-clicking: Open a folder in a separate tab or window.
- Command key while dragging to another volume: Move the dragged item to the other volume, instead of copying it.
- Option key while dragging: Copy the dragged item. The pointer changes while you drag the item.
- Option-Command while dragging: Make an alias of the dragged item. The pointer changes while you drag the item.
- Option-click a disclosure triangle: Open all folders within the selected folder. This works only when in list view.
- Command-click a window title: See the folders that contain the current folder.
- Learn how to use Command or Shift to select multiple items in the Finder.
- Click the Go menu in the Finder menu bar to see shortcuts for opening many commonly used folders, such as Applications, Documents, Downloads, Utilities, and iCloud Drive.
Document shortcuts
The behavior of these shortcuts may vary with the app you're using.
- Command-B: Boldface the selected text, or turn boldfacing on or off.
- Command-I: Italicize the selected text, or turn italics on or off.
- Command-K: Add a web link.
- Command-U: Underline the selected text, or turn underlining on or off.
- Command-T: Show or hide the Fonts window.
- Command-D: Select the Desktop folder from within an Open dialog or Save dialog.
- Control-Command-D: Show or hide the definition of the selected word.
- Shift-Command-Colon (:): Display the Spelling and Grammar window.
- Command-Semicolon (;): Find misspelled words in the document.
- Option-Delete: Delete the word to the left of the insertion point.
- Control-H: Delete the character to the left of the insertion point. Or use Delete.
- Control-D: Delete the character to the right of the insertion point. Or use Fn-Delete.
- Fn-Delete: Forward delete on keyboards that don't have a Forward Delete key. Or use Control-D.
- Control-K: Delete the text between the insertion point and the end of the line or paragraph.
- Fn–Up Arrow: Page Up: Scroll up one page.
- Fn–Down Arrow: Page Down: Scroll down one page.
- Fn–Left Arrow: Home: Scroll to the beginning of a document.
- Fn–Right Arrow: End: Scroll to the end of a document.
- Command–Up Arrow: Move the insertion point to the beginning of the document.
- Command–Down Arrow: Move the insertion point to the end of the document.
- Command–Left Arrow: Move the insertion point to the beginning of the current line.
- Command–Right Arrow: Move the insertion point to the end of the current line.
- Option–Left Arrow: Move the insertion point to the beginning of the previous word.
- Option–Right Arrow: Move the insertion point to the end of the next word.
- Shift–Command–Up Arrow: Select the text between the insertion point and the beginning of the document.
- Shift–Command–Down Arrow: Select the text between the insertion point and the end of the document.
- Shift–Command–Left Arrow: Select the text between the insertion point and the beginning of the current line.
- Shift–Command–Right Arrow: Select the text between the insertion point and the end of the current line.
- Shift–Up Arrow: Extend text selection to the nearest character at the same horizontal location on the line above.
- Shift–Down Arrow: Extend text selection to the nearest character at the same horizontal location on the line below.
- Shift–Left Arrow: Extend text selection one character to the left.
- Shift–Right Arrow: Extend text selection one character to the right.
- Option–Shift–Up Arrow: Extend text selection to the beginning of the current paragraph, then to the beginning of the following paragraph if pressed again.
- Option–Shift–Down Arrow: Extend text selection to the end of the current paragraph, then to the end of the following paragraph if pressed again.
- Option–Shift–Left Arrow: Extend text selection to the beginning of the current word, then to the beginning of the following word if pressed again.
- Option–Shift–Right Arrow: Extend text selection to the end of the current word, then to the end of the following word if pressed again.
- Control-A: Move to the beginning of the line or paragraph.
- Control-E: Move to the end of a line or paragraph.
- Control-F: Move one character forward.
- Control-B: Move one character backward.
- Control-L: Center the cursor or selection in the visible area.
- Control-P: Move up one line.
- Control-N: Move down one line.
- Control-O: Insert a new line after the insertion point.
- Control-T: Swap the character behind the insertion point with the character in front of the insertion point.
- Command–Left Curly Bracket ({): Left align.
- Command–Right Curly Bracket (}): Right align.
- Shift–Command–Vertical bar (|): Center align.
- Option-Command-F: Go to the search field.
- Option-Command-T: Show or hide a toolbar in the app.
- Option-Command-C: Copy Style: Copy the formatting settings of the selected item to the Clipboard.
- Option-Command-V: Paste Style: Apply the copied style to the selected item.
- Option-Shift-Command-V: Paste and Match Style: Apply the style of the surrounding content to the item pasted within that content.
- Option-Command-I: Show or hide the inspector window.
- Shift-Command-P: Page setup: Display a window for selecting document settings.
- Shift-Command-S: Display the Save As dialog, or duplicate the current document.
- Shift–Command–Minus sign (-): Decrease the size of the selected item.
- Shift–Command–Plus sign (+): Increase the size of the selected item. Command–Equal sign (=) performs the same function.
- Shift–Command–Question mark (?): Open the Help menu.
Other shortcuts
For more shortcuts, check the shortcut abbreviations shown in the menus of your apps. Every app can have its own shortcuts, and shortcuts that work in one app might not work in another.
- Apple Music shortcuts: Choose Help > Keyboard shortcuts from the menu bar in the Music app.
- Other shortcuts: Choose Apple menu > System Preferences, click Keyboard, then click Shortcuts.
Learn more
- Create your own shortcuts and resolve conflicts between shortcuts
- Change the behavior of the function keys or modifier keys