The author generally does not recommend migrating data directly from old devices. The migration process may not only introduce some unexpected bugs but also copy over a lot of junk and temporary files. A large amount of 4K random read/write is also very unfriendly to Wi-Fi connection speeds, especially since Apple devices have historically not excelled in wireless performance. This principle actually applies not only to Macs but also to Windows / Android / iOS devices. However, if the new Mac is large enough and the old one is also a Mac, you can try connecting directly with a Thunderbolt bridge. This concludes the article. (Escape)
Cold Start#
First, the essential software; otherwise, there's nothing to discuss below:
System Settings#
Next, to ensure a good experience later, we need to change some system settings. Most of these can be changed via the command line, but I can't find some of the newer settings, so let's do it manually.
-
Battery
- Since the Mac has such good battery life, it should be taken out, so you can enable automatic power-saving when unplugged and automatic high performance when plugged in. (Higher energy consumption seems to be exclusive to the Max series.)
- If you don't plan to use a third-party app to limit the charging limit, it's best to enable the system's built-in optimized battery charging by clicking the icon next to battery health and enabling it in the pop-up. Some third-party charging limit tools explicitly require disabling optimized battery charging; however, I haven't noticed any impact by not disabling it.
- If you want your Mac to act as a server when plugged in, you can enable everything
except for HDR power saving, otherwise the screen is wasted.
-
General
A large number of items are all crammed in here.
- About This Mac: Let's change the name first. It's best to make the device recognizable; the name here affects the hostname, device discovery, and Apple ID device management. I change it every time. If the serial number is from a second-hand device, you can spend 3 yuan on some WeChat public accounts to get a detailed report to check for any issues.
- Storage: iCloud syncing is a big pit. By default, desktop and documents syncing is enabled, but free users only get 5GB, so it's recommended to turn it off. For programmers, especially front-end projects, if placed on the desktop, the 4K performance of node modules will definitely make the sync drive suffer...
Check how much space macOS + system data + developer occupies, and you'll know that Windows has already done a good job controlling system size. - AirDrop / Handoff: Generally, this should be enabled. Enable everyone as appropriate; currently, iOS limits everyone to automatically turn off after 10 minutes, but macOS hasn't followed suit. AirPlay allows you to project your iPhone / iPad onto your Mac.
- Login Items and Extensions: A new machine shouldn't have much here; you can check after installing.
- Sharing: If you want this computer to be a full-time/part-time server, you'll likely need to enable most of these. I won't elaborate on the specific usage; we can discuss it in detail later if there's an opportunity.
- Startup Disk: Actually, you can install the system on an external hard drive...
- Time Machine: Loved by those who like it.
- Autofill and Passwords: Amazing. But not as good as iOS. Browser plugins on the desktop are more important, and third-party apps can also take over directly; currently, it seems that no third-party password manager uses this API.
-
Accessibility
Many people say that Apple often hides some particularly useful features here. Indeed, there are a few basic settings, especially related to the mouse pointer, that are almost always enabled.
- Pointer Control: Mouse and Trackpad - Trackpad Options, use trackpad drag + three-finger drag, which is basically essential. Otherwise, you have to press down hard on the trackpad to drag. There is even a project on GitHub that ports this gesture to Windows/Linux.
- Display: Here you can change the pointer size; for example, on my 4K screen, sometimes I feel the pointer is too small, so I can enlarge it a bit. There's also a gesture; if you can't find the mouse, you can quickly shake it, and macOS will help you enlarge the pointer.
- Audio: Some accessibility features related to AirPods are placed here. But my headphones are broken, so I can't check it now
, sad.
-
Spotlight
It doesn't feel as useful now; after all, it hasn't added many new features over the years.
I wonder if WWDC will integrate AI. It seems that more users are currently using RayCast, but I don't use it much. ( ) -
Control Center
The naming is poor; it should be called Control Center and Menu Bar. Some people might not find the menu bar settings because of this name. Here you can set whether icons are displayed in the menu bar or control center and fine-tune the display style of some buttons.
I've always wanted a feature that keeps the menu bar displayed on the built-in screen at all times (because full screen has a notch, whether to display it doesn't affect vertical height; if it's not realistic, it just goes black), and then automatically hides it when an external display is detected and switched to full screen. But previously, when I left a message to a developer, the customer service didn't understand, and the reply sounded like a personal machine. I wanted to open a pit and write it myself, but it seems a bit difficult.
-
Screen Saver
Ugh. I doubt anyone uses it anymore.
-
Wallpaper
macOS changes a batch of new wallpapers with each major version. The current version is from Apple's own team, which rented helicopters worldwide to take photos; it's essentially a public-funded trip.
-
Appearance
This was changed during initialization when the theme color was modified. Only the behavior of clicking the scroll bar is a bit different from intuition, which can be adjusted.
-
Displays
Sidecar and Universal Control can be enabled here. If the default scaling is not fine enough, you can click Advanced and enable "Show resolutions in list." If conditions allow, I recommend using Better Display; the effect is excellent.
-
Desktop and Dock
- Dock icon size: Generally, just set it to maximum. By default, it won't animate if not enlarged.
- Minimize windows using - Magical effect: This is also not enabled by default. It's been a signature animation for many years.
However, macOS window management is too poor, so I rarely use minimize ( - Minimize to application icon: Not enabled by default; I personally prefer to enable it.
- Automatically hide the Dock: Not enabled by default; I personally prefer to enable it.
- App Exposé: Not recommended. The iPad can only use this, but it's unnecessary for the Mac. It can be placed in the control center; just switch it when needed.
- Widgets: A good thing. But to unlock the full version, you need an iPhone.
- Window Tiling: 15 years behind Windows. Remember to turn off the blank edges when tiling windows.
- Hot Corners: A good feature. It somewhat solves the problem of the mouse not having trackpad gestures and the difficulty of remembering shortcuts. To migrate my Windows habits, I generally set the bottom left corner to Launchpad, bottom right to Show Desktop, top left to Mission Control, and top right to Current App. In short, set it according to personal habits.
-
Siri / AI
Not very useful on Mac.
It seems that other devices are not very useful either. -
Sound
If you don't want to be startled by a sound when starting up, you can turn off the startup sound.
-
Lock Screen
The screensaver is off by default. You can also change the display off time for the monitor.
-
Privacy and Security
Trust me, this is definitely the place you will visit the most. All app permissions are managed here, and all unsigned apps must also be opened here. There is a way to restore the "Any Source" option in the app source; I won't elaborate on that here. For accessories, if the computer is not taken out, you can set it to allow by default.
-
Keyboard, Mouse, and Trackpad
Not much to say, so I’ll combine them. Keyboard settings can change keyboard light, shortcuts, and Fn single-click functions. If the external keyboard has defined Fn key positions, they are the same as the built-in Fn. Input method settings can also be changed here.
In mouse settings, the scroll direction is generally not changed; if changed, the trackpad will reverse, so I usually use third-party software. For gaming, you can turn off mouse acceleration in advanced options.
The trackpad is the most important. macOS actually doesn't discriminate against trackpads; it's just that no one wants to use external ones on Windows, so fewer people make them. Modern precision trackpads can be used, and multi-touch and gestures work perfectly; a substitute from Huaqiangbei is about 200 yuan. It just lacks the useless 3D Touch.
In settings, you generally need to enable "Tap to Click," or you'll have to press down until you're exhausted. Then in more gestures, if you enabled three-finger drag earlier, the gesture for the control center will change to four-finger.
Finished! Finally configured everything.
Package Manager#
Why Install a Package Manager?#
Rather, using a package manager for installation is more in line with *nix and developer usage habits. Achieving the same operation, CLI is inherently much more efficient and easier to automate than GUI. On macOS, the brew package manager is the de facto standard; most repos prefer brew as the first choice for providing software packages, far surpassing MacPorts and others.
A considerable number of people find brew so useful that they have ported it to some Linux systems; I won't elaborate on that here.
Common Apps#
Alright, quickly after we set up, let's install everything with brew:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
Next, I will try to comment on the packages that are not immediately obvious. If you don't need them, you can directly copy them into a line editor to delete the corresponding lines.
Cask:
- 1password: The most expensive (good?) password manager.
Actually, open-source software maintainers can apply for a free version... - alt-tab: Similar to Windows' Alt Tab page. macOS's default cmd+tab logic can only switch between different apps; to switch between different windows of the same app, you need to press cmd + `.
- android-platform-tools: adb/fastboot. Essential for Android development/hacking.
- apifox: Some people like to call it a domestic alternative to Postman, but I don't think it's entirely in the same league. Of course, it can also be used as Postman (.
- applite: The GUI for brew, I just found out recently. If you don't like typing commands, you can browse around.
- battery: Minimalist 80% charging limit.
- betterdisplay: The best display management software for macOS. There isn't even a replacement on Windows. The licensing model is extremely friendly, with no activation limits.
- cherry-studio: Famous LLM frontend.
- cursor: This should go without saying.
I just use VSCode sync for free; I sync code on the new machine first before importing. - discord: Used less, but many developer communities love it; I check it occasionally.
- docker: No need to say more.
- feishu: Same as above.
- firefox: Same as above.
- font-cascadia-code: Microsoft is great.
- google-chrome:
Who dares not install it for web development? - iina: A player, decent enough. I now use
ffprobe
for metadata, sigh. - input-source-pro: Amazing! Automatically switches input methods. Switching input methods on macOS can be a bit painful.
- jetbrains-toolbox: I’m used to using it for JB; it can also all go through brew, but brew is too slow without multi-threading.
- jordanbaird-ice: Not for Mac with a notch; it’s used to prevent macOS menu bar icons from spilling over behind the notch.
- keycastr: Displays the keys you press on the screen. Useful for recording.
- lark: The overseas version of Feishu; data does not sync.
- linear-linear: The name was taken; it’s hilarious. Project progress management software; the free version is completely sufficient for personal use. GitHub integration is also good. Simply put, it's an advanced to-do list.
- lm-studio: Famous LLM GUI backend.
- moonlight:
I want to game on Mac - obs: I’m used to using it for recording; I haven't tried live streaming on Mac yet.
- obsidian: No need to say more.
- ollama: Famous LLM CLI backend.
- parsec: Not only can you game, but it can also boost productivity. Moonlight cannot share the clipboard, but parsec can.
- playcover-community: Star Rail launch!
- rustdesk: Now you know how afraid I am of disconnections (actually, there are two or three more).
- scroll-reverser: Reverses the mouse scroll direction on macOS.
- signal: End-to-end encrypted IM.
- snipaste: Actually, you can use pixpin.
- tailscale: Came over from zerotier; might switch to wireguard later.
- tencent-lemon: Very conscientious.
- tencent-meeting: Everyone is using it.
- typora: Bought the genuine version to support it.
- visual-studio-code: No need to say more.
- vlc: A conscientious player.
- warp:
AI-powered terminal - windterm: SSH client, now supports using sync drives.
- zed: Rust editor, suitable for situations that pursue extreme performance.
CLI Tools#
- uv: Amazing! I haven't installed Python directly since.
- git:
Who dares not install it?The system's built-in version is too old, so I generally install a new one. - nvm, rbenv: Much worse than uv; I previously used pyenv, which is used to solve version issues of the language itself.
- pnpm: Used to replace npm. Yarn seems to be used less now.
- ffmpeg: Even if you don't install it, there's a high probability you'll encounter dependencies during compilation, not to mention some applications come with ffmpeg dynamic libraries. I've gotten used to typing commands for simple conversions (.
- doggo: My favorite DNS CLI client; very useful for network debugging. Other similar tools include the classic dig and the modern q/dog (written in Rust; doggo is its community-go rewrite).
- wget: Downloading files via command line is more straightforward than curl. For web debugging, I still use curl more often.
brew install --cask \
1password \
alt-tab \
android-platform-tools \
apifox \
applite \
battery \
betterdisplay \
cherry-studio \
cursor \
discord \
docker \
feishu \
firefox \
font-cascadia-code \
google-chrome \
iina \
input-source-pro \
jetbrains-toolbox \
jordanbaird-ice \
keycastr \
lark \
linear-linear \
lm-studio \
moonlight \
obs \
obsidian \
ollama \
parsec \
playcover-community \
rustdesk \
scroll-reverser \
signal \
snipaste \
tailscale \
tencent-lemon \
tencent-meeting \
typora \
visual-studio-code \
vlc \
warp \
windterm \
zed
# CLI tools
brew install uv git nvm wget pnpm rbenv
brew install doggo ffmpeg
# Oh My Zsh
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
# The Three Giants of Scripting Languages (¿
uv python install
nvm install --lts
rbenv install -l
rbenv install 3.4.3 # Generally install the latest stable version
# Remember to change! Don't use mine!
git config --global user.name Nahida
git config --global user.email [email protected]
# For security, you can use one key per machine; if you're too lazy to set it up, you can use the old one. But using a new one is more convenient?
ssh-keygen -t ed25519 -C "[email protected]"
Git Configuration#
Some proxy environments may ban access to port 22 for security reasons. To facilitate this, GitHub has created a forwarding from ssh.github.com:443 to github.com:22.
See https://docs.github.com/zh/authentication/troubleshooting-ssh/using-ssh-over-the-https-port for details.
There are also some advanced techniques; without considering multi-user scenarios on the operating system, if a single user wants to switch between multiple identities for different repos flexibly, they can set multiple SSH aliases and then use SSH connections.
Host github.com
HostName ssh.github.com
Port 443
User git
IdentityFile ~/.ssh/id_ed25519 # Change to your location; this is the default location generated.
Host nahida
HostName ssh.github.com
Port 443
User git
IdentityFile ~/.ssh/id_ed25519_nahida # Change to the corresponding user's private key; cannot be duplicated.
Host hyacine
HostName ssh.github.com
Port 443
User git
IdentityFile ~/.ssh/id_ed25519_hyacine # Change to the corresponding user's private key; cannot be duplicated.
In this way:
- Using
git clone [email protected]:Homebrew/homebrew-cask.git
will be the default user (since an alias is configured, thegit@
part can also be omitted. You can also configure a shorter alias, likegh
); - Using
git clone nahida:Homebrew/homebrew-cask.git
will correspond to the private key for the nahida configuration; - Using
git clone hyacine:Homebrew/homebrew-cask.git
will correspond to the private key for the hyacine configuration.
These configurations can also be used for command line SSH commands (obviously, otherwise why would it be called and can seamlessly integrate with VSCode's SSH. I won't elaborate on overly detailed content.ssh_config
)
Apps Downloaded from the Mac App Store#
- Office 365
- FastZip
- PasteNow
- NetEase Cloud Music
- Mijia
- OneDrive
- iStatistica Pro (don't buy it; just buy iStat Menus)
- Xiaomi IoT Services
- O+ IoT
- Pushdeer
- Speedtest
- Blackmagic Disk Speed Test
- LocalSend
- Speedy
- Shadowrocket (?)
Apps downloaded from the App Store generally use fewer permissions compared to those installed via dmg / pkg, undergo stricter reviews, and the sandbox ensures data isolation and security.