Desktop 1, Desktop 2, Desktop 3
macOS calls every desktop "Desktop 1", "Desktop 2" and so on, and renumbers them whenever you add, remove or reorder one. Keep one desktop for mail, one for code and one for a client, and you end up memorising numbers that keep moving.
There's no setting for it. Apple doesn't let apps rename desktops.
The SIP problem
The long-standing free fix, Spaces Renamer, works by loading code into the Dock. macOS only allows that with System Integrity Protection partly switched off, and SIP is the thing that stops other software tampering with system processes and files. Turning it off to rename a few desktops is a bad trade.
SpaceNamer takes a different route. It asks for Accessibility access and nothing more. System Integrity Protection stays on, nothing is injected into other apps, and no system files are modified.
What it does
- Names that stick. Each name belongs to the Space, not its position, so it follows the desktop when you reorder desktops in Mission Control.
- Names in Mission Control. They appear in the Spaces bar in place of "Desktop N", and move with the bar as it opens, closes, expands and rearranges.
- Menu bar. The current Space's name, updated the moment a switch starts, with a menu to rename it or jump to another. With a menu bar on each display, each one names its own display's Space.
- Instant switching. Jump straight to any desktop without the slide animation.
- Switcher. ⌃⌥Space opens a searchable list of your Spaces. Type a few letters, press Return.
- Shortcuts. ⌃⌥1 to ⌃⌥0 for desktops 1 to 10, ⌃⌥Tab for the Space you were just on, and a shortcut of your own for any Space.
- Name on switch. A small pill at the top of the screen names the Space you're moving to.
- Scriptable. A
spacenamer://URL scheme for Shortcuts, Raycast, Alfred and shell scripts.
How it works with SIP on
Reading Spaces
It asks the window server for the current layout of Spaces, the same information Mission Control uses, and only ever reads it.
Switching
It posts the same swipe events a trackpad sends to the Dock, asks it to skip the animation, and checks the switch arrived. If that ever fails it falls back to the Mission Control shortcuts.
Names in Mission Control
Apps can't rename desktops, so SpaceNamer draws the names itself in a click-through layer over the Dock's labels, found through the Accessibility API, and mirrors the Dock's animations.
Input
It listens for shortcut presses and trackpad gestures without changing or blocking them. Ordinary typing is ignored the moment it arrives, and nothing is recorded.
Privacy
SpaceNamer makes no network connections and collects nothing. Names and settings live in a preferences file on your Mac. It doesn't record your screen or your keystrokes.
Install
You need macOS 13 or later and the Xcode Command Line Tools (xcode-select --install).
git clone https://github.com/AlexanderCollins/spacenamer.git
cd spacenamer
make signing # once: a local signing identity
make install # builds a universal app into /Applications make signing creates a self-signed certificate that never leaves your Mac, so macOS keeps the Accessibility permission across rebuilds. Skip it and the app is ad-hoc signed instead, which works the same apart from that.
Script it
open "spacenamer://go/3" # desktop 3
open "spacenamer://go?name=Mail" # the Space named Mail
open "spacenamer://back" # the Space you were just on
open "spacenamer://rename?name=Inbox" # rename the current Space Known limits
- The Mission Control names are drawn over the Dock's own labels, not swapped in. In very fast gestures the two can be a frame apart.
- Most of its testing has been on a single display.
- It relies on undocumented macOS behaviour, so a macOS update can break parts of it until SpaceNamer is updated.
Get it on GitHub More open source
SpaceNamer is an independent project. It is not affiliated with, endorsed by or supported by Apple Inc. macOS, Mission Control and Spaces are trademarks of Apple Inc.