Download · Version 0.6.0

Get Deskmap.

Free, open source, no account. Download the app, unzip it, drag it to Applications. The first launch takes two extra clicks because the app is not notarized.

  • Version 0.6.0
  • macOS 13 or later
  • Apple silicon & Intel
  • Free · MIT

Requirements

What you need.

macOS
13 Ventura or laterOn macOS 15 and 26.0–26.3 desktop moves start off until you choose Try Anyway: they have not been verified there yet. Displays and layouts work on every version.
Mac
Apple silicon and Intel
Price
FreeSupport the project if you like it, never required.
License
MITThe source is on GitHub.

Install

Two ways to get it.

The app, from GitHub.

The same app the Homebrew cask installs, straight from the latest release. Then open it the first time as shown below.

  1. Download the zip from the latest release.
  2. Unzip it.
  3. Drag Deskmap.app to /Applications.
Latest release on GitHub

Two lines in Terminal.

Deskmap has a Homebrew cask in its own tap. It installs the same app; the first launch below still applies. Homebrew 7 and later asks you to trust the tap once.

$ brew trust cnkndmr/tap
$ brew install --cask cnkndmr/tap/deskmap

First launch

Open it the first time.

Deskmap is not notarized by Apple, so macOS blocks the first launch. Three steps, once.

  1. Install

    Download the zip from the latest release, unzip it and drag Deskmap.app to /Applications.

  2. Let macOS open it

    Open the app once. macOS blocks it. Then go to System Settings › Privacy & Security and click Open Anyway.

  3. Grant Accessibility

    In the welcome guide, click Open System Settings and allow. macOS opens Privacy & Security › Accessibility; turn Deskmap on there. The guide notices it by itself.

After every update

macOS asks for the Accessibility permission again after each update. If a window stops moving after you updated, grant it again.

Deskmap has no Dock icon. It lives in the menu bar, and the welcome guide opens on first launch. Why the permission? It is needed to read window titles and to move windows. Nothing else is read: no network, none of your files, no window contents. See Privacy.

Settings

Four macOS settings. Fix them once.

Deskmap checks these live: in the welcome guide, in Settings › macOS Settings, and with an orange card on the map if one goes wrong later. In System Settings › Desktop & Dock:

SettingMust be
Automatically rearrange Spaces based on most recent useOff
When switching to an application, switch to a Space with open windowsOn
Displays have separate SpacesOn
Group windows by applicationOff (recommended)
The setup card in Deskmap lists each macOS setting and says which one is wrong.The setup card in Deskmap lists each macOS setting and says which one is wrong.
The settings card tells you exactly which setting is wrong.

One more, per app

macOS won't let any app check this one: for every app you are going to pin, right-click its Dock icon › Options › Assign To → None. If macOS has assigned the app to a desktop itself, it will fight over the window.

Next: pin your first window in the user guide

Updating and removing

No updater. No leftovers.

Updating

Deskmap has no update check and never contacts a server. To update, download the newer release the same way and replace the app. What changed is listed in the changelog.

Remember that macOS asks for the Accessibility permission again after an update.

Uninstalling

Quit Deskmap (right-click the menu bar icon › Quit) and drag the app to the Trash. With Homebrew: brew uninstall --cask deskmap.

Your pins, profiles and backups stay in ~/Library/Application Support/Deskmap/. Delete that folder too and nothing is left behind.

Moving a window to another desktop uses private macOS functions, and a macOS update can break them. Deskmap then falls back to display and layout only, and tells you.

From source

Build it yourself.

You need the Xcode Command Line Tools (xcode-select --install) with Swift 5.9 or later. Xcode itself is not required.

$ git clone https://github.com/cnkndmr/Deskmap.git Deskmap
$ cd Deskmap
$ make app                  # release build → build/Deskmap.app
$ open build/Deskmap.app    # or: make run

For a permanent install, copy the app to /Applications and turn on Launch at login in Settings › General. That checkbox registers whichever copy is running, so move the app first if you ran it from build/.