The author generally does not recommend directly migrating data 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 never been known for their 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 Thunderbolt Bridge. This article concludes here. (Escape)
Cold Start#
First, essential software is required; otherwise, there's nothing to discuss below:
System Settings#
Next, to ensure a good experience later, we need to change some system settings. The command line should be able to change everything, 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 turning it on in the pop-up. Some third-party charging limit tools explicitly require turning off optimized battery charging; however, it seems that I haven't had any issues keeping it on.
- If you want the Mac to act as a server while plugged in, you can turn everything on
except for HDR power saving; otherwise, the screen is wasted.
-
General
A large chunk of settings is 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 Space: iCloud synchronization is a big pitfall. By default, desktop and documents synchronization is enabled, but free users only get 5GB, so it's recommended to turn it off. For programmers, especially front-end projects placed on the desktop, the 4K performance of node modules will definitely teach the sync drive a lesson...
Check how much macOS + system data + developer occupies, and you'll know that Windows has already done a good job controlling system size. - AirDrop / Handoff: Generally, it should be enabled. Enable everyone as needed; currently, iOS limits everyone to automatically turn off after 10 minutes, but Mac has not followed suit. AirPlay allows you to project your iPhone / iPad onto the Mac.
- Login Items and Extensions: A new machine shouldn't have much here; you can check after installation.
- Sharing: If you want this computer to be a full-time/part-time server, you will most likely need to enable this. I won't elaborate on 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 very useful features here. Indeed, there are a few basic settings that are almost always enabled, especially those related to the mouse pointer.
- Pointer Control: Mouse and Trackpad - Trackpad Options, use trackpad drag + three-finger drag, which is basically a must. 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 the pointer feels too small, so I can enlarge it a bit. There's also a gesture where you can quickly shake the mouse when you can't find 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 see it now
, sad.
-
Spotlight
It doesn't feel as good to use now, after all these years, not many new features have been added.
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, as well as 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, and 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 with 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.
-
Wallpaper
macOS changes to a new batch with each major version. The current version is shot by Apple's own team renting helicopters worldwide, essentially a public-funded tour.
-
Appearance
This was changed during initialization to modify the theme color. Only the behavior of clicking the scroll bar is somewhat counterintuitive, which can be changed.
-
Displays
Sidecar and Universal Control can be enabled here. If the default scaling isn't fine enough, you can click advanced and enable list display resolution. If conditions allow, I recommend using Better Display; the effect is excellent.
-
Desktop and Dock
- Dock icon size: Generally, just pull it all the way up. By default, it won't animate if not enlarged.
- Use - Magical Effect when minimizing windows: This is also not enabled by default. It's been a signature animation for many years.
However, macOS window management is so poor that 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 Switcher: Not recommended. The iPad can only use this, but it's unnecessary for 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 empty edges when tiling windows.
- Hot Corners: A good feature. It somewhat solves the problem of the mouse not having trackpad gestures and difficult-to-remember shortcuts. To migrate my Windows habits, I generally set the bottom left corner to Launchpad, bottom right corner to Show Desktop, top left corner to Mission Control, and top right corner to Current App. In short, set it according to personal habits.
-
Siri / AI
Not very useful on Mac.
It seems that other devices are also not very useful. -
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 screen saver 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'll visit the most. All app permissions are managed here, and all unsigned apps must also be opened here. In the application sources, there is a way to restore the "Any Source" option; 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
There's not much to say, so I'll combine it. Keyboard settings can change keyboard backlighting, shortcuts, and Fn click functions. If the external keyboard has Fn key definitions, they are the same as the built-in Fn. Input method settings can also be changed here.
In mouse settings, the scroll wheel direction is generally not changed; if changed, the trackpad will reverse, so I usually use third-party software. For gaming, you can go to advanced options and turn off mouse acceleration.
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 fine; a replacement from Huaqiangbei is about 200 yuan. It just lacks the useless 3D Touch.
In settings, you generally need to enable tap to click; otherwise, you have to press down until you're exhausted. Then in more gestures, if three-finger drag is enabled, the gesture for the control center will change to four-finger.
That's it! Finally configured!
Package Manager#
Why Install a Package Manager?#
Rather, using a package manager for installation aligns better 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 default standard; most repos prefer to provide software packages through brew, far surpassing MacPorts and others.
A considerable number of people find brew so useful that they have ported it to some Linux systems, which I won't elaborate on here.
Common Apps#
Alright, let's quickly install everything using 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 editing software 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 the 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 the Chinese 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 learned about it recently. If you don't like typing commands, you can browse around.
- battery: A 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 and does not limit the number of activations.
- cherry-studio: Famous LLM frontend.
- cursor: This should go without saying.
I just use VSCode sync for free; I sync code first on the new machine 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. When I really check metadata, I now use
ffprobe
, 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 installations; it can also all go through brew, but brew is too slow without multi-threading.
- jordanbaird-ice: For non-notch Mac, it can jump, used to help macOS menu bar icons overflow behind the notch.
- keycastr: Displays the keys you press on the screen. Useful for screen recording.
- lark: The overseas version of Feishu, data does not sync.
- linear-linear: The name was taken, which is 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 play games 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 it play games, 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 separately on macOS.
- signal: End-to-end encrypted IM.
- snipaste: Actually, you can use pixpin.
- tailscale: Came over from zerotier; may 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 demand extreme performance.
CLI Tools#
- uv: Amazing! I never installed Python directly again.
- git:
Who dares not install it?The system's built-in version is too old; I generally install a new one. - nvm, rbenv: Much worse than uv; previously used pyenv, which is used to solve language version issues.
- 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. For simple conversions, I've gotten used to typing commands (.
- doggo: My most familiar DNS CLI client, very useful for network debugging. 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 more security, you can use a different key for each 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.
For details, see https://docs.github.com/zh/authentication/troubleshooting-ssh/using-ssh-over-the-https-port
There are also some advanced techniques; without considering multi-user operating systems, a single user can set multiple SSH aliases to switch between different repos flexibly.
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
is 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
corresponds to the private key for the nahida configuration; - Using
git clone hyacine:Homebrew/homebrew-cask.git
corresponds to the private key for the hyacine configuration.
These configurations can also be used for command line SSH commands (obviously, otherwise why is it 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; buy iStat Menus instead)
- Xiaomi Interconnect Service
- O+ Interconnect
- 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.