I recently got a new machine specifically for travel purposes (all of my portables are not very portable due to the very fact that it had "able to compile a browser on the go"), and decided to finally do a write up of the exact customization process that goes into every Mac that I have used so I can use it as a future reference in the event my brain gets old and forgets a step or two.
System
Make bottom left the screen saver hot corner.
Disable automatic spell correction and smart quotes. This is extremely annoying if you have to write code in a non-programming editor.
Enable input source switching with a shortcut key. This needs to be revisited later, by doing a manual plist edit to get the exact behavior I want.
Customize (or more of, disable most of) Mission Control keyboard shortcuts. Especially because I do not use virtual desktops, I kill most of the shortcuts here. Command + F12 becomes the Notification Center shortcut.
Make key repeat as fast as possible, and make function keys function keys.
Swap Caps Lock and Control.
Enable Full Keyboard Access on all controls.
"Fix" trackpad scrolling. Natural scrolling is possibly the dumbest idea ever, or I am the dumbest person ever - not sure which.
Tap to click. Lets you browse the web silently at night without having to wake up your significant other with click noise.
Disable Dashboard. Saves memory.
defaults write com.apple.dashboard mcx-disabled -boolean YES
killall Dock
XCode needs to be installed before this step. Change the input source switch shortcut to Shift + Space instead of the previously configured Control + Space.
open ~/Library/Preferences/com.apple.symbolichotkeys.plist
Will open the plist editor built into XCode, after which you will have to navigate to:
Root/AppleSymbolicHotKeys/60/value/parameters/Item 2
And change that from 262144
(in case it's configured as Control + Space) to 131072
.
This is hack that is needed due to a limitation in OS X's keyboard shortcut configuration UI not accepting Shift only combinations.
A friend noted that this can be done without XCode, using Plistbuddy - which is available at /usr/libexec/PlistBuddy
. Never tried it myself.
Tools I always install, in no particular order.
- Alfred: (From App Store)
- BetterTouchTool: http://blog.boastr.net
- Opera: http://arc.opera.com/pub/opera/mac/1211/
- Opera (Blink): http://www.opera.com/computer
Whenever possible, I prefer to use Presto Opera. This is becoming harder by the day, but whenever possible I keep my tabs there. While I know a lot of people think it is weird and clunky and it might not play the latest blingy demo at 60fps, but it's light. Lighter than any other browser I've tried so far if you care to use it long enough.
Sadly, the experience isn't all too great on a Retina device.
Tools I install for specific cases.
- Slate: https://github.com/jigish/slate (only for multi monitor configurations, in which case BTT is replaced with this)
- Steermouse: http://plentycom.jp/en/steermouse/ (only for using a real mouse)
- Google Chrome: http://www.google.com/chrome
- Mozilla Firefox: http://www.mozilla.org/en-US/firefox/
- Postbox: http://www.postbox-inc.com
- Sparrow: https://itunes.apple.com/us/app/id417250177?mt=12
I either use Sparrow or Postbox after the recent Apple Mail revamp making it utterly unusable (very specifically, Apple Mail seems to fail hard at syncing my two biggest accounts), but haven't been happy with either. Postbox has a pretty buggy UI in almost any corner case (it still has all the flexibility of Thunderbird, but seems like nobody tested a lot of corner case stuff) and Sparrow hasn't got a update in ages, although in general it seems to still work.
Monolingual is evil but awesome. Assuming that nobody has to use the localized UI of language that you don't speak on your machine ever, you can just remove support for everything you can't care less about. Frees about 2 to 2.5GBs of disk space.
BTT is used to replicate Windows 7's Window + Left/Right/Up window resizing behavior. Because 10+ years of OS X and the maximize button still feels like the "do random shit" button to me.
As Alfred by default behaves very differently from Quicksilver (which is doesn't support complex text input nicely, so Alfred is sadly the tool of choice) change the behavior to mimic what Quicksilver provides.
Development Tools
Install XCode. This is done through the App Store nowadays, which is sort of annoying but unavoidable. Install Homebrew afterwards.
ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"
Other tools I pretty much always install, in no particular order.
- IDA Pro: https://www.hex-rays.com/products/ida/
- QT Creator: http://qt-project.org
- Sublime Text: http://www.sublimetext.com
- Textmate: http://macromates.com/download
- Hopper Disassembler : http://hopperapp.com
- Java SE JDK: http://www.oracle.com/technetwork/java/javase/downloads/index.html
- IntelliJ IDEA: http://www.jetbrains.com/idea/
- Ninja:
brew install ninja
- Binwalk:
brew install binwalk
- Node.js:
brew install node
- Dub:
brew install dub
- CMake:
brew install cmake
- Git:
brew install git
- Mercurial:
brew install mercurial
- Binutils:
brew install binutils
These are things I sometimes install.
- Closure Compiler:
brew install closure-compiler
- gcc:
brew install apple-gcc42
Mavericks does not ship with gcc. gcc
is a symbolic link to clang, which I personally think was one of the strangest moves Apple has ever made.
Things to Delete
These applications always come installed on every new machine I have bought, and I have yet to find a good use for these.
- iMovie
- iPhoto
- Garageband
Removing these usually frees up a fair amount of space, so they go straight into the trash can.
Dotfiles
Unlike most of the modern generation, I don't store my dotfiles online for security reasons. I keep them backed up in a SD card at home, and deploy only the ones that are necessary.
- Git
- Bash
- Zsh
- SSH
- Vim
Are the main candidates that get some form of customization, and the others get very little to no changes from the defaults.
The usual Bash/Zsh pimping tools (e.g. oh-my-zsh) I found very slow, so I try not to use them. Some of the Git repositories I work on are pretty big, and these tools tend to slow down my work a lot when working with those directories.
Other
Sometimes I pluck out all the keys and rearrange them in Dvorak layout, but keep the actual layout in Qwerty.
On at least one occasion I plucked out all the keys and rearranged them into a non-existent layout that resembles the sentence "The quick brown fox jumped over the lazy dogs".
Both had the sole purpose of messing with people's minds. Nothing else.