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):
| Desktop | Name | Note | Opens when empty |
|---|---|---|---|
| 1 | Code | Editor and terminal | Visual Studio Code, Terminal |
| 2 | Browser | Docs, PRs, localhost | Nothing |
| 3 | Chat | Slack | |
| 4 | |||
| 5 | Music | Spotify |
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
- Swap the editor. In the Code Space's editor, remove Visual Studio Code and add Xcode, Zed or whatever you use. Add your terminal app the same way.
- Pin apps. Under "Apps that belong here", add Slack to Chat and your editor to Code. New windows of those apps then land on the right Space even if you open them from elsewhere. These rules use a direct WindowServer move that works on macOS 14.0 to 14.4 and on 26.4 and later; on other versions the windows stay where they open.
- Open the right URLs. On Browser, add
http://localhost:3000and your pull request page under "Open URL or file". - Use a browser profile. If you keep a work profile in Chrome, Brave, Edge, Vivaldi or Arc, set "Browser profile" so Browser opens that one.
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
| Shortcut | Why it helps |
|---|---|
| ⌃⌥1, then ⌃⌥1 again | Go to Code; pressing again returns to the Space you came from, ideal for checking the browser and coming back |
| ⌃⌥` | Last Space |
| ⌃⌥F | Find a window by title, such as one terminal tab or a specific repo window, on any Space |
| ⌃⌥⇧2 | Send the window you are looking at to Browser |
| ⌃⌥M t, then ⌃⌥' t | Mark 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
- Per-Space automations
- All keyboard shortcuts
- MacBook with an external monitor
- Spacepal is a one-time purchase with a 14-day trial
Written by Dan Bayer, developer of Spacepal. Last updated 2026-10-27.