A Spaces setup for developers

Put your editor and terminal on one Space, the browser with docs and localhost on the next, and chat, mail and music further out, then jump between them with ⌃⌥1 to ⌃⌥5. Spacepal's built-in Developer template creates exactly that layout in one click, and per-Space shell commands let each Space start what it needs.

Start with the Developer template

Open Settings, Profiles, Templates and apply Developer, or run open "spacepal://template/Developer". It fills your first five desktops (on the menu bar display, in order):

DesktopNameNoteOpens when empty
1CodeEditor and terminalVisual Studio Code, Terminal
2BrowserDocs, PRs, localhostNothing
3ChatSlack
4MailMail
5MusicSpotify

Each Space also gets an icon and colour. Apps are only added if they are installed, and they open the first time you enter the Space after login and only while it has no windows. If you have fewer than five desktops, Spacepal says how many to add in Mission Control; apply the template again afterwards. Everything can be edited in Settings, Spaces.

Adjust it to your stack

Shell commands per Space (direct version)

The direct version can run a zsh command when you enter or leave a Space, with SPACEPAL_SPACE_NAME, SPACEPAL_SPACE_NUMBER and SPACEPAL_SPACE_ID set. Two ideas for the Code Space:

# On enter: open the current project in your editor
code ~/src/my-app

# On leave: log time spent per Space yourself
echo "$(date +%FT%T) left $SPACEPAL_SPACE_NAME" >> ~/.spaces.log

Spacepal also tracks time per Space on its own (Settings, Time) and exports it as CSV, which is handy for timesheets.

Shortcuts worth learning first

ShortcutWhy it helps
⌃⌥1, then ⌃⌥1 againGo to Code; pressing again returns to the Space you came from, ideal for checking the browser and coming back
⌃⌥`Last Space
⌃⌥FFind a window by title, such as one terminal tab or a specific repo window, on any Space
⌃⌥⇧2Send the window you are looking at to Browser
⌃⌥M t, then ⌃⌥' tMark your main terminal and jump to it from anywhere
⌃⌥/A scratchpad app, such as a notes app or a terminal, over any Space

Stop macOS pulling you around

Clicking Slack in the Dock or Cmd-Tabbing to the browser normally drags you to whichever Space that app lives on. Turn on Space Lock in Settings, Windows to stay put. Spacepal also brings the window to you, which uses a direct WindowServer move that works on macOS 14.0 to 14.4 and on 26.4 and later; on other versions it stays on its own Space. Also consider turning off "When switching to an application, switch to a Space with open windows" in System Settings, Desktop & Dock; Spacepal's setup checklist points to it.

From the terminal and your launcher

Every action is a URL, so you can script it:

open -g "spacepal://switch/Code"
open -g "spacepal://note/current?text=Reviewing%20PR%20412"

Your Spaces, names and the apps on each are in ~/Library/Application Support/Spacepal/state.json, which you can read with jq. The Raycast extension and the SketchyBar recipe both use it.

Two machines, two setups

Save this as a profile named Work (Settings, Profiles). On a weekend, switch to a Home profile with different names and automations, or link a profile to the set of displays at your desk so it switches when you plug in.

Related

Written by Dan Bayer, developer of Spacepal. Last updated 2026-10-27.