Way to get “Spaces” set to remain on a relative display

displayspaces

I have dual monitor set-ups at both my work office and my home office, but when I move between them, the "Spaces" sets flip between the two external monitors. (This has consistently happened despite changing cable arrangements, and even when setting up a new pair of monitors at my office.)

Is there a way to get "Spaces" sets to remain on their relative displays?

     Work Office             Home Office               
     -----------             -----------
┌─────────┬─────────┐   ┌─────────┬─────────┐
│  Left   │  Right  │   │  Left   │  Right  │
│ Display │ Display │   │ Display │ Display │
│ ------- │ ------- │   │ ------- │ ------- │
│ Spaces  │ Spaces  │   │ Spaces  │ Spaces  │
│ *set A* │ *set B* │   │ *set B* │ *set A* │ <-- unwanted flip-flop
├─────────┴─────────┤   ├─────────┴─────────┤
│  MacBook Display  │   │  MacBook Display  │
│   Spaces set C    │   │   Spaces set C    │
└───────────────────┘   └───────────────────┘

Best Answer

For anyone trying to figure this out, the fix turns out to be really simple, but you do need to pay attention when disconnecting and reconnecting the monitors.

Basically, whatever order you disconnect the monitors, then you need to reconnect them in the opposite order, making sure to give the Mac time to register each monitor, e.g.

                     Work Office
                     -----------
                ┌─────────┬─────────┐
                │  Left   │  Right  │
                │ Display │ Display │
                │ ------- │ ------- │
 Disconnect  -->│ Spaces  │ Spaces  │  <-- Disconnect
   SECOND       │ *set A* │ *set B* │        FIRST
                ├─────────┴─────────┤        & then
                │  MacBook Display  │   take a 1-2 second
                │   Spaces set C    │        pause
                └───────────────────┘

                     Home Office
                     -----------
                ┌─────────┬─────────┐
                │  Left   │  Right  │
                │ Display │ Display │
                │ ------- │ ------- │
  Reconnect --> │ Spaces  │ Spaces  │  <-- Reconnect 
    FIRST       │ *set A* │ *set B* │       SECOND
    & then      ├─────────┴─────────┤
   wait for     │  MacBook Display  │
 anything to    │   Spaces set C    │
 be displayed   └───────────────────┘