banner
Hyacine🦄

Hyacine🦄

I have special macOS new machine environment configuration tips

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 not historically 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 a Thunderbolt bridge direct connection. This article ends here. (Escape)

Cold Start#

First, the essential software; otherwise, there's nothing to discuss below:

https://ghfast.top/https://github.com/xishang0128/sparkle/releases/download/1.6.4/sparkle-macos-1.6.4-arm64.pkg

System Settings#

Next, for a better experience later, we need to change some system settings. The command line should be able to change everything, but I can't find some 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 do not plan to use a third-party app to limit the charging limit, it is best to enable the system's built-in optimized battery charging by clicking the icon next to battery health in the pop-up window. Some third-party charging limit tools explicitly require turning off optimized battery charging; however, I haven't noticed any impact by not turning it off.
    • If you want your Mac to act as a server while plugged in, you can enable everything except for HDR power saving, otherwise the screen is wasted.
  • General

    A lot of things are crammed in here.

    • About This Mac: Let's change the name first. It's best to make it 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 sync is a big pit. By default, desktop and document sync is enabled, but free users only have 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, it should be enabled. Enable everyone as needed; currently, iOS limits everyone to automatically turn off after 10 minutes, but macOS hasn't followed suit yet. 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 installation.
    • Sharing: If you want this computer to be a full-time/part-time server, most of these should be enabled. 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 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, 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 a must. Otherwise, you have to press down hard on the trackpad to drag. There's 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 if you can't find the mouse, you can shake it quickly, and macOS will help 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 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 unrealistic, it just goes black), and then automatically hides it when an external display is detected and switched to full screen. But when I left a message to a developer before, 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 don't think anyone uses it anymore.

  • 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 trip.

  • Appearance

    This was changed during initialization when the theme color was set. 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 the 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 to the maximum. By default, it won't animate if not enlarged.
    • Use magical effects when minimizing windows: 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 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 space at the edges of tiled windows.
    • Hot Corners: A good feature. It somewhat solves the problem of the mouse lacking trackpad gestures and difficult-to-remember shortcuts. To migrate 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. Just follow personal habits.
  • Siri / AI

    Not very useful on Mac. It seems other devices aren't 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 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 be opened here. There is a way to restore the "Any Source" option in the app sources; 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 the keyboard light, shortcuts, and Fn click functions. If the external keyboard has Fn key definitions, it is 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 have strict requirements for 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, with multi-touch and gestures working perfectly; a cheap alternative 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.

End of the article! Finally configured!

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 default standard; most repos prefer to provide software packages via brew, far exceeding MacPorts and others.

A considerable number of people find brew so convenient that they have ported it to some Linux systems, which I won't elaborate on here.

Common Apps#

Alright, quickly after we finish, 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 text 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. The default macOS 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 like to call it a domestic alternative to Postman, but I don't think it's entirely in the same category. 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 limit.
  • cherry-studio: Famous LLM frontend.
  • cursor: This should need no further explanation. I just use VSCode sync for free, syncing 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. I now use ffprobe for checking 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, and it can also be done through brew, but brew is too slow without multi-threading.
  • jordanbaird-ice: Not for Mac without a notch, used to fix the issue of macOS menu bar icons spilling over behind the notch.
  • keycastr: Displays the keys you press on the screen. Useful for recording.
  • lark: Overseas version of Feishu, data does not sync.
  • linear-linear: The name was taken, which is hilarious. Project management software; the free version is completely sufficient for personal use. GitHub integration is also good. In simple terms, 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 it be used for gaming, but also for 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; may switch to wireguard in the future.
  • 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 scenarios pursuing extreme performance.

CLI Tools#

  • uv: Amazing! Never installed Python directly again.
  • git: Who dares not install it? The system's built-in version is too old, so I generally install another one.
  • nvm, rbenv: Much worse than uv; previously used pyenv, both are used to solve language version issues.
  • pnpm: Used to replace npm. Yarn seems to be used less frequently now.
  • ffmpeg: Even if not installed, there's a high probability of encountering dependencies during compilation, not to mention some applications come with ffmpeg dynamic libraries. I've gotten used to using the command line for simple conversions (.
  • doggo: My favorite 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 make it easier, GitHub officially 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

There are also some advanced techniques; without considering multi-user operating systems, a single user can set multiple SSH aliases to flexibly switch between multiple identities for different repos.

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 use the default user (since an alias is configured, the git@ part can also be omitted. You can also configure a shorter alias, like gh);
  • Using git clone nahida:Homebrew/homebrew-cask.git will use the private key corresponding to the nahida configuration;
  • Using git clone hyacine:Homebrew/homebrew-cask.git will use the private key corresponding to the hyacine configuration.

These configurations can also be used for command line SSH commands (obviously, otherwise why would it be called ssh_config) and can seamlessly integrate with VSCode's SSH. I won't elaborate on overly detailed content.

Apps downloaded from the Mac App Store#

  • Office 365
  • WeChat
  • QQ
  • 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.

Loading...
Ownership of this post data is guaranteed by blockchain and smart contracts to the creator alone.