How ShiftPlus Restores macOS Virtual Desktops (Spaces)
Apps lose their Space placement every time you restart. ShiftPlus is the first macOS app that captures and restores cross-Space layout, with smart conflict resolution and multi-display support.
How ShiftPlus Restores macOS Virtual Desktops (Spaces)
If you use multiple Mission Control Spaces on your Mac — Desktop 1 for code, Desktop 2 for design, Desktop 3 for messaging — you've probably noticed something frustrating. Every time you restart, every time you log out, every time you close an app and reopen it, the Spaces forget. Your apps land back on whichever Desktop is active. The careful separation you built collapses into Desktop 1.
This isn't a bug. It's a gap in macOS that every power user runs into eventually. ShiftPlus closes that gap.
The problem: macOS forgets where your apps lived
macOS gives you Spaces (virtual desktops) as a first-class feature in Mission Control. You can swipe between Desktop 1, Desktop 2, Desktop 3 with a four-finger trackpad gesture, and each one feels like its own clean workspace. Power users build elaborate routines around them — Desktop 1 for deep work, Desktop 2 for communication apps, Desktop 3 for design tools.
The problem starts the moment something interrupts the routine. A restart, an app crash, a software update, even just quitting an app to free memory — and that app no longer remembers it belongs on Desktop 2. It opens wherever Mission Control is currently focused. You end up with Slack on Desktop 1, your code editor on Desktop 1, your design tool on Desktop 1, and the careful separation you built is gone.
You can right-click each app's Dock icon, navigate to Options → Assign To → This Desktop, one app at a time. It works, but it's tedious, and it doesn't survive a restart cleanly. There is no native way to capture where everything currently lives and restore that layout later in one motion.
What "Space restoration" actually means
A Space, in macOS terminology, is a virtual desktop. Mission Control lets you create multiple of them and switch between them. Each Space has its own collection of windows. When you launch an app, it lands on whichever Space is currently active.
Most window managers — including the well-loved ones — handle window position within a Space. They can put Slack on the left half of the screen and your editor on the right half. What they generally do not handle is which Space the app is on at all. That's the missing layer.
True Space restoration means recording two things together:
- The Space (Desktop 1 / 2 / 3) each app belongs to.
- The window arrangement within that Space (Left Half, Right Half, fullscreen, custom frame).
Neither alone is sufficient. Together they describe a workspace.
How ShiftPlus restores Spaces
When you save a workspace profile in ShiftPlus — or when you click "Capture Current Setup" — it walks every running app and records a small bundle of facts: which Space the app was on, which monitor in a multi-display setup, the window arrangement intent (Left Half, Right Half, fullscreen), and the exact window frame in screen coordinates.
When you open that profile later, ShiftPlus reverses the process. It switches Mission Control through each Space in the saved layout, launches the apps that belong on that Space (they automatically land on the active Space), and applies the saved window arrangement. After the loop finishes, it returns to the primary Space — the one you'll actually look at first — so your browser and folders open on the right Desktop too.
The result is that opening a profile doesn't just put your apps on the right side of the screen. It puts them on the right Desktop. Slack lands on Space 2. VSCode lands on Space 1. Figma lands on Space 3. The cross-Space layout you saved is the cross-Space layout you get back.
The conflict problem (and how we solve it)
There's an obvious edge case: what if Slack is already running on Desktop 3, but the profile you're opening expects it on Desktop 2? The naive answer is to just move it. The respectful answer is to ask first.
ShiftPlus shows a confirmation dialog listing each conflict in plain language: "Slack is on Space 3, profile expects Space 2." Every checkbox in that dialog starts unchecked. Nothing moves unless you explicitly tick it. If you dismiss the dialog without ticking anything, nothing moves. The default is "leave my apps alone."
This matters because the easy alternative — silently moving running apps to match the profile — feels invasive. You might have just been working in Slack on Desktop 3 because you wanted to. The profile is a hint about your intent when you saved it, not a license to override what you're doing right now. The dialog gives you control without making you click through it every time: you can also choose "Don't ask again for this profile" if you genuinely want auto-move behavior.
Multi-display + window arrangement
The multi-display angle multiplies everything. If you have two external monitors and three Spaces on each, that's six distinct zones an app could belong to. ShiftPlus tracks all six.
When you restore a profile, each app lands on the right monitor and the right Space and with the right window frame. If your "Deep Work" profile saves VSCode as Left Half on the external 4K, Space 1, that's exactly where it comes back. If your "Meetings" profile saves Slack as full-screen on the laptop, Space 2 — same.
Window arrangement is also smart about apps that are already running. If you change a saved profile from "VSCode → Center" to "VSCode → Left Half" and then open the profile, ShiftPlus applies the new arrangement to the existing VSCode window without quitting and relaunching it. (This used to silently fail; we fixed it in v1.3.0.)
Compatibility
Spaces restoration works on macOS 14.6 Sonoma and later, with a specific workaround for the macOS 15 Sequoia compositor refresh bug — Mission Control updates immediately after a profile switch, no need to manually press ⌃→ to "wake" the desktop.
Stage Manager is not currently compatible. Stage Manager replaces the Spaces model entirely with a different window-grouping concept, and the underlying APIs ShiftPlus relies on don't apply. To use Spaces restoration, turn Stage Manager off in System Settings → Desktop & Dock.
Fullscreen Spaces (apps that you've sent to their own dedicated fullscreen Space) are captured but not yet auto-restored to fullscreen — that's on the roadmap.
Spaces restoration is included free during the 14-day trial. After that, a Pro license keeps the feature active.
Get started
Save your current Mission Control layout as a profile, then test restoration: quit a couple of apps, switch to a different Desktop, open the profile, and watch them return to the right Spaces.
Download ShiftPlus and try it free for 14 days. If you want a deeper look at how it integrates with the rest of the workspace pipeline — browser profiles, terminal env vars, deeplinks — the pricing page lays out which features land in which tier.