melreusthe rectangle field manual

Fixes

Settings and Shortcuts Reset on Every Launch

Preferences live in three different places, and each of them has a way of quietly undoing your work. Knowing which one you are fighting takes about a minute.

14 Jul 2026 · 7 min read · updated for current macOS

1Preference domaincom.knollsoft.Rectangle in NSUserDefaults — the live store2Terminal writesLoaded only at launch, so a restart is mandatory3RectangleConfig.jsonRead once at launch, then renamed with a timestamp4Homebrew leftoversA stale zapped-away plist can be restored underneath you5Export before you experimentJSON export from the settings pane
The three storage locations and the order in which they overwrite each other.

Where the configuration actually lives

Three distinct places, and confusing them is the source of most reports in this category.

LocationPurposeNotes
<code>com.knollsoft.Rectangle</code> preference domainThe live settings storeRead at launch, written as you change things in the UI
<code>~/Library/Preferences/com.knollsoft.Rectangle.plist</code>The file backing that domainDo not edit by hand while the app is running — the cache will overwrite you
<code>~/Library/Application Support/Rectangle/RectangleConfig.json</code>An import fileIf present at launch it is applied, then renamed with a timestamp so it is not read again
The plist cache is why hand-editing fails

macOS caches preference domains in memory. Editing the plist file directly while the app is running means your changes are overwritten the moment anything writes back. Always quit the app first, or use <code>defaults write</code>, which goes through the cache correctly.

Terminal commands appear to do nothing

Almost always one of three things. Values are read at application startup, so a change made while the app is running has no effect until it is relaunched — this is by design and catches nearly everyone the first time.

# write, then actually restart the app
defaults write com.knollsoft.Rectangle gapSize -float 8
killall Rectangle && open -a Rectangle

# verify what is stored
defaults read com.knollsoft.Rectangle gapSize

# dump everything, to see what is really set
defaults read com.knollsoft.Rectangle

The second cause is the wrong bundle identifier. Rectangle Pro stores its preferences under <code>com.knollsoft.Hookshot</code>; commands aimed at the free app's domain on a Pro install succeed, write a value nothing reads, and produce no error.

The third is a type mismatch. A key expecting a float given an integer, or a boolean given a string, may be ignored. Match the type shown in the reference: <code>-int</code>, <code>-float</code>, <code>-bool</code> and <code>-string</code> are not interchangeable.

Everything resets after each restart

If custom shortcuts survive within a session but revert on relaunch, the preference domain is not being written, or something is restoring an older copy over it.

The best-known cause is a Homebrew installation with leftovers from a previous version. The documented fix is to uninstall with the zap flag, which removes the associated preference files that a plain uninstall leaves behind, then reinstall clean:

brew uninstall --zap rectangle
brew install --cask rectangle

Other causes worth checking, in order of likelihood:

# is there an import file waiting to be applied?
ls -la ~/Library/Application\ Support/Rectangle/

# is the preferences file writable by you?
ls -la ~/Library/Preferences/com.knollsoft.Rectangle.plist

Using the JSON import deliberately

The behaviour that surprises people is intentional and useful once understood. Drop a config file at the documented path, launch the app, and it is applied; the file is then renamed with a timestamp so a subsequent launch does not reapply it. That makes it an import mechanism rather than a live configuration file — the right primitive for provisioning a new machine or pushing a standard layout to a team.

# provision a machine from a known-good config
mkdir -p ~/Library/Application\ Support/Rectangle
cp ~/dotfiles/RectangleConfig.json ~/Library/Application\ Support/Rectangle/
open -a Rectangle

# after launch the file is renamed, e.g.:
# RectangleConfig-2026-07-14-101532.json

If you want a config that genuinely reapplies at every login, do not fight the rename — copy the file into place from a login script before the app starts. Trying to make the app treat it as a live file will only produce the reset symptom described above.

Export before you experiment

The settings pane has import and export buttons. Export once, keep the file in your dotfiles, and every destructive step in every troubleshooting guide becomes reversible in ten seconds. The configuration sync guide covers doing this across several Macs.

Version compatibility of stored shortcuts

Shortcut storage changed format in v0.41. A preferences file written by a newer version will not load correctly in an older one, which matters if you are downgrading to work around a regression. Downgrading is a legitimate diagnostic step, but keep a JSON export from before the downgrade rather than expecting the plist to travel backwards.

When testing whether a problem is configuration or code, the cleanest experiment is to move the preference file aside entirely and launch with defaults:

killall Rectangle
mv ~/Library/Preferences/com.knollsoft.Rectangle.plist ~/Desktop/rect-backup.plist
defaults delete com.knollsoft.Rectangle 2>/dev/null
open -a Rectangle   # now running on stock defaults

If the problem disappears with stock defaults, it is something in your configuration, and reintroducing settings a few at a time will find it. If it persists, the configuration was never the issue and the issue tracker is the next stop.

Get the current build

Rectangle is free and open source. Everything documented here works in the standard build.

Download from rectangleapp.com

Questions

Why do terminal settings need an app restart?

Values are read at startup. This is documented behaviour, not a bug, and it is the most common reason a correct command appears to do nothing.

Where are my custom shortcuts stored?

In the preference domain, backed by the plist in ~/Library/Preferences. Export them to JSON from the settings pane for anything you care about keeping.

What does brew zap actually remove?

The preference and support files a plain uninstall leaves behind. It is the documented answer to settings not persisting on Homebrew installs.

Can I keep one configuration across several Macs?

Yes, via the JSON export. See the configuration backup and sync guide.