My documentation to creating a great osx development environment, including all the tools and configuration I recommend.
Do not:
- use a Case Sensative HFS+
- encrypt your drive with File Vault
Using a case sensative HFS+ partition will break a large amount of software (for example, adobe).
If you encrypt your drive prior to downloading the latest updates, you may need to unencrypt, update, then re-encrypt the drive. This is quite time consuming, so to avoid that don't encrypt during installation. Additionally, if you use a modern osx laptop, the hard drive is soldered onto the motherboard, making it much less desirable as a target for physical hijacking.
Which leads us to the first post-install step:
- open the app store and check for updates.
Here are some suggested changes to System Preferences
:
- General
- Appearance:
Graphite
- check
Use dark menu bar and Dock
- check
Automatically hide and show the menu bar
- Default web browser:
Google Chrome
(requires installation) - Recent Items:
None
- uncheck
Allow Handoff between this Mac and your iCloud devices
- Appearance:
The Handoff
functionality is really cool but still feels very disruptive so I choose to disable it on workstations.
- Desktop & Screen Saver
- check
Change picture
:Every 5 minutes
- check
I generally rotate from ~/Pictures/wallpaper/
.
-
Dock
- Size: smaller
- Magnification: closer to min
- Position on screen:
Right
- Minimize windows using:
Scale effect
- check
Minimize windows into application icon
- check
Automatically hide and show the Dock
-
Mission Control
- uncheck
Automatically rearrange Spaces based on most recent use
- uncheck
When switching to an application, switch to a Space with open windows for the application
- uncheck
Displays have separate Spaces
- Show Dashboard:
-
(disable) - Hot Corners...
- Top Right:
Show Desktop
- Top Left:
Start Screen Saver
- Top Right:
- uncheck
I use the hot corner with security settings to easily lock my system when I step away. I also usually pre-emptively create at least two Spaces
.
- Language & Region
- Time Format: check
24-Hour Time
- Time Format: check
I spent a lot of time dealing with time conversion and UTC, for me military time is significantly easier to deal with.
- Security & Privacy
- General
- check
Require Password **1 Minute** after sleep or screen saver begins
- check
- Firewall
- Turn Firewall On
- Firewall Options:
- Stealth Mode
- Advanced...
- check
Log out after 60 minutes of inactivity
- check
Require an administrator password to access system-wide preferences
- check
- General
I generally wait until the system has been fully configured before turning on FileVault, which has become less beneficial with the latest drives being soldered to the motherboard.
- Spotlight
- Search Results
- uncheck
Bing Web Searches
- uncheck
Bookmarks and History
- uncheck
Calculator
- uncheck
Contacts
- uncheck
Conversion
- uncheck
Definition
- uncheck
Documents
- uncheck
Events and Reminders
- uncheck
Folders
- uncheck
Fonts
- uncheck
Images
- uncheck
Mail and Messages
- uncheck
Movies
- uncheck
Music
- uncheck
Other
- uncheck
PDF Documents
- uncheck
Presentations
- uncheck
Spotlight Suggestions
- uncheck
Spreadsheets
- uncheck
Allow Spotlight Suggetions in Spotlight and Look up
- uncheck
- Privacy
- Add
~/
- Add
- Search Results
Some might find the above list convenient, I generally know where my stuff is and have a dozen other solutions that don't expose my file system to a search system that goes to the internet.
- Notifications
- Safari
- disable all
- Game Center
- disable all
- Mail
- disable all
- Photos
- disable all
- Safari
The updated notifications system is very well integrated with other mobile devices or even other laptops, but some notifications are totally unnecessary.
- Displays
- uncheck
Automatically adjust brightness
- uncheck
The multimedia hotkeys to control brightness are often far more useful.
- Energy Saver
- Battery
- Turn display off after
15 min
- Turn display off after
- Power Adapter
- Turn display off after
3 hrs
- check
Prevent computer from sleeping automatically when the display is off
- uncheck
Enable Power Nap while plugged into a power adapter
- Turn display off after
- Battery
When I am plugged in but idle this is generally because I am watching a video or waiting for someone to contact me, so the display going to sleep is a nuisance. This is also why the hot corner is useful when I step away and want to sleep the display.
- Keyboard
- Keyboard
- Turn off when computer is not used for:
10 secs
- Modifier Keys...
- Caps Lock > Control
- Turn off when computer is not used for:
- Input Sources
- Add Japanese
- Shortcuts
- Input Sources
- check
Select the previous input source
- check
- Launchpad & Dock
- uncheck
Turn Dock Hiding On/Off
- uncheck
- Keyboard
- uncheck
Change the way Tab moves focus
- uncheck
Turn keyboard access on or off
- uncheck
- Spotlight
- uncheck
Show Finder search window
- uncheck
- Accessibility
- uncheck
Turn VoiceOver on or off
- uncheck
Show Accessibility controls
- uncheck
- App Shortcuts
- All Applications
Zoom
:ctrl+alt+=
- Google Chrome
Zoom
:shift+ctrl+=
- All Applications
- All Controls (select)
- Input Sources
- Keyboard
Since I am still trying to learn the language, I add Japanese input and Input Sources to easily switch input modes when desired. Apply makes the input switching absolutely beautiful with the latest release.
A lot of hotkeys I disable to save me days spent confused as to why behavior changed after I accidentally fumbled the keyboard.
The zoom hotkey for Chrome requires shift to fill width, but for other applications shift may not work, so we use a more acceptable combination by default.
- Trackpad
- Point & Click
- check
Tap to click
- Tracking Speed: increase
- check
- More Gestures
- uncheck
Switch between pages
- check
App Expose
- uncheck
Launchpad
- uncheck
- Point & Click
I find that browser controls to switch between pages are extra sensitive and often don't work as desired, especially if that page happened to be wider than my display.
-
Sound
- Sound Effects
- Select an alert sound:
Tink
- Alert Volume: reduced
- uncheck
Play user interface sound effects
- Select an alert sound:
- Sound Effects
-
iCloud
- check
Keychain
- check
I find keychain backups to be super useful, because copying my keychain files from ~/Library
and /Library
, then importing them is often painful.
- Internet Accounts
For calendar synchronization, I generally like to connect my gmail account.
- Extensions
- Share Menu: disable everything
Nothing about this new feature appeals to me.
- Bluetooth
- click
Turn Bluetooth Off
- check
Show Bluetooth in menu bar
- click
I prefer to conserve battery, but if you have bluetooth devices re-entering isn't too difficult.
- Sharing
- Computer Name: anything short and simple
The default is generally a page and a half longer than it should be.
- App Store
- check
Automatically check for updates
- Free Downloads:
Save Password
- check
You might be prompted ahead of time to do so, but the new auto-update feature is by default not disruptive and I recommend it. I also find it annoying to have to enter my password for free downloads.
- Accessibility
- Display
- uncheck
Shake mouse pointer to locate
- uncheck
- Display
This is confusing, but with this setting enabled if you move your mouse rapidly back and forth it will suddenly grow enormous, which I found distracting.
I don't use safari, but I do modify the default configuration just in case I need to:
- General:
- Safari opens with:
All windows from last session
- Homepage:
https://www.google.com
- Remove history items:
After one day
- Top Sites shows:
6 sites
- Remove download list items:
Upon successful download
- Safari opens with:
- Search:
- uncheck
Include Safari Suggestions
- uncheck
Enable Quick Website Search
- uncheck
Preload Top Hit in the background
- uncheck
Show Favorites
- uncheck
- Advanced:
- check
Show full website address
- Default encoding:
Unicode (UTF-8)
- check
Show Develop menu in menu bar
- check
Surprisingly, finder has four configuration screens, making it fairly complex to work with.
The first is the global configuration accessed via cmd+,
:
- General
- check
Hard Disks
- check
Connected Servers
- New Finder windows show:
~/
(your user folder)
- check
- Sidebar
- Favorites
- uncheck
All My Files
- uncheck
iCloud Drive
- uncheck
AirDrop
- check
~/
(your user folder)
- uncheck
- Shared
- uncheck
Back to My Mac
- uncheck
Bonjour computers
- uncheck
- Devices
- check
/
(the system drive)
- check
- Tags
- uncheck
Recent Tags
- uncheck
- Favorites
- Advanced
- check
Show all filename extensions
- uncheck
Show warning before changing an extension
- uncheck
Show warning before emptying trash
- When performing a search:
Search the Current Folder
- check
Next, from the user home folder you can open general folder configuration via cmd+j
:
- check
Always open in list view
- check
Date Created
- check
Calculate all sizes
- check
Show Library Folder
When finished click Use as Defaults
to enforce these changes system-wide. If you wish to override in any particular folder you can use cmd_+j
again from any other folder.
Finally, if you activate the desktop and use cmd+j
you will have desktop settings. They finally did such a good job that I have no desire to change the defaults.
- homebrew
- Dash
- Unarchiver
- XCode
- Google Chrome
- Google Hangouts Plugin
- iTerm2
- Sublime Text
- VirtualBox
- VirtualBox Extensions
- Transmission
- Adobe Flash Projector
- go version manager
- node version manager
The homebrew package manager saves the day when it comes to a myriad of support tools.
Dash and Sublime Text are not free, but come highly recommended. If you are a developer and can afford to buy a copy, you should.
Installing the entire XCode toolkit is entirely optional, most will settle on the command line tools installed during homebrew installation.
While flash might cater to a dying industry, I still like the option of being able to run swf files locally without browser plugins as a dependency.
The version managers for go and node are for developers, and simplify installation of the latest versions of our favorite toys.
Many of my configuration files depend on custom fonts added to /Library/Fonts
or at least ~/Library/Fonts
.
Visit the shared document for steps and configuration file templates.
Afterwards, add the command line symlink:
sudo ln -s "/Applications/Sublime Text.app/Contents/SharedSupport/bin/subl" /usr/local/bin/subl
Open the configuration and go to "Profiles" > "Text", then change the font settings (for regular font):
- Size 14 Font
- ForMateKonaVE Font Family
Next select "Profiles" > "Terminal" and click the checkbox for "Unlimited scrollback".
Now go to "Profiles" > "Keys" and add these key combinations:
- alt + delete: HEX 0x17
- alt + left arrow: escape sequence + b
- alt + right arrow: escape sequence + f
This will allow you to use alt to jump between words while in iTerm2 (eg delete whole word, go back a word, go forward a word).
Finally, import the Solarized High Contrast Dark
color scheme from the GUI from "Profiles" > "Colors".
I recommend at least creating a Host-Only network with a predictable IP range, which you can later use to specify static IP's in your virtual machines for more convenient local communication. VirtualBox's aim is enterprise security, so by default it forces a NAT firewall around its networking solution.
To help simplify some of the following steps, you can run this command to download and execute a script instead:
curl -L "https://raw.githubusercontent.com/cdelorme/system-setup/master/osx/el-capitan.sh" | bash
If you don't trust the script, or wish to perform the operations manually, I have provided some of the details here.
I highly recommend installing dot-files to help make the command prompt more user friendly. Visit mine to learn more, or find out how to install them.
This utility has many uses, and the installation is fairly basic:
sudo curl https://yt-dl.org/downloads/2016.03.06/youtube-dl -o /usr/local/bin/youtube-dl
sudo chmod a+rx /usr/local/bin/youtube-dl
Further it is self-updating when you use youtube-dl -U
.
It is recommended that you generate an ssh key, which can be used for ssh tunneling, numerous encryption services, and version control software.
You can easily generate one with the following command:
ssh-keygen -t rsa -b 4096
ssh-add -K ~/.ssh/id_rsa
Using the -K
will store the passphrase in your keychain, allowing painless reloading on reboot.
Before installing homebrew packages, you should get a token with your github account to prevent rate-limiting when running homebrew operations. Setting the token to the HOMEBREW_GITHUB_API_TOKEN
environment variable in your ~/.bash_profile
is the way to solve it.
If you are a developer, you probably want to install a number of these packages and their dependencies:
- vim (/w
--override-system-vi
) - tmux
- git
- openssl
- wget
- Caskroom/cask/osxfuse
- Caskroom/cask/sshfs
- mplayer
There are also many multimedia utilities for video and audio enthusiasts:
- lame
- jpeg
- faac
- libvorbis
- x264
- openh264
- xvid
- theora
- graphicsmagick
- imagemagick
- swftools
- ffmpeg (/w
--with-tools
) - sfml
- homebrew/versions/glfw3
- sdl2_gfx
- sdl2_image
- sdl2_mixer
- sdl2_net
- sdl2_ttf
- sdl_gfx
- sdl_image
- sdl_mixer
- sdl_net
- sdl_rtf
- sdl_sound
- sdl_ttf
Finally, for developer machines these are recommended:
- mercurial
- svn
- bzr
- awscli
- Caskroom/cask/vagrant
- docker-machine
- docker-compose
- terraform
You can initialize docker-machine via docker-machine create --driver virtualbox default
, which can then be automatically loaded for docker
command access from the host via eval $(docker-machine env default)
in ~/.bash_profile
.
After installing git with homebrew, you will want to set your name, email, and keychain helper globally to optimize behavior:
git config --global credential.helper osxkeychain
git config --global user.name <name>
git config --global user.email <email>
I generally create a ~/git/
folder to store my projects.
I highly recommend Ralph Bean's Awesome Git Flow Tutorial and the Git Bash Completion script as well. You may also want to download and install ~/.githelpers
, written by Gary Bernhardt.
To easily preview markdown files using the quick-look hotkey, you can install an open source generator from here. Simply download the latest release, and move it to /Library/QuickLook/
. You will be asked for "authenticate".
The next time you restart your system, feel free to uncheck Remember open windows
to prevent the system from keeping track of that stuff.