I'm getting a new Mac in a few days, and in an attempt to end with a cleaner install, I'm starting from scratch. What settings / apps do HN users change / install when they first set up their computers?
What I have found very liberating recently is to try and keep things pretty vanilla.
No point fighting against the world - just accept anything that seems weird or odd and doesn’t match up with how you think it should work. Just go with the flow.
My computer is just a tool for getting things done - it’s not an expression of my personality.
100% agree! When I switched form windows to mac I basically decided this, just go with the mac ways from day one and forget what you know about windows.. best decision ever
> My computer is just a tool for getting things done - it’s not an expression of my personality.
And this is one of the things that makes me a little wistful as I get older. My computers are like my cars. I remember my first ones, the quest for a bargain or the right parts, and each had its own personality.
Now, they're all blandly similar and are means to an end. Sure, they're better by all objective measures, but I don't have the time to relentless customize them to my liking and imprint them with my personality.
But it's something I use a lot everyday and that brings me much joy. Any small adjustment can be a substantial quality-of-life improvement.
It's hard swimming upstream, but there's a balance.
One thing I'm torn about is Apple's passive-aggressive “natural” scroll direction. It annoyed me a great deal that Apple changed that and chose this word, but it's something I could have adapted to and now have to deal with all Macs that aren't my own.
I am on the opposite end of most of the other responses.
I *NEVER* start from a clean install of my macOS systems. I fact, I consider this one of macOS's super powers. I love having a heavily customized environment and I just want my system to move with me as I get new hardware.
But let me explain what I mean:
* I use a one of add-ons, custom utilities, many applications.
* I have, VS Code, BBEdit, Brew
* 10 third-party apps controlled by Bartender in my menu bar, .
* have full, nodejs and python development environments.
* have Postrges
* I have much of Office 365 installed
* I could go on ...
When I started using Mac's in the mid-1990's I came from MS-DOS, Windows and OS/2. I was amazed that I could simply do a drag-and-drop file copy of a Mac OS 7 Startup Disk to another disk and boot the system. This also worked by attaching a new computer to your old via SCSI Target Disk Mode. So I could copy my old system to my new system and be up and running in an identical environment in almost no time.
Since then, things have gotten more complicated. You would have to use a tool like SuperDuper or Carbon Copy Cloner to copy your system. But it still worked.
More recently, the Apples M-series processor computer mean that you pretty much have to use Migration Assistant. But still you get your whole system migrated. When I moved to an M1 MacBook, I did a deep dive to clean up my system. I found configuration files with creation dates back to 1998
Let that sink in. 1998
I have in some sense been now been using the SAME system for over 25 years. I actually think it would be a few more years, but I think I did a copy operation that reset the creation dates on my files in 1998.
I am not going to say this has always been easy. Sometimes, I have had to use my deep knowledge of the system to keep going. But it has been at least 15 years since I had any significant issues during migration.
I will also say, while my preferred system is macOS, I am a heavy user of Windows, Linux servers and Linux KDE Desktops. I can not imaging keeping a Windows or Linux system running so long.
I’m vaguely surprised not to see bettertouchtool yet. I am too used to three finger middle click on the touchpad and some other custom gestures to have anything else come first. Lots of others, but most covered already here.
How do people usually deal with the lack of middle click?
I only need a middle click for a few applications, and they always support it out of the box. I’m sure there are use cases for the Finder, but I guess I don’t know what they would be.
I maintain a Brewfile (https://github.com/Homebrew/homebrew-bundle) which contains the majority of the non-project specific applications that I like to install on any new Mac:
What's really nice is the `cask` & `mas` keywords allow you to install .dmg files & directly from the App Store.
---
While its not included in there yet, I've been experimenting with maintaining a private Homebrew tap which contains my ~/bin directory as opposed to shell aliases.
I would say almost the opposite, with the caveat that I don't think MacPorts is much better. I've grown to dread interacting with homebrew because it's increasingly opinionated with none of the benefits of being opinionated. Want to encode h.265 video? Brew still hasn't adopted an up-to-date libx265, so there's no NEON support. Want to use postgis? Welp you're stuck with Postgres 14. Want to do change anything about a package? Welp now you've gotta go track down whatever repository and go down that road instead of using command line arguments.
And bash? bash has one killer feature: readline. zsh has some interesting eye candy but still can't match readline's history search where you can anchor the search from an arbitrary point in the command string.
The only must have app I've found so far is Little Snitch (application firewall).
Beyond that most of the setup I've done on my daily drive is undoing the brain damage Apple's imparted with Sonoma. For all the bugs and enshittification perhaps the most difficult part has been that you simply can't find all of the settings in the System Settings app via its search. The new style keyboard navigation (which involves mercilessly clobbering UI widgets) is available under the accessibility page (where the old style keyboard navigation option used to live), but the less intrusive old style keyboard navigation is now under the keyboard page.
I forget why I disabled "show widgets in stage manager", but it had nothing to do with stage manager.
There are a few things that are worth changing from the command line: e.g. the new text input wigdet / cursor that provides the visual caps lock indication (and worse the occasional input source icon).
Edit: Oh yeah. An up-to-date sqlite is super helpful, as well as a more flexible terminal app (iTerm2 and/or WezTerm for me). And of course some fonts.
You can be very CVE aware and still out of date, and brew is plenty out of date. It's managed to become significantly less useful as it becomes increasingly opinionated. At this point it feels downright systemd like with its own launchd wrapper.
BTW compiling ffmpeg with the current version of libx265 (well, current within a few years) doubles the encoding performance on my M2 Pro.
Zsh is in base. Unlearning bash-isms is good.
Zsh is in the base system due to licensing (not technical) issues, just like UW pico. Usable history search and text editing trump faffing about with colorful autocomplete nonsense. At best the macos command line is useful for boostrapping a useful command line environment.
I almost forgot… sqlite. The bundled version is out of date and/or buggy. No foreign key constraints, no extensions, no strict tables, no thanks.
I usually maintain a little git repository `.dotfiles` with all my personal preferences and config files. Although it is designed to be made public, I didn't do it - I was too scared I forgot something :-) In this repo I also created subdirectories for automated setup scripts for different operating systems. It looks something like this:
docker
... custom docker files and scripts
etc
git
.gitconfig
.gitignore_global
ssh
hosts.d
config
vim
vimrc
zsh
... (multiple config files and dirs, e.g. powerlevel10k)
linux
artix
setup.sh
fedora
setup.sh
ubuntu
setup.sh
macos
setup.sh
common_functions.sh
All I need to do is install git, check out the repo and run the setup script of the current system - works for linux and macOS, although I don't use macOS that much any more. These Scripts are designed to be run multiple times without damaging anything.
Works out pretty well. For macOS I tried to automate as much as possible (via `brew` and `brew --cask` and for settings via `defaults write`), similar to all these repositories using this technique: https://dotfiles.github.io/inspiration/
As a rule of thumb I don't customize critical software because:
1. Upgrades often break customizations. And modern software upgrades all the time.
2. What I think I want, is rarely what I actually wind up using.
3. I know I won't write comprehensive documentation to guide other users...including my future self. In three years/months/weeks/days/hours I will be wondering what the hell I did. Particularly because of 2.
What I believe, is the skill of adapting myself to playing the software as it lies is more frequently more valuable than the skill of trying to predict how I will use it and the skills of figuring out how to customize it and debugging my customizations.
For me, customizations tend not to be sticky. There are exceptions. I still find the same set of Autocad aliases useful 30 years later...but those are command line (e.g. 'c' for 'copy' & 'cc' for 'circle' instead of 'c' for 'circle' and 'cp' for 'copy' because I use copy much more than circle and because /c is a left hand character and /p is a right hand character and my right hand is on the trackball. Also someone pointed out the left hand right hand thing to me, I'm probably not smart enough to figure that out myself...but I digress. I still have to customize Autocad everytime I use it on a different machine (and over 30 years I have to take off my socks to enumerate them all).
The tldr is that the average case is that customizations come with a promise of more work in the future and that there is little control of when that more work will need to be done.
I should add that other people's customizations are usually worse than the standard behavior because of documentations.
And the default behaviors are the simplest thing that might work.
I'm curious about this myself. Every Mac I've had since OSX came out in 2001 has been copied from the previous Mac. So there are probably some turds in the config swimming pool.
Agreed on calendar app. I still have a grandfathered in Fantastical license but I can’t bring myself to use it since
I’m not 100% sure what features I can use or not.
A lot of opinions on Nix here, but I manage a declarative configuration on my Mac that I now couldn’t live without. I have step by step instructions if you want to try it yourself. Many other folks have told me they find it useful too (almost 700 stars):
If you have the time and feel like it, you can use this opportunity to learn nix and install everything that way from day zero. No more brew-madness, and everything is in a git repository, so this will be the last setup that takes a long time. (Sure, you can burn much more time learning it, so only do this if you are fine with that.)
I never migrate from an old Mac (I like the idea of a clean, from-scratch setup), but the macOS defaults are annoying so I had to make a big checklist. Instead of trying to list all my custom prefs here, I'll just tick off some points you might want to consider.
* If you use FileVault and don't allow your Apple ID to control it, make sure to establish a specific place where you store the FileVault recovery key. You'll access it rarely (if ever), so if you don't have a standard place where you store secrets like that then you'll forget what you did with it.
* Rename the drive to something unique so you'll recognize this computer by its drive name. This is helpful if you login to other LAN Macs via SMB.
* For your username, consider using a handle instead of your actual name. Also, macOS by default will set the computer name using your Apple ID name ("Joe Schmoe's Macbook Pro") which you probably want to change.
* Thankfully recent macOSes allow you to shut off the startup boot chime instead of screwing around with SystemAudioVolume/BootAudio
Other system settings to adjust:
Battery/Energy Saver
Lock Screen (screen saver, display off, require password)
Hot Corners (when I leave my desk, I turn off the screen by flinging the cursor into a corner)
Firewall
AirDrop/Handoff (airplay receiver off, if you don't need it)
Dock (remove all apps, move to side, auto hide, etc)
Mission Control (I use multiple desktops with subject-based wallpapers)
Change the screenshots location (Cmd+Shift+5)
iCloud (turn off for apps that you don't want to sync)
Keyboard (Key nav on, turn off spelling if you don't need, add keyboards if you use multiple)
Trackpad (force click off, data detectors off)
Finder (sidebar, toolbar, quick actions - e.g. automator scripts)
Apps:
* Web browsers - adjust: new window/tab appearance, download location, autofill (off), search engine suggestions, enable the inspect/dev menu
* Little Snitch - migrate your prev ruleset and custom settings
* Sublime - my setup is complicated due to custom markdown settings and package conflicts
* On most apps I've purchased, the single-user license which allows the key on multiple computers for a single user (e.g. Little Snitch, Sublime, Acorn, etc). Best to keep your license keys organized just like 2FA/FileVault recovery keys.
* After apps are installed, you can adjust keyboard shortcuts (e.g. override the Quit item to Shift-Cmd-Q)
* I have my own way of installing certain cli tools (e.g. Golang, Nodejs, Flutter, etc) where I mimic a package manager (like Homebrew) but install at `~/cli`. If you do something similar, don't forget to `chmod 700 cli`.
* I use NixOS on servers but didn't like the drive partitioning madness on Mac, so I still use Homebrew for other things.
* Ruby/Cocoapods: 1) rbenv via Homebrew, 2) ruby via rbenv, 3) Cocoapods via gem.
* Python: via Mamba (though I hate the name miniforge3, and wish they'd standardized on mambaforge)
Finally, before wiping your old Mac (to sell or hand to Apple for service), have a checklist:
* Redundant backups? (Some ppl argue against a disk image via Disk Utility, but I like being able to copy/mount the dmg image. I don't like Time Machine.)
* If you log out/in with your Apple ID account on a different Mac (e.g. the old Mac), will the new Mac ask you for 2FA approval?
* Can you log into your Google account(s) on the new Mac?
* Did you migrate any stored logins from the old Mac (e.g. in keychain or browser)?
LinearMouse is an absolute requirement if I am plugging a mouse into macOS. I’m a huge Apple fanboy but the built in acceleration curve is absolutely maddening. Natural scroll direction also makes sense to me on a touchpad, but not a wheel. This program lets you keep the incredible touchpad experience while only changing scroll direction and acceleration curve on a mouse. It also enables universal back/forward with the side buttons.
Hyperkey turns caps lock into a modifier key (ctrl+alt+cmd) when held and keeps it as caps lock when tapped. I use this with Moom for my window management shortcuts.
I still find Alfred is better than Spotlight, which I bind to Cmd+Space and use for launching applications, and a lot of other miscellaneous things like locking the computer, shutting down, reboot, easy access calculator, finding files, etc.
I’ve switched to Safari pretty much full time, because Apple Pay and the integration with iMessage for SMS login codes is worth it on top of the better battery life. The AdGuard extension works pretty well for ad blocking, and the only other extensions I have are 1Password and DarkReader. It’s not always a smooth experience but I put up with that out of protest against the Chrome monopoly.
iTerm 2 with Fish makes for quite a smooth shell experience.
Little Snitch for managing what my applications do. Can be useful for blocking native app product analytics network calls. Takes a couple weeks of nagging popups before you get it into good shape.
Bartender keeps task bar under control. I can click the taskbar and it shows my less frequently used applications, and most of the time I just have a minimal set of icons visible.
Sublime Merge when I want visual Git.
JetBrains across the board for IDEs. VS Code when I’m using a language without good JetBrains support.
I recently started using MailMate for email and am enjoying it so far.
In system preferences I disable most of the built in, not useful keyboard shortcuts, never allow notifications from any application that isn’t a communication platform, remove all apps from dock and autohide it, enable auto dark mode and night shift, disable hot corners, and disable whatever Apple’s latest attempt at making me want to use widgets is (Dashboard, Notification Center, Stage Manager and now this annoying click desktop to hide all windows nonsense)
At the end I have a mostly minimal but efficient desktop experience with a keyboard driven workflow, reduced distractions and good battery life.
No point fighting against the world - just accept anything that seems weird or odd and doesn’t match up with how you think it should work. Just go with the flow.
My computer is just a tool for getting things done - it’s not an expression of my personality.