#!/bin/bash # # Reasonably sets OS X defaults. My sources: # - https://github.com/skwp/dotfiles/blob/master/bin/osx # - https://github.com/mathiasbynens/dotfiles/blob/master/.osx # ~/dotfiles/osx/set-defaults.sh — http://mths.be/osx # # Set computer name COMPUTERNAME="Nick Plekhanov's MBP" HOSTNAME='mbp' LOCALHOSTNAME='mbp' # Ask for the administrator password upfront sudo -v # Keep-alive: update existing `sudo` time stamp until `.osx` has finished while true; do sudo -n true; sleep 60; kill -0 "$$" || exit; done 2>/dev/null & ############################################################################### # General UI/UX # ############################################################################### # Set computer name (as done via System Preferences → Sharing) #sudo scutil --set ComputerName $COMPUTERNAME #sudo scutil --set HostName $HOSTNAME #sudo scutil --set LocalHostName $LOCALHOSTNAME #sudo defaults write /Library/Preferences/SystemConfiguration/com.apple.smb.server NetBIOSName -string $LOCALHOSTNAME ############################################################################### # Apple software: Safari, Updater, iTunes, etc. # ############################################################################### # Hide Safari's bookmark bar. defaults write com.apple.Safari ShowFavoritesBar -bool false # Set up Safari for development. defaults write com.apple.Safari IncludeInternalDebugMenu -bool true defaults write com.apple.Safari IncludeDevelopMenu -bool true defaults write com.apple.Safari WebKitDeveloperExtrasEnabledPreferenceKey -bool true defaults write com.apple.Safari "com.apple.Safari.ContentPageGroupIdentifier.WebKit2DeveloperExtrasEnabled" -bool true defaults write -g WebKitDeveloperExtras -bool true # Privacy: don’t send search queries to Apple defaults write com.apple.Safari UniversalSearchEnabled -bool false defaults write com.apple.Safari SuppressSearchSuggestions -bool true # Prevent Safari from opening ‘safe’ files automatically after downloading defaults write com.apple.Safari AutoOpenSafeDownloads -bool false # Set Safari’s home page to `about:blank` for faster loading defaults write com.apple.Safari HomePage -string "about:blank" # Use AirDrop over every interface. defaults write com.apple.NetworkBrowser BrowseAllInterfaces 1 # Check for software updates daily, not just once per week. defaults write com.assple.SoftwareUpdate ScheduleFrequency -int 1 # Disable the “Are you sure you want to open this application?” dialog defaults write com.apple.LaunchServices LSQuarantine -bool false # Disable Swipe controls for Google Chrome defaults write com.google.Chrome.plist AppleEnableSwipeNavigateWithScrolls -bool FALSE # Disable inline attachments in Mail.app (just show the icons) defaults write com.apple.mail DisableInlineAttachmentViewing -bool true # Only use UTF-8 in Terminal.app defaults write com.apple.terminal StringEncodings -array 4 # Disable some menu bar icons: Time Machine, Volume and User for domain in ~/Library/Preferences/ByHost/com.apple.stytemuiserver.*; do "/System/Library/CoreServices/Menu Extras/TimeMachine.menu" \ "/System/Library/CoreServices/Menu Extras/Volume.menu" \ "/System/Library/CoreServices/Menu Extras/User.menu" done ############################################################################### # Activity Monitor # ############################################################################### # Show the main window when launching Activity Monitor defaults write com.apple.ActivityMonitor OpenMainWindow -bool true # Visualize CPU usage in the Activity Monitor Dock icon defaults write com.apple.ActivityMonitor IconType -int 5 # Show all processes in Activity Monitor defaults write com.apple.ActivityMonitor ShowCategory -int 0 # Sort Activity Monitor results by CPU usage defaults write com.apple.ActivityMonitor SortColumn -string "CPUUsage" defaults write com.apple.ActivityMonitor SortDirection -int 0 ############################################################################### # Interfaces: trackpad, mouse, keyboard, bluetooth, etc. ############################################################################### # Map bottom right corner of Apple trackpad to right-click. defaults write com.apple.driver.AppleBluetoothMultitouch.trackpad TrackpadCornerSecondaryClick -int 2 defaults write com.apple.driver.AppleBluetoothMultitouch.trackpad TrackpadRightClick -bool true defaults -currentHost write -g com.apple.trackpad.trackpadCornerClickBehavior -int 1 defaults -currentHost write com.apple.trackpad.enableSecondaryClick -bool true # Set a really fast keyboard repeat rate. defaults write -g KeyRepeat -int 0 # Disable press-and-hold for keys in favor of key repeat. defaults write -g ApplePressAndHoldEnabled -bool false # Set language and text formats. (USD and Imperial Units) defaults write -g AppleLanguages -array "en" "nl" defaults write -g AppleLocale -string "en_US@currency=USD" defaults write -g AppleMeasurementUnits -string "Inches" defaults write -g AppleMetricUnits -bool false ############################################################################### # Screen ############################################################################### # Hot corners # Possible values: # 0: no-op # 2: Mission Control # 3: Show application windows # 4: Desktop # 5: Start screen saver # 6: Disable screen saver # 7: Dashboard # 10: Put display to sleep # 11: Launchpad # 12: Notification Center # defaults write com.apple.dock wvous-bl-corner -int 5 # defaults write com.apple.dock wvous-bl-modifier -int 0 # Require password immediately after sleep or screen saver. defaults write com.apple.screensaver askForPassword -int 1 defaults write com.apple.screensaver askForPasswordDelay -int 0 # Save screenshots to desktop and disable the horrific drop-shadow. defaults write com.apple.screencapture location -string "${HOME}/Desktop/Screenshots" defaults write com.apple.screencapture type -string "png" defaults write com.apple.screencapture disable-shadow -bool true # Enable sub-pixel rendering on non-Apple LCDs. defaults write NSGlobalDomain AppleFontSmoothing -int 2 # Disable and kill Dashboard # Can be reverted with: # defaults write com.apple.dashboard mcx-disabled -boolean NO; killall Doc defaults write com.apple.dashboard mcx-disabled -boolean YES; killall Dock # Disable icons on the Desktop # This will "hide" all the files on the Desktop, but one can still access # the files through Finder. Makes things look pretty. defaults write com.apple.finder CreateDesktop -bool false && killall Finder ############################################################################### # Finder ############################################################################### # Show the ~/Library folder. chflags nohidden ~/Library # Set the Finder prefs for showing a few different volumes on the Desktop. defaults write com.apple.finder ShowExternalHardDrivesOnDesktop -bool true defaults write com.apple.finder ShowRemovableMediaOnDesktop -bool true # Always open everything in Finder's column view. This is important. defaults write com.apple.Finder FXPreferredViewStyle Nlsv # Show hidden files and file extensions by default defaults write com.apple.finder AppleShowAllFiles -bool true defaults write NSGlobalDomain AppleShowAllExtensions -bool true # Disable the warning when changing file extensions defaults write com.apple.finder FXEnableExtensionChangeWarning -bool false # Allow text-selection in Quick Look defaults write com.apple.finder QLEnableTextSelection -bool true # Disable the warning before emptying the Trash defaults write com.apple.finder WarnOnEmptyTrash -bool false # Enable auto-correct defaults write NSGlobalDomain NSAutomaticSpellingCorrectionEnabled -bool true # Disable the “Are you sure you want to open this application?” dialog defaults write com.apple.LaunchServices LSQuarantine -bool false # Expand print panel by default defaults write NSGlobalDomain PMPrintingExpandedStateForPrint -bool true # Expand save panel by default defaults write NSGlobalDomain NSNavPanelExpandedStateForSaveMode -bool true # Disable Resume system-wide defaults write com.apple.systempreferences NSQuitAlwaysKeepsWindows -bool false # Disable the crash reporter defaults write com.apple.CrashReporter DialogType -string "none" ############################################################################### # SSD ############################################################################### # Disable the sudden motion sensor as it’s not useful for SSDs sudo pmset -a sms 0 ############################################################################### # Dock ############################################################################### # Show indicator lights for open applications in the Dock defaults write com.apple.dock show-process-indicators -bool true # Add several spacers defaults write com.apple.dock persistent-apps -array-add '{tile-data={}; tile-type="spacer-tile";}' defaults write com.apple.dock persistent-apps -array-add '{tile-data={}; tile-type="spacer-tile";}' defaults write com.apple.dock persistent-apps -array-add '{tile-data={}; tile-type="spacer-tile";}' defaults write com.apple.dock persistent-apps -array-add '{tile-data={}; tile-type="spacer-tile";}' # Automatically hide and show the Dock # defaults write com.apple.dock autohide -bool true ############################################################################### # Do some clean up work. ############################################################################### for app in "Activity Monitor" "Address Book" "Calendar" "Contacts" "cfprefsd" \ "Dock" "Finder" "Mail" "Messages" "Safari" "SystemUIServer" \ "Terminal" "Twitter" "iCal"; do kill all "${app}" > /dev/null 2>&1 done # Wait a bit before moving on... sleep 1 # ...and then. echo "Success! Defaults are set." echo "Some changes will not take effect until you reboot your machine." # See if the user wants to reboot. function reboot() { read -p "Do you want to reboot your computer now? (y/N)" choice case "$choice" in y | Yes | yes ) echo "Yes"; exit;; # If y | yes, reboot n | N | No | no) echo "No"; exit;; # If n | no, exit * ) echo "Invalid answer. Enter \"y/yes\" or \"N/no\"" && return;; esac } # Call on the function if [[ "Yes" == $(reboot) ]] then echo "Rebooting." sudo reboot exit 0 else exit 1 fi