macOS Spaces Managers Compared: 6 Tools, 4 Different Jobs

ShiftPlus, Spencer, yabai, AeroSpace, Moom, and Workspaces all approach Mac workspaces differently. This comparison documents how each handles native Spaces, running windows, and saved contexts.

A macOS Spaces manager can mean four very different things. Some tools arrange windows inside the current desktop. Some move running windows between Apple's native Spaces. Others create their own virtual workspace model. A smaller group saves which apps belong on which native Space and rebuilds that setup later.

ShiftPlus is built for the fourth job. It captures native Space placement as part of a named work context, then restores the apps, window arrangement, browser profile, URLs, and terminal environment together. It does this on a stock Mac with System Integrity Protection left on.[1] That does not make it the right tool for every Spaces workflow. Spencer is designed to move windows that are already open. yabai exposes more low-level, scriptable control. AeroSpace deliberately avoids native Spaces.

This comparison is published by the ShiftPlus team. Competitor details below were checked against each product's official page or documentation on September 30, 2026. We did not run a controlled reliability or speed benchmark, so vendor behavior claims are labeled as such.

Four different jobs called "Spaces management"

Before comparing products, separate the jobs that often get grouped under one label:

  1. Arrange windows inside one Space. Resize, snap, tile, or recall window geometry on the desktop that is already active.
  2. Move a running window between native Spaces. Take an existing window on Desktop 1 and place it on Desktop 3 without closing its app.
  3. Change native Space structure. Create, delete, reorder, label, or move Apple's Spaces between displays.
  4. Restore app-to-Space context. Save that a project uses an editor on Space 1, design tools on Space 2, and communication apps on Space 3, then rebuild that named setup after a restart or context switch.

A tool can be excellent at one job and intentionally ignore the others. Moom is a good example: its official page documents flexible saved window layouts, including app-aware and app-independent layouts, but does not document native Spaces restoration.[4] That is a scope choice, not a defect.

Comparison at a glance

Tool Workspace model Native Spaces Move an already-open window across native Spaces Save and restore app-to-Space layouts Native Space lifecycle or order SIP note
ShiftPlus Named project context Yes No. It can offer a consented quit and relaunch Yes No SIP stays enabled[1]
Spencer Saved window profile Yes Yes, per vendor Yes, per vendor Adjusts Space count per profile; reorder not claimed Not stated on page reviewed[2]
yabai Scriptable tiling and automation Yes Yes, with the documented focus flow Not as a full project context Create, destroy, move, label Advanced lifecycle operations require partially disabling SIP[7][8]
AeroSpace Emulated virtual workspaces Different model Not applicable to native Spaces No full project-context restore Does not manage native Space structure Does not require disabling SIP[6][9]
Moom Saved window geometry No native Space restore documented No, per official FAQ Native Space placement not documented Not documented SIP requirement not stated[4][10]
Workspaces Project resource launcher No layout management No No No Not relevant to its documented scope[3]

Directly moving a live window is not the same as restoring where an app belongs. ShiftPlus handles the second problem without pretending it can do the first through a public macOS API.

ShiftPlus: native Space placement inside a full context

A ShiftPlus workspace stores more than coordinates. It can include apps, saved window frames or logical arrangements, browser profiles, predefined URLs, terminal environment variables, monitor placement, and native Space assignments. The automatic workspace restore guide covers that broader context.

For Spaces, capture records which display and 1-based Mission Control position each app window belongs to.[1] Restore then visits the saved Spaces, switches the target desktop active, launches the apps assigned there, waits for their windows, and applies the saved frames before moving on.[1]

The order matters. ShiftPlus does not ask a blocked SkyLight API to re-parent another process's window. It switches to the target Space first and launches the app there, so macOS creates the new window on the active Space.[1]

An app that is already running on the wrong Space is harder. For apps whose placement the user explicitly assigned, ShiftPlus can show a skip-by-default conflict sheet.[1] If the user selects an app, ShiftPlus requests a graceful quit, switches Space, and relaunches it.[1] It never escalates to a forced termination when the user cancels a save dialog.[1] This is more disruptive than a direct move, which is why it requires consent.

Where ShiftPlus is different

Spaces placement is part of the same object as the rest of the project context. A "Client A" workspace can restore the correct Chrome profile and URLs, set the terminal environment, open the project apps, and place those apps across native Spaces. It can do the same for "Client B" with different identities and tools.

The implementation works with SIP enabled. The technical explanation of macOS Spaces without disabling SIP documents the failed direct-move APIs, the switch-then-launch inversion, the compositor refresh workaround, and the safety trade-offs in detail.[1]

Where ShiftPlus stops

ShiftPlus is not a general native Spaces command line tool.

  • It does not create, delete, or manually reorder native Spaces.[1]
  • It does not directly move an already-open window across Spaces. The safe fallback is a consented graceful quit and relaunch.[1]
  • Stage Manager is incompatible with its Spaces restore model.[1]
  • Fullscreen Spaces can be captured, but automatic fullscreen toggling is not fully implemented.[1]
  • Off-screen window detection on macOS 15 and later is best-effort, so capture is not guaranteed to see every window in every configuration.[1]
  • The SkyLight surface is small and weak-linked, but it remains private API and could change in a future macOS release.[1]
  • Private-framework linkage means ShiftPlus is distributed directly rather than through the Mac App Store.[1]

Choose ShiftPlus for named context reconstruction, not low-level Space administration.

Spencer: direct live window movement

Spencer is the closest comparison if the task is preserving window layouts across Apple's native Spaces. Its product page says it can save and restore layouts across every Space, launch saved apps when needed, hide apps outside the profile, and give each profile its own number of Spaces.[2]

Spencer also draws a direct distinction between its approach and tools such as ShiftPlus. The vendor says Spencer moves windows that are already open, while launch-based tools switch to a Space and start or restart the app there.[2] We did not independently benchmark that behavior. The documented distinction matters when closing and reopening an app is unacceptable.

Its scope is narrower than ShiftPlus's full context model. Spencer's own page says it can launch apps and reposition multiple windows, but cannot open new windows, browser tabs, individual files, or projects after they have been closed.[2]

Spencer fits a requirement that ShiftPlus does not: keep existing windows alive and put them back across native Spaces.

yabai: scriptable native Spaces control

yabai is for people who want macOS window and Space automation as programmable infrastructure. Its Commands wiki documents focusing Spaces, creating and destroying them, moving them, assigning labels, changing per-Space layouts, and moving windows between Spaces.[7]

The SIP story needs precision. The documented command that moves a window to Space 2 and focuses that Space is marked as working with SIP enabled or disabled.[7] A separate yabai page states that moving, swapping, creating, and destroying Spaces requires its scripting addition and partially disabling SIP, along with several other advanced features.[8]

So "yabai requires disabling SIP" is too broad, while "yabai never requires it" is also wrong. The requirement depends on which operation you need.

What yabai's official command documentation does not provide is ShiftPlus's opinionated project object.[7] It can enforce rules and run scripts, but assembling browser identity, URL sets, terminal environment, app lifecycle, and a portable named context is work you design yourself.

Choose yabai if the priority is: programmable native Space operations, tiling, and rules.

AeroSpace: virtual workspaces, not native Spaces restore

AeroSpace takes a different route. Its guide says Apple provides no public API for creating, deleting, reordering, or switching Spaces and moving windows between them. AeroSpace therefore reimplements the concept as its own "Workspaces." Inactive windows are moved outside the visible screen area and returned when their workspace becomes active.[6]

That design gives AeroSpace i3-style switching and a keyboard-driven tree without controlling Apple's native Space structure. Its README explicitly says it does not require disabling SIP.[9]

This distinction matters if you rely on Mission Control, native Space ordinals, or app placement that should remain meaningful when AeroSpace is not running. AeroSpace workspaces and macOS Spaces are not two names for the same system.[6]

Choose AeroSpace if the priority is: keyboard-first tiling and virtual workspaces without native Spaces.

Moom and Rectangle Pro: geometry versus adjacent-Space moves

Moom's official page focuses on moving, zooming, snapping, custom actions, and saved layouts. Its app-aware layouts restore positions for windows in known apps. Its "any window" layouts apply saved positions to the N most recently used windows, independent of app identity.[4]

Moom's official support FAQ explicitly says it cannot send a window to another Space because Apple does not provide a public API it can legally use.[10] The FAQ is old, but it remains in the vendor's current support catalog, and the Moom 4 documentation we reviewed does not claim a newer cross-Space move feature. Saved layouts are documented; restoring native Space membership is not.

Rectangle Pro goes one step further for live windows. Its Next/Previous Space commands simulate holding a window by its title bar, then trigger macOS's Space-switch shortcut. That can carry the focused window to an adjacent Space.[11] It is not arbitrary Space assignment: the developer separately states that macOS exposes no supported way to send a layout entry to a specific Space.[12] Rectangle Pro can save ordinary window layouts, but its documented layout system does not restore one layout across designated native Spaces.[5][12]

Choose Moom if the priority is precise reusable window geometry. Look at Rectangle Pro when moving a focused window to the previous or next Space is enough. Neither documented workflow is a named multi-Space project restore.

Workspaces by Apptorium: launch project resources, not layouts

Workspaces is a project launcher. A workspace can contain apps, files, folders, websites, Terminal resources, email links, Shortcuts, and plugin actions. Starting it opens the selected resources together.[3]

Its FAQ is unusually clear about the boundary: Workspaces does not remember or set window layouts, though users can call Apple Shortcuts as a workaround.[3] That also puts native Space arrangement outside its documented scope.[3]

This lighter model can be exactly right. If your setup problem is finding and opening the same resources, adding Space automation may create more configuration than value.

Choose Workspaces if the priority is: a simple, visual project launcher for resources.

Which tool should you choose?

  • Choose ShiftPlus if a workspace means apps, native Space placement, browser identity, URLs, terminal environment, and window arrangement restored together.
  • Choose Spencer if preserving and moving already-open windows across native Spaces matters more than browser or terminal context.
  • Choose yabai if you want programmable native Space operations and accept the setup and SIP trade-offs required by advanced commands.
  • Choose AeroSpace if you prefer an i3-style virtual workspace tree and do not need Apple's native Spaces model.
  • Choose Moom if you want saved window geometry and custom placement for windows already available.
  • Choose Workspaces if opening project resources is enough and you do not need layout management.

There is no universal winner because these tools operate at different layers. If you combine a context-restoration tool with an in-session window manager, configure them so only one owns any given placement decision.

Frequently asked questions

Does ShiftPlus require disabling SIP for Spaces restore?

No. ShiftPlus's current restore pipeline works on a stock, SIP-enabled Mac. It switches the target Space and then launches the app there instead of calling blocked direct window-move APIs.[1]

Can ShiftPlus directly move a running window to another Space?

No. For an explicitly assigned app already running on the wrong Space, ShiftPlus can ask permission to quit it gracefully and relaunch it on the target Space. Spencer and yabai both document direct live-window movement for workflows that require it.[2][7]

Does ShiftPlus create or delete macOS Spaces?

No. ShiftPlus maps a saved workspace onto Spaces that already exist. Spencer advertises per-profile Space counts.[2] yabai documents native create and destroy commands, but those advanced lifecycle operations require partially disabling SIP.[7][8]

Are AeroSpace workspaces the same as macOS Spaces?

No. AeroSpace deliberately emulates its own workspaces rather than managing Apple's native Spaces. It hides inactive workspace windows outside the visible area and brings them back when you switch.[6]

Can Moom or Rectangle Pro restore native Space assignments?

Moom's official FAQ says it cannot send windows to other Spaces.[10] Rectangle Pro can carry a focused window to the previous or next Space through UI and keyboard emulation, but the developer says layouts cannot assign entries to a specific Space.[11][12] Their saved-layout features should not be treated as multi-Space assignment restore.

Can Workspaces by Apptorium restore window positions?

No, according to its official FAQ. It can launch project resources, and the vendor suggests Apple Shortcuts as a separate workaround for window layout.[3]

Sources

[1] https://shiftplus.app/blog/macos-spaces-without-disabling-sip/ — How We Shipped macOS Spaces Support Without Disabling SIP

[2] https://macspencer.app — Spencer - Window Manager for Mac

[3] https://www.apptorium.com/workspaces — Workspaces - Apptorium

[4] https://manytricks.com/moom — Moom - Many Tricks

[5] https://rectangleapp.com/pro — Rectangle Pro

[6] https://nikitabobko.github.io/AeroSpace/guide — AeroSpace Guide

[7] https://github.com/koekeishiya/yabai/wiki/Commands — yabai Commands

[8] https://github.com/koekeishiya/yabai/wiki/Disabling-System-Integrity-Protection — yabai SIP Requirements

[9] https://github.com/nikitabobko/AeroSpace — AeroSpace GitHub README

[10] https://manytricks.com/osticket/kb/faq.php?id=52 — Moom FAQ: Spaces

[11] https://rectangleapp.com/pro/docs/keyboard-shortcuts — Rectangle Pro Keyboard Shortcuts

[12] https://github.com/rxhanson/RectanglePro-Community/issues/474 — Rectangle Pro: Assign layout entries to Spaces