Windows pile onto the laptop screen when a display goes away. Save both setups once, then recall either in one step.
Unplugging a monitor on a Mac usually piles that display's windows onto the remaining screen, and reconnecting often does not put them back. macOS keeps the windows reachable, but it has no built-in command to restore the previous arrangement. SnapState can save that layout and restore it when the monitor reconnects, or from a shortcut.
Short version: macOS moves windows off a disconnected display to keep them visible, then usually leaves them there. SnapState remembers the docked and laptop-only arrangements so you can put either one back in a click.
Why do Mac windows pile up after you unplug a monitor?
macOS moves windows from a disconnected display onto a display that is still available. That behavior tends to keep every window on screen, which is useful in the moment. When the external monitor reconnects, however, macOS does not reliably send each window back to its earlier display and position, so the layout can remain bunched on the laptop screen or split across displays in an order you did not choose. If the monitor is already connected and the windows jumped because System Settings shows a different arrangement, see Mac windows jump when the display arrangement changes.
What can you do with built-in macOS?
If you prefer not to add an app, the built-in path is manual. After reconnecting, drag windows back to the external display one by one. Some apps also offer Window menu items for moving a window to a particular display, so check the Window menu in the apps you use. Mission Control can help you spot windows that ended up hidden behind each other on the crowded laptop screen.
That routine works, but it repeats every time you dock and undock. If you move between a desk and a laptop-only setup often, a saved snapshot removes the repetition.
How does SnapState restore windows after you unplug a monitor?
- Arrange your windows while docked. Connect the external monitor and put each app window where you want it for docked work.
- Save the docked setup as a named workspace. Capture the setup from the SnapState menu bar app and give it a name such as Desk with monitor.
- Unplug and arrange the laptop-only setup. Disconnect the monitor, arrange the windows for the smaller laptop screen, and save that as a second named workspace such as Laptop only.
- Arm each workspace for the matching display change. Set the docked workspace to restore when a monitor connects or a matching display layout appears, and the laptop workspace to restore when a monitor disconnects.
- Restore on demand when you need it. Pick a workspace from the menu bar, press its Control-Command-1 to 6 shortcut, or let the armed trigger run automatically, including on wake from sleep.
SnapState is a native macOS menu bar app. Each workspace captures the windows on every Space with position and size, the apps needed to relaunch them, the monitor and display layout, and all open tabs of each window in Safari, Chrome, Edge, Brave, Arc, and Chromium once Automation permission is granted. Restoring launches missing apps, remaps saved window frames onto the displays you have now, and reopens the saved tabs in each supported browser window.
Which SnapState trigger should you use?
The simplest setup is two workspaces with opposite triggers. Arm the docked workspace for monitor connect or for when a matching display layout appears, and arm the laptop-only workspace for monitor disconnect. If the Mac wakes from sleep into a different display situation, the wake trigger can run the matching workspace too. For days when you want control, skip the triggers and restore from the menu bar or with global Control-Command-1 to 6 shortcuts.
What are the practical details?
SnapState needs Accessibility permission to read window positions and move windows back into place. Workspace data stays local on your Mac as JSON in ~/Library/Application Support/SnapState/. Version 2.7.1 requires macOS 15.7 or later on Apple Silicon and Intel Macs, and ships as a signed, notarized DMG rather than through the Mac App Store.
What are the honest limits?
SnapState restores layouts across multiple Spaces (each Space is restored when you switch to it). It restores tabs only from supported browsers, and there is no Firefox support. It is not a tiling or snapping window manager: it recalls an arrangement you already made rather than arranging windows into grids as you work.
What else should you know?
Why do my Mac windows pile onto the laptop screen when I unplug a monitor?
When a display disconnects, macOS generally moves windows from that display onto a remaining display so they stay reachable. When the monitor reconnects, macOS does not reliably move every window back to where it was, so windows can stay stacked on the laptop screen until you move them again.
What can I do with built-in macOS when windows move after unplugging?
With built-in tools you can drag windows back to the reconnected display by hand, use Window menu items such as Move to a display in apps that offer them, and use Mission Control to find and organise windows that ended up stacked together.
How does SnapState restore windows after a monitor change?
SnapState saves each named workspace with window positions and sizes, the apps needed to relaunch them, the monitor and display layout, and all open tabs of each window in Safari, Chrome, Edge, Brave, Arc, and Chromium after Automation permission is granted. A workspace can restore automatically when a monitor connects or disconnects, when a matching display layout appears, or on wake from sleep, and saved frames are remapped onto the current displays when the setup differs.
Can I switch between a docked and a laptop-only layout?
Yes. Save one workspace while docked and a second workspace for laptop-only use, then restore from the menu bar or with global Control-Command-1 to 6 shortcuts, or arm each workspace for the matching connect, disconnect, matching-layout, or wake trigger.
What does SnapState not do here?
SnapState restores layouts across multiple Spaces (each Space is restored when you switch to it). Firefox is not supported, and SnapState is not a tiling or snapping window manager.