However, like other people, I'm not sure that I agree with this particular set of changes. Is there a project somewhere that packages these options into a GUI? I know a bunch of folks who use OS X who might want to change these things, but they're not programmers and they don't even know shell scripts exist.
There was: Secrets* was both a website were people aggregated a small database of these options and a MacOS preference pane which displayed these:
https://web.archive.org/web/20150515104503/http://secrets.bl...
https://blog.taylormcgann.com/wp-content/uploads/2012/03/sec...
(* by the makers of Quicksilver!)
Sadly the project stopped updating in 2012 and the website, repository and forks seem all long gone.
(Should anyone resurrect this great app, one improvement should be versioning of secrets recipes. AFAIR Secrets.prefPane displayed options long after they stopped applicable for later Mac OS versions.)
It’s probably not exhaustive, but quite convenient.
[0] https://github.com/mathiasbynens/dotfiles/tree/master#sensib...
macOS already has sensible defaults, that's how people who have no interest in dealing with computers can use their machines for years with no issues or servicing(unless a latte is spilled over the keyboard).
Then, you can customise behaviour for some specific things to fit your workflow.
The problem with diverging from defaults without putting much thought on it is that if you don't use it frequently you forget about it and when weird bugs happen it gets very hard to debug because a common issue with a straightforward solution may no longer apply to you and you have no idea why since you cannot make the connection because you don't remember changing it.
For example, if people were getting hacked through remote desktop connection all the time you could have said that macOS has insensible defaults on the security or even existence of that feature.
However, with macOS that's not the case, in fact macOS has so sensible defaults that a lot of its users have no understanding of how it works and yet successfully use it for years with no issues and not gaining any understanding through the years.
The thing is so well designed that it's often dissed as a Starbucks machine, implying that it is used by people with a lot of money who don't know what they are doing while simultaneously is an extremely popular machine among creative professionals and engineers who also like coffee and know what they are doing.
Having options is nice, for example I dislike dark mode but I like the dark statusbar so I have a customisation for it. I dislike autosorting of the Spaces, so I disabled it. I prefer to simply tap and not have to press on the trackbar so I enabled it.
However I would't call the defaults not-sensible, it's just that I like some stuff differently from the defaults.
Why would you call a script that actually changes things and doesn't actually show you a cheat sheet a "cheat sheet?"
No. A cheat sheet is used as a reference to some subject and is for making it easy to look up things many times, over time. This is something you read through once, apply the full thing / parts and then forget about it. Pretty big difference.
Personally, I like to keep to the defaults and prefer to change my own workflow to match the OS designers' vision of how I should use a computer, rather than to try to bend the OS to my priors. I understand why this don't work for everyone, but it has made my life much easier.
These days the only thing I customise is the “refactor” shortcut in IDEA because the Fn keys suck on MacOS.
Firefox is the only program I run that requires constant "config maintenance".
Meanwhile, I've used macOS at work for ~5 years. Every time a big release comes out, IT departments have to go around screaming "DONT UPDATE IT WILL BREAK EVERYTHING" for a month. Once that calms down later we finally can update (though I only _want_ to update because by that point the incessant "Update now or tonight?" prompts have driven me mad) -- and instead of everything breaking, it merely breaks half my customizations and I have to waste time fixing it.
Apple is just bad at breaking things for enterprise and notoriously slow fixing bugs affecting enterprise users. Right now there's still a major bug affecting Mobile Active Directory accounts, causing users to be locked out if they're not in the office after they upgrade. Sigh.. Problem is the MDM profile that should apply to local users only is somehow affecting mobile AD user accounts since the upgrade. In Catalina and before this was not an issue. Apple support acknowledged this but is still working on a fix. Even in 11.3 it's still not fixed.
And they don't provide an MDM method for update blocking. You can only postpone them a number of days (but this will affect minor and major updates alike so is not what you'd want). You can get it if you provision an infrastructure of update servers but we can't in our place :( This is why admins like me can't stop those prompts appearing for you.
PS Our latest Macs are running without AD (using the new Kerberos SSO plugin) and they fare a lot better, unfortunately it took me a long time to convince our Windows-centric security team that it actually weakens our security and accomplishes nothing on Mac :)
This is the problem in enterprises. As an admin I know there's better ways to do things but many of these decisions are imposed on me by other teams.
Funny. I decided to drop Ubuntu Linux because they dropped support for 32 bit CPUs. I switched to FreeBSD.
It is they dumped all the baggage of the previous arch. Including the 32bit world. Apple started out with a design , designed to do one thing. Give a great experience to a user.
Gone are the days of the GPU and CPU handshaking on moving memory from system ram to video ram. Same thing with SSD to main memory..
Removal of bad ideas and implementation of the lessons learned. Reason why FreeBSD is sometimes faster with linux. They dropped the old legacy code and design. Like MacOS, they are free to fix userland.
Linux & windows? Not so much. Linux userland is a horrible mess due to the "dont break the ABI of the kernel" Do you know there are known WONT FIX bugs in the kernel? Linux taught me that the idea of dont break the kernel adds, BLOAT and WONT FIX bugs... till you the mess called 5.11 that is 60 million lines of horrible linux code. No one uses the 32 bit driver of LSILOGIC.
If they do... let the use the older version of linux, its a mistake, proven by the bloat in linux to keep ABI compatibility.
My advice for everyone. Go FreeBSD, go MacOS, for new hardware go with modern arch, and kick the old compatibility out the door.
> Warning: If you want to give these dotfiles a try, you should first fork this repository, review the code, and remove things you don’t want or need. Don’t blindly use my settings unless you know what that entails. Use at your own risk!
Find what you like and use it.
Or does he use this phrase in some blog post?
Either way it's not present on the linked file.
(a fun game whenever these silly scripts get posted is to count how many different security measures they silently disable with little to no warning to the naive)
A Day In The Life (time link to a few seconds before it hits at 4:21): https://youtu.be/usNsCeOV4GM?t=249
Some original settings are useful belt-and-suspenders for flow blindness.
Seriously though, I like not having scrollbars everywhere, I use two fingers for right click on the track pad, I do it without thinking, if I turn off natural scrolling I get incredibly confused.
Some of the stuff I can get behind, like this
# Enable full keyboard access for all controls
# (e.g. enable Tab in modal dialogs)
defaults write NSGlobalDomain AppleKeyboardUIMode -int 3
I get annoyed when secure keyboard entry turns on and doesn't turn off properly in iTerm as it messes up Dash's snippets.I'm sure this is the sensible defaults for this one really picky person, and it's interesting to see all the choices, but I would definitely advise against someone running this on their workstation blindly.
# Disable automatic capitalization as it’s annoying when typing code
# Disable smart dashes as they’re annoying when typing code
# Disable automatic period substitution as it’s annoying when typing code
# Disable smart quotes as they’re annoying when typing code
# Disable auto-correct
...
but then I saw this - # Allow the App Store to reboot machine on macOS updates
I assume this after you manually started the update, otherwise it is madness!Then it only sends you a notification once in a while, and that's it.
afaik you can do this on Win10 Pro and above.
When I was starting from scratch with macOS a few months ago, I had that sense of fresh new beginning. I wanted to have all of the configuration scriptable and versioned. Unfortunately those preferences files also include a bunch of timestamps and dates and window locations, so it ends up being not a great idea.
You can get a JSON representation now too. Figured that out with Safari bookmarks .webloc. They’re basically plist files and used plutil to convert it to JSON
I wouldn't copy this unless you know for sure this is how you want your system configured.
A before and after picture (video?) for each would be helpful in making a decision in each case.
Also, is there a revert-to-defaults script?
I think the most sensible defaults are those that come out of the box, rather than spending time tweaking things.
Maybe, although I set my caps lock up to be escape when tapped and control when held, I don't think that would be sensible for many people at all unless the knew why they wanted it.
> I think the most sensible defaults are those that come out of the box, rather than spending time tweaking things.
This is probably true, I find it very difficult to use anyone else's system since my config is non-standard.
Labelling these "sensible" then suggests that the alternatives rather than just being personal choice are somehow not sensible, and who other than a fool would choose something that's not sensible?
Well me it seems, and I feel like the patronising title is implying that I am one.
I would have titled it differently had the creator not referred to the file as such. I even tried changing the title earlier today (I don’t particularly like it either), but it got changed back. Apologies!
https://git.eeqj.de/sneak/osx/src/branch/master/custompkg/ro...
Here they are in case you're into the dotfile trading thing: https://github.com/bogidon/dotfiles
In recent years Apple's default settings have trended more and more away from what keyboard-focused power users (i.e. developers) need, IMHO. That wouldn't be a big deal except they've also trended toward locking down those defaults to make them difficult to change. Scripts like this make it possible for me to continue doing development on the Mac without tearing my hair out.
There are also a number of different commands (scutil, nvram, defaults, pmset, PlistBuddy, etc.) instead of common interface for things that seem related but aren't. Discoverability is horrible, even when you know the name of the setting you want to change. It is not immediately apparent what arguments are needed for "defaults write" based on the output of "defaults read" (possibly due to my own ignorance, but this raises the learning curve substantially).
Granted, there are a thousand different ways to configure any given Linux environment with varying degrees of difficulty, but I feel like many of the user preferences in the linked script would be better managed in dotfiles as they are in Linux (and other Unices and even for many apps on Mac OS).
I don’t think there is anything wrong with re-setting a bunch of properties in plist files every time a session is opened.
You’re right, the CLI is a difficult to use if you don’t know it beforehand. And even knowing it does not tell you about the various properties you can change with default. At least the script here points to some useful options.
1) Remove the dock (killing the dock automatically restarts it) 2) Remove all desktop icons (Killing Finder accomplishes this, but they reappear as soon as you need to open something in Finder)
Stuff like the above is why I greatly prefer Linux.
As for the dock you can set it to auto hide, and change the delay so that it will come up but after N seconds [1].
[1] https://apple.stackexchange.com/questions/59556/is-there-a-w...
As for the dock, auto-hiding it doesn't disable it, it just hides it. So it remains visible in mission control, and still has bouncing icons from time to time. It also uses system resources, etc.
Ideally I wouldn't have to hack around these settings and could just turn off both these features, like I could on Snow Leopard.
$ defaults write com.apple.Dock autohide-delay -float 1000 && killall Dock
On Snow Leopard you could actually kill the dock and it'd stay killed.
https://gist.github.com/bondolo/5ce1a1c0d38e72a80a79ac28f951...
1) Disable Apple Music, which has the annoying habit of opening every time I touch my headphones, and is not removable from my own computer.
2) Force macOS to remember that I gave Chrome location permissions instead of reseting Chrome after every update.
It's the first thing I fix on all other OSes. Why should the content go the opposite direction of the way I'm moving my finger?
This is one of the best fixes Apple ever made, back in Lion. Kudos to them to seeing the everyday and noticing that it was wrong.
It's the same dilemma as panning a first-person-perspective camera up and down. Some people think that down should move the perspective, some people think that down should move the camera: so pushing the joystick down should move the viewing window up. These physical intuitions are durable and hard to change.
I grimly endured the difference between a trackpad and a phone until OS X (as it was then known) switched to the "correct" default, but I'm one of those people who expects a camera to work like the control stick of a plane: pulling towards me, or down, should elevate the perspective. I purchased a gimbal recently, and was having a terrible time controlling it until I realized that the default (pushing the joystick up points the camera up) could be overridden.
I don't think there's anything "sensible" in a general way about anyone's custom configuration script, frankly, and I suspect the person who made this wasn't actually trying to promote it for public consumption, and just meant "script to make my computer do what I consider sensible".
It makes perfect sense when I'm on a phone that I'm grabbing the content, since I'm reaching out and literally touching the content.
But on a desktop, I have a cursor. Obviously if I want to point at something below where my cursor is, I move it down. And if it's off the window, I need to scroll down further.
There are two equally valid subjective choices here:
- does moving your finger up "grab the content" under the glass and move it up, or
- does moving your finger up "grab the window", moving it up along a long virtual document?
Both are legit mental models, it's a preference.
I'm sure I won't consider the exact same set to fit my needs fully, but that doesn't matter as they're really well documented.
I could see putting it in .macos if that was something the system used on boot to setup your system a particular way.
# Display full POSIX path as Finder window title
defaults write com.apple.finder _FXShowPosixPathInTitle -bool true
I don't know how anyone knows where their stuff is without it.There is an alternative, in the Finder view menu -> Show Path Bar. It's displayed at the bottom. This will display the path of the current selection, or -- if nothing is selected -- the currently opened folder.
As someone who grew up using an old school Mac in the 90s, this is blasphemy! That triumphant chime is essential to the Macintosh experience (just kidding but kinda not).
Why do people give things generic names that have basically no meaning? If I encountered the script in machine I would wonder “WTF does .macos do?” There is also no comment in the header.
I see that at work too. People give lists of certain element types the name “list”. So a lot of their code is full of classes with generic names like “map”, “list” or “config” and every time you have to look at the code and see what the thing really does.
Do people not work on large codebases?
Shameless sharing: github.com/echohack/macbot
2. Change setting via GUI.
3. `defaults read > file_b`.
4. `diff file_a file_b`.
If you already know the domain you want to change (like the bundle ID of a specific app), add it after `read`.
This is the most monstrously non mac-like thing I’ve ever seen.
A lot of these preferences seem to reflect the opinions of someone who would quite happily be stuck in 2005. Reverse scrolling… ugh.
sudo="/usr/bin/sudo"
launhctl="/bin/launchctl"
scutil="/usr/sbin/scutil"
nvram="/usr/sbin/nvram"
defaults="/usr/bin/defaults"
et cetera
defaults read
will show you all of them but it's a pretty long listUnfortunately, the usual way of finding those is to `strings` the application binary, and weed through all the chaff. And that requires either a fishing expedition, or for you to already know what you are looking for (including what binary might be responsible for that).