I have two displays and created for each display with Mission Control several desktops (also known as Spaces):

Display 1: Desktops 1-5
Display 2: Desktops 6-10

I have following related settings adjusted

  1. Disabled: Automatically rearrange Spaces based on most recent use
  2. Enabled: Displays have separate Spaces

I want to treat the desktops of each display as 5 pairs:

  1. Desktops 1,6
  2. Desktops 2,7
  3. Desktops 3,8
  4. Desktops 4,9
  5. Desktops 5,10

I have already changed the keyboard shortcuts as following (from here):

enter image description here

This works fine after I have deleted ~/Library/Preferences/com.apple.symbolichotkeys.plist.

How can I cycle through the pairs of desktops with one keyboard shortcut, e.g. ctrl-left/right?

I am actually testing Amethyst and want to use mod1+n/p (mod1=ctrl+shift). I am hoping that I could use AppleScript to increase/decrease the desktop number 'modulo 5'. I am on macOS 10.14.5.

  • 1
    If you want to cycle them as pairs, why do you have "Displays have separate Spaces" enabled? – Tetsujin Jul 17 at 18:22
  • When I put an app in fullscreen mode, I still want to use the other screen. – Hotschke Jul 17 at 18:24
  • ugh, OK. I'd just not use fullscreen. Whoever designed it needs to fix it, then quit. – Tetsujin Jul 17 at 18:25
  • Also yabai another window tiling manager requires the Mission Control setting Displays have separate spaces. – Hotschke Jul 23 at 8:25

Yabai: tiling window manager with support for spaces


Requirements of Yabai

  • "System Integrity Protection (SIP)" must be disabled
  • "Displays have separate spaces" must be enabled


  • Yabai allows you to switch to a different space without animation (great)

Disable the Mission Control Mappings and use this ~/.skhdrc file with mappings as the OP wants (uses jq, e.g. install with $ brew install jq)


ctrl - left : index=`yabai -m query --spaces --space | jq '.index'` &&\
                        if (($index != 1 && $index != 6 )) then\
                            new=$((index-1)); \
                            yabai -m space --focus "${other}"; yabai -m space --focus "${new}";\
ctrl - right : index=`yabai -m query --spaces --space | jq '.index'` &&\
                        if (($index != 5 && $index != 10 )) then\
                            new=$((index+1)); \
                            yabai -m space --focus "${other}"; yabai -m space --focus "${new}";\
# ctrl+1-5:

ctrl - 1 : index=`yabai -m query --displays --display | jq '.index'` &&\
                if (($index == 1)) then\
                    yabai -m space --focus 6; yabai -m space --focus 1;\
                else \
                    yabai -m space --focus 1; yabai -m space --focus 6;\
ctrl - 2 : index=`yabai -m query --displays --display | jq '.index'` &&\
                if (($index == 1)) then\
                    yabai -m space --focus 7; yabai -m space --focus 2;\
                else \
                    yabai -m space --focus 2; yabai -m space --focus 7;\
ctrl - 3 : index=`yabai -m query --displays --display | jq '.index'` &&\
                if (($index == 1)) then\
                    yabai -m space --focus 8; yabai -m space --focus 3;\
                else \
                    yabai -m space --focus 3; yabai -m space --focus 8;\
ctrl - 4 : index=`yabai -m query --displays --display | jq '.index'` &&\
                if (($index == 1)) then\
                    yabai -m space --focus 9; yabai -m space --focus 4;\
                else \
                    yabai -m space --focus 4; yabai -m space --focus 9;\
ctrl - 5 : index=`yabai -m query --displays --display | jq '.index'` &&\
                if (($index == 1)) then\
                    yabai -m space --focus 10; yabai -m space --focus 5;\
                else \
                    yabai -m space --focus 5; yabai -m space --focus 10;\

If you are not interested in a tiling window manager but want to use these mappings, you can choose the layout mode 'float' in ~/.yabairc:

yabai -m config layout                       float

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .