MainspringGuides › Sync settings
macOS Guide

How to Sync Settings Across Two Macs

Updated August 2026 · 3 min read

Two Macs and one set of habits. iCloud carries more between them than most people realise, and stops short in a few specific places. Here is the split, and the practical way to handle everything on the wrong side of it.

What iCloud already syncs

Sign both Macs into the same Apple Account and turn these on in System Settings → Apple Account → iCloud:

That covers more than people expect. What it deliberately does not cover is system settings and app preferences.

What it does not sync

Dock layout, Finder settings, keyboard repeat rates, trackpad configuration, hidden preferences, menu bar arrangement, login items and nearly every third-party app's configuration. These are per machine by design, because two Macs are often used differently — a desktop and a laptop rarely want the same trackpad speed.

The practical answer: a setup script

Keep the settings you care about in a shell script, in a synced folder, and run it on any Mac. This is the approach that scales and survives reinstalls:

# ~/Documents/mac-setup.sh
#!/bin/bash
defaults write NSGlobalDomain KeyRepeat -int 2
defaults write NSGlobalDomain InitialKeyRepeat -int 15
defaults write NSGlobalDomain AppleShowAllExtensions -bool true
defaults write com.apple.dock autohide-delay -float 0
defaults write com.apple.dock show-recents -bool false
defaults write com.apple.finder ShowPathbar -bool true
defaults write com.apple.screencapture disable-shadow -bool true
killall Dock; killall Finder; killall SystemUIServer
# make it runnable, then run it on the second Mac
chmod +x ~/Documents/mac-setup.sh
~/Documents/mac-setup.sh

Write a matching undo script with defaults delete lines while you are at it. Ten minutes now, and every future Mac is configured in one command.

Copying preference files directly

For an individual app, the preference file can be copied between Macs. Quit the app on both machines first, or the running copy will overwrite what you paste:

# find the file
ls ~/Library/Preferences | grep -i appname

# copy it to the other Mac, then
killall cfprefsd

Two cautions. Some preference files contain machine-specific data such as window positions and device identifiers, which can behave oddly on a different display setup. And sandboxed apps keep theirs in ~/Library/Containers/<bundle id>/Data/Library/Preferences instead.

Setting up the second Mac from the first

When the second machine is new, Migration Assistant can bring across applications, user accounts and system settings selectively — you choose which categories. Bringing settings and apps but not files gives you a familiar machine without duplicating storage. It works over Wi-Fi, cable or from a Time Machine backup, and you can run it after setup rather than during.

Third-party apps: check before you copy

Many apps sync their own settings and you do not need to do anything. Browsers sync through their own account, most editors have a settings-sync feature, and terminal configuration usually lives in dotfiles in your home folder, which are easy to keep in a repository or a synced folder:

# the usual suspects
ls -la ~ | grep -E "^\." | head -20

Putting .zshrc, .gitconfig and friends in a synced folder and symlinking them into place is the standard approach, and it means a new Mac inherits your shell setup in one command rather than being reconstructed from memory.

The one to keep separate

Login items. A desktop and a laptop rarely want the same things launching, and copying that list across is how a laptop ends up running six background utilities it has no use for. Set it per machine, in System Settings → General → Login Items.

One licence, three Macs

Mainspring covers three Macs on a single $29 licence, and applying the same recipe on each one takes a click rather than a script you have to maintain.

Try Mainspring free →

Signed & notarized by Apple · 1-day free trial · $29 once