Created
August 10, 2020 10:10
-
-
Save steinbrueckri/02287553f62597c6de77295c4dcdcaea to your computer and use it in GitHub Desktop.
OSX Defaults to setup a brand new machine
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env bash | |
# echo "Need to recapture iTerm settings" | |
# exit -1 | |
# TODO: Need to figure out the settings for the following: | |
# 1) Finder: Left nav, favorite items with their order | |
# 2) Dock: Items with order | |
# 3) Security & Privacy Preferences: Full Disk Access, Camera, Microphone | |
# 4) Login items for my user (i.e. apps started when I login) | |
# 5) Global Keyboard shortcuts: Cmd+Shift+/ (Help menu) | |
# 6) Retina displays | |
## | |
# This is a script with useful tips taken from: | |
# https://gist.github.com/DAddYE/2108403 | |
# | |
# Run in interactive mode with: | |
# $ sh -c "$(curl -sL https://gist.githubusercontent.com/vraravam/5e28ca1720c9dddacdc0e6db61e093fe/raw/460cf7359ff348657760f03cbef2fb22099e27d6/osx_defaults.sh)" | |
# | |
# or run it without prompt questions: | |
# $ sh -c "$(curl -sL https://gist.githubusercontent.com/vraravam/5e28ca1720c9dddacdc0e6db61e093fe/raw/460cf7359ff348657760f03cbef2fb22099e27d6/osx_defaults.sh)" -s silent | |
# | |
# Please, share your tips commenting here: | |
# https://gist.github.com/vraravam/5e28ca1720c9dddacdc0e6db61e093fe | |
# | |
# Author: @vraravam | |
# Thanks to: @erikh, @DAddYE, @mathiasbynens | |
# | |
case $1 in | |
"-s" | "-y" | "--silent" | "silent" ) | |
echo "Running in silent mode..." | |
auto=Y | |
shift 1 | |
;; | |
*) | |
auto=N | |
if [ ! -t 0 ]; then | |
echo "Interactive mode needs terminal!" >&2 | |
exit 1 | |
fi | |
;; | |
esac | |
function ask { | |
while true; do | |
if [ "$2" == "Y" ]; then | |
prompt="\033[1;32mY\033[0m/n" | |
default=Y | |
elif [ "$2" == "N" ]; then | |
prompt="y/\033[1;32mN\033[0m" | |
default=N | |
else | |
prompt="y/n" | |
default= | |
fi | |
printf "$1 [$prompt] " | |
if [ "$auto" == "Y" ]; then | |
echo | |
else | |
read yn | |
fi | |
if [ -z "$yn" ]; then | |
yn=$default | |
fi | |
case $yn in | |
[Yy]*) return 0 ;; | |
[Nn]*) return 1 ;; | |
esac | |
done | |
} | |
# Close any open System Preferences panes, to prevent them from overriding | |
# settings we’re about to change | |
osascript -e 'tell application "System Preferences" to quit' | |
# Ask for the administrator password upfront | |
sudo -v | |
# Keep-alive: update existing `sudo` time stamp until `.macos` has finished | |
while true; do sudo -n true; sleep 60; kill -0 "$$" || exit; done 2>/dev/null & | |
# While applying any changes to SoftwareUpdate defaults, set software update to OFF to avoid any conflict with the defaults system cache. (Also close the System Preferences app) | |
sudo softwareupdate --schedule OFF | |
############################################################################### | |
# Global Preferences for every app # | |
############################################################################### | |
if ask "Save to disk (not to iCloud) by default)" Y; then | |
defaults write -g NSDocumentSaveNewDocumentsToCloud -bool false | |
fi | |
if ask "Enable 64-bit Kernel" Y; then | |
defaults write /Library/Preferences/SystemConfiguration/com.apple.Boot.plist "Kernel Flags" -string "" | |
fi | |
############################################################################### | |
# Couldn't find the following settings in macOS Mojave (10.14.3) # | |
############################################################################### | |
# Expand "save as..." dialog by default | |
# defaults write -g NSNavPanelExpandedStateForSaveMode -bool true | |
# defaults write -g NSNavPanelExpandedStateForSaveMode2 -bool true | |
# Expand print panel by default | |
# defaults write -g PMPrintingExpandedStateForPrint -bool true | |
# defaults write -g PMPrintingExpandedStateForPrint2 -bool true | |
# Restore the 'Save As' menu item (Equivalent to adding a Keyboard shortcut in the System Preferences.app ) | |
# defaults write -g NSUserKeyEquivalents -dict-add 'Save As...' '@$S' | |
# Global User Interface Scale Multiplier: | |
# defaults write -g AppleDisplayScaleFactor -float | |
# Enable continuous spell checking everywhere: | |
# defaults write -g WebContinuousSpellCheckingEnabled -boolean | |
# Enable automatic dash replacement everywhere: | |
# defaults write -g WebAutomaticDashSubstitutionEnabled -boolean | |
# Enable automatic text replacement everywhere: | |
# defaults write -g WebAutomaticTextReplacementEnabled -boolean | |
# Icon Size for Open Panels: | |
# defaults write -g NSNavPanelIconViewIconSizeForOpenMode -number | |
# Keyboard press and hold behavior: | |
# defaults write -g ApplePressAndHoldEnabled -boolean | |
############################################################################### | |
# Login Window # | |
############################################################################### | |
if ask "Reveal system info (IP address, hostname, OS version, etc.) when clicking the clock in the login screen" Y; then | |
sudo defaults write /Library/Preferences/com.apple.loginwindow AdminHostInfo HostName | |
fi | |
if ask "Show language menu in the top right corner of the boot screen" Y; then | |
sudo defaults write /Library/Preferences/com.apple.loginwindow showInputMenu -bool true | |
fi | |
if ask "Disable guest login" Y; then | |
sudo defaults write /Library/Preferences/com.apple.loginwindow GuestEnabled -bool false | |
fi | |
if ask "Add a message to the login screen" Y; then | |
sudo defaults write /Library/Preferences/com.apple.loginwindow LoginwindowText "Beware\! You are logging into Vijay's laptop\!" | |
fi | |
if ask "Change login screen background" N; then | |
sudo defaults write /Library/Preferences/com.apple.loginwindow DesktopPicture "/Library/Desktop Pictures/Aqua Blue.jpg" | |
fi | |
if ask "Show Shutdown Button on Login Window" Y; then | |
defaults write com.apple.loginwindow ShutDownDisabled -bool false | |
fi | |
if ask "Remove Restart Button From Login Window" N; then | |
defaults write com.apple.loginwindow RestartDisabled -bool true | |
fi | |
if ask "Disable Login for Hidden User '>Console'" N; then | |
defaults write com.apple.loginwindow DisableConsoleAccess -bool true | |
fi | |
############################################################################### | |
# MenuBar # | |
############################################################################### | |
# Disable menu bar transparency - Couldn't find this in mac OS Mojave | |
# defaults write -g AppleEnableMenuBarTransparency -bool false | |
if ask "Show remaining battery time" N; then | |
defaults write com.apple.menuextra.battery ShowTime -string "YES" | |
fi | |
if ask "Show remaining battery percentage" Y; then | |
defaults write com.apple.menuextra.battery ShowPercent -string "YES" | |
fi | |
############################################################################### | |
# General UI/UX # | |
############################################################################### | |
if ask "Set computer name (as done via System Preferences → Sharing)" Y; then | |
sudo scutil --set ComputerName "IND-CHN-Vijay's MBP" | |
sudo scutil --set HostName "Vijay" | |
sudo scutil --set LocalHostName "Vijay" | |
sudo defaults write /Library/Preferences/SystemConfiguration/com.apple.smb.server NetBIOSName -string "Vijay" | |
fi | |
if ask "Set standby delay to 6 hours (default: 1 hour)" Y; then | |
sudo pmset -a standbydelay 21600 | |
fi | |
# Disable the sound effects on boot | |
# sudo nvram SystemAudioVolume=" " | |
for domain in ~/Library/Preferences/ByHost/com.apple.systemuiserver.*; do | |
defaults write "${domain}" dontAutoLoad -array \ | |
"/System/Library/CoreServices/Menu Extras/TimeMachine.menu" \ | |
"/System/Library/CoreServices/Menu Extras/Volume.menu" \ | |
"/System/Library/CoreServices/Menu Extras/User.menu" | |
done | |
defaults write com.apple.systemuiserver menuExtras -array \ | |
"/System/Library/CoreServices/Menu Extras/Bluetooth.menu" \ | |
"/System/Library/CoreServices/Menu Extras/AirPort.menu" \ | |
"/System/Library/CoreServices/Menu Extras/Battery.menu" \ | |
"/System/Library/CoreServices/Menu Extras/Clock.menu" \ | |
"/System/Library/CoreServices/Menu Extras/User.menu" \ | |
"/System/Library/CoreServices/Menu Extras/Volume.menu" | |
defaults write com.apple.systemuiserver "NSStatusItem Visible Siri" -bool false | |
defaults write com.apple.systemuiserver "NSStatusItem Visible com.apple.menuextra.airport" -bool true | |
defaults write com.apple.systemuiserver "NSStatusItem Visible com.apple.menuextra.appleuser" -bool true | |
defaults write com.apple.systemuiserver "NSStatusItem Visible com.apple.menuextra.battery" -bool true | |
defaults write com.apple.systemuiserver "NSStatusItem Visible com.apple.menuextra.bluetooth" -bool true | |
defaults write com.apple.systemuiserver "NSStatusItem Visible com.apple.menuextra.volume" -bool true | |
if ask "Set the sidebar icon size to small(1), medium(2) or Large(3)" Y; then | |
defaults write -g NSTableViewDefaultSizeMode -int 1 | |
fi | |
if ask "Show scrollbars when scrolling" Y; then | |
# Possible values: `WhenScrolling`, `Automatic` and `Always` | |
defaults write -g AppleShowScrollBars -string "WhenScrolling" | |
fi | |
if ask "Temperature units" Y; then | |
defaults write -g AppleTemperatureUnit -string "Celsius" | |
fi | |
if ask "Automatically quit printer app once the print jobs complete" Y; then | |
defaults write com.apple.print.PrintingPrefs "Quit When Finished" -bool true | |
fi | |
if ask "Turn off the 'Application Downloaded from Internet' quarantine warning" Y; then | |
defaults write com.apple.LaunchServices LSQuarantine -bool false | |
fi | |
if ask "Remove duplicates in the 'Open With' menu (also see 'lscleanup' alias)" Y; then | |
/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister -kill -r -domain local -domain system -domain user | |
fi | |
# Display ASCII control characters using caret notation in standard text views | |
# Try e.g. `cd /tmp; unidecode "\x{0000}" > cc.txt; open -e cc.txt` | |
# defaults write -g NSTextShowsControlCharacters -bool true | |
# if ask "Enable multitouch trackpad auto orientation sensing (for all users)" Y; then | |
# defaults write /Library/Preferences/com.apple.MultitouchSupport ForceAutoOrientation -boolean | |
# fi | |
if ask "Map navigation swipe to 3 fingers (turn this off to get 4-finger navigation swipe)" Y; then | |
defaults write com.apple.systempreferences com.apple.preference.trackpad.3fdrag-4fNavigate -bool false | |
fi | |
if ask "Enable Resume applications on reboot (system-wide)" Y; then | |
defaults write com.apple.systempreferences NSQuitAlwaysKeepsWindows -bool true | |
defaults write -g NSQuitAlwaysKeepsWindows -bool true | |
fi | |
if ask "Disable automatic termination of inactive apps" Y; then | |
defaults write -g NSDisableAutomaticTermination -bool true | |
fi | |
if ask "Disable the crash reporter (quit dialog after an application crash) (default: 'crashreport')" Y; then | |
defaults write com.apple.CrashReporter DialogType -string "none" | |
fi | |
if ask "Set Help Viewer windows to non-floating mode" Y; then | |
defaults write com.apple.helpviewer DevMode -bool true | |
fi | |
if ask "Restart automatically if the computer freezes" Y; then | |
sudo systemsetup -setrestartfreeze on | |
fi | |
if ask "Set the timezone" Y; then | |
# see 'sudo systemsetup -listtimezones' for other values | |
sudo systemsetup -settimezone "Asia/Calcutta" | |
fi | |
if ask "Set the time using the network time" Y; then | |
systemsetup -setusingnetworktime on | |
fi | |
if ask "Set the computer sleep time to 10 minutes" Y; then | |
# To never go into computer sleep mode, use 'Never' or 'Off' | |
sudo systemsetup -setcomputersleep 10 | |
fi | |
if ask "Set the display sleep time to 10 minutes" Y; then | |
# To never go into display sleep mode, use 'Never' or 'Off' | |
sudo systemsetup -setdisplaysleep 10 | |
fi | |
if ask "Set the harddisk sleep time to 15 minutes" Y; then | |
# To never go into harddisk sleep mode, use 'Never' or 'Off' | |
sudo systemsetup -setharddisksleep 15 | |
fi | |
# Disable Notification Center and remove the menu bar icon | |
# launchctl unload -w /System/Library/LaunchAgents/com.apple.notificationcenterui.plist 2> /dev/null | |
if ask "Disable automatic capitalization as it’s annoying when typing code" Y; then | |
defaults write -g NSAutomaticCapitalizationEnabled -bool false | |
fi | |
if ask "Enable smart dashes as they’re annoying when typing code" Y; then | |
defaults write -g NSAutomaticDashSubstitutionEnabled -bool true | |
fi | |
if ask "Set the languages present" Y; then | |
defaults write -g NSLinguisticDataAssetsRequested -array "en_IN" "en_US" "en" | |
defaults delete NSGlobalDomain NSNavRecentPlaces | |
fi | |
# TODO: defaults write -g NSPreferredWebServices NSWebServicesProviderWebSearch | |
if ask "Set the some english acronyms/short forms for ease of typing" Y; then | |
defaults write -g NSUserDictionaryReplacementItems -array \ | |
'{ on = 1; replace = cyl; with = "Cya later!"; }' \ | |
'{ on = 1; replace = ttyl; with = "Talk to you later!"; }' \ | |
'{ on = 1; replace = omw; with = "On my way!"; }' \ | |
'{ on = 1; replace = omg; with = "Oh my God!"; }' | |
fi | |
if ask "Disable automatic period substitution as it’s annoying when typing code" Y; then | |
defaults write -g NSAutomaticPeriodSubstitutionEnabled -bool false | |
fi | |
if ask "Enable auto-correct" Y; then | |
defaults write -g NSAutomaticSpellingCorrectionEnabled -bool true | |
fi | |
# TODO: This is not working yet | |
# Set a custom wallpaper image. `DefaultDesktop.jpg` is already a symlink, and | |
# all wallpapers are in `/Library/Desktop Pictures/`. The default is `Wave.jpg`. | |
#rm -rf ~/Library/Application Support/Dock/desktoppicture.db | |
#sudo rm -rf /System/Library/CoreServices/DefaultDesktop.jpg | |
#sudo ln -s /path/to/your/image /System/Library/CoreServices/DefaultDesktop.jpg | |
############################################################################### | |
# Text Edit # | |
############################################################################### | |
if ask "Use plain text mode for new TextEdit documents" Y; then | |
defaults write com.apple.TextEdit RichText -int 0 | |
fi | |
if ask "Open and save files as UTF-8 in TextEdit" Y; then | |
defaults write com.apple.TextEdit PlainTextEncoding -int 4 | |
defaults write com.apple.TextEdit PlainTextEncodingForWrite -int 4 | |
fi | |
############################################################################### | |
# SSD-specific tweaks # | |
############################################################################### | |
if ask "Disable hibernation (speeds up entering sleep mode)" Y; then | |
sudo pmset -a hibernatemode 0 | |
fi | |
if ask "Disable the sudden motion sensor as it’s not useful for SSDs" Y; then | |
sudo pmset -a sms 0 | |
fi | |
if ask "Increase sound quality for Bluetooth headphones/headsets" Y; then | |
defaults write com.apple.BluetoothAudioAgent "Apple Bitpool Min (editable)" -int 40 | |
fi | |
############################################################################### | |
# DiskUtility # | |
############################################################################### | |
if ask "Show a Debug menu in Disk Utility" Y; then | |
defaults write com.apple.DiskUtility DUDebugMenuEnabled -bool true | |
fi | |
if ask "Enables additional disk image options" Y; then | |
defaults write com.apple.DiskUtility advanced-image-options -bool true | |
fi | |
if ask "Shows all partitions for a disk in the main list" Y; then | |
defaults write com.apple.DiskUtility DUShowEveryPartition -bool true | |
fi | |
if ask "Skip checksum verification for images on remote volumes" Y; then | |
defaults write com.apple.frameworks.diskimages skip-verify-remote -bool true | |
fi | |
if ask "Skip checksum verification for images on locked volumes" Y; then | |
defaults write com.apple.frameworks.diskimages skip-verify-locked -bool true | |
fi | |
if ask "Allows Disk Images As RAIDs" Y; then | |
defaults write com.apple.DiskUtility DUAllowsDiskImagesAsRAIDs -bool true | |
fi | |
if ask "Disk Skip Verify" Y; then | |
defaults write com.apple.DiskUtility DURestoreCanSkipVerify -bool true | |
fi | |
if ask "Debug All Message Level" Y; then | |
defaults write com.apple.DiskUtility DUDebugMessageLevel -int 4 | |
fi | |
if ask "Show Details In First Aid" Y; then | |
defaults write com.apple.DiskUtility DUShowDetailsInFirstAid -bool true | |
fi | |
if ask "Disable disk image verification" Y; then | |
defaults write com.apple.frameworks.diskimages skip-verify -bool true | |
fi | |
############################################################################### | |
# Trackpad, mouse, keyboard, Bluetooth accessories, and input # | |
############################################################################### | |
if ask "Enable Trackpad Gestures" Y; then | |
defaults write com.apple.driver.AppleBluetoothMultitouch.trackpad Clicking -int 1 | |
defaults write com.apple.driver.AppleBluetoothMultitouch.trackpad DragLock -int 0 | |
defaults write com.apple.driver.AppleBluetoothMultitouch.trackpad Dragging -int 0 | |
defaults write com.apple.driver.AppleBluetoothMultitouch.trackpad TrackpadCornerSecondaryClick -int 0 | |
defaults write com.apple.driver.AppleBluetoothMultitouch.trackpad TrackpadFiveFingerPinchGesture -int 2 | |
defaults write com.apple.driver.AppleBluetoothMultitouch.trackpad TrackpadFourFingerHorizSwipeGesture -int 2 | |
defaults write com.apple.driver.AppleBluetoothMultitouch.trackpad TrackpadFourFingerPinchGesture -int 2 | |
defaults write com.apple.driver.AppleBluetoothMultitouch.trackpad TrackpadFourFingerVertSwipeGesture -int 2 | |
defaults write com.apple.driver.AppleBluetoothMultitouch.trackpad TrackpadHandResting -int 1 | |
defaults write com.apple.driver.AppleBluetoothMultitouch.trackpad TrackpadHorizScroll -int 1 | |
defaults write com.apple.driver.AppleBluetoothMultitouch.trackpad TrackpadMomentumScroll -int 1 | |
defaults write com.apple.driver.AppleBluetoothMultitouch.trackpad TrackpadPinch -int 1 | |
defaults write com.apple.driver.AppleBluetoothMultitouch.trackpad TrackpadRightClick -int 1 | |
defaults write com.apple.driver.AppleBluetoothMultitouch.trackpad TrackpadRotate -int 1 | |
defaults write com.apple.driver.AppleBluetoothMultitouch.trackpad TrackpadScroll -int 1 | |
defaults write com.apple.driver.AppleBluetoothMultitouch.trackpad TrackpadThreeFingerDrag -int 0 | |
defaults write com.apple.driver.AppleBluetoothMultitouch.trackpad TrackpadThreeFingerHorizSwipeGesture -int 2 | |
defaults write com.apple.driver.AppleBluetoothMultitouch.trackpad TrackpadThreeFingerTapGesture -int 0 | |
defaults write com.apple.driver.AppleBluetoothMultitouch.trackpad TrackpadThreeFingerVertSwipeGesture -int 2 | |
defaults write com.apple.driver.AppleBluetoothMultitouch.trackpad TrackpadTwoFingerDoubleTapGesture -int 1 | |
defaults write com.apple.driver.AppleBluetoothMultitouch.trackpad TrackpadTwoFingerFromRightEdgeSwipeGesture -int 3 | |
defaults write com.apple.driver.AppleBluetoothMultitouch.trackpad USBMouseStopsTrackpad -int 0 | |
defaults write com.apple.driver.AppleBluetoothMultitouch.trackpad UserPreferences -int 1 | |
fi | |
if ask "Enable tap to click on trackpad" Y; then | |
defaults write -g com.apple.mouse.tapBehavior -int 1 | |
fi | |
if ask "Enable 'natural' (Lion-style) scrolling" Y; then | |
defaults write -g com.apple.swipescrolldirection -bool true | |
fi | |
if ask "Enable full keyboard access for all controls (e.g. enable Tab in modal dialogs)" Y; then | |
defaults write -g AppleKeyboardUIMode -int 3 | |
fi | |
if ask "Set language and text formats" Y; then | |
# Note: if you’re in the US, replace `EUR` with `USD`, `Centimeters` with | |
# `Inches`, `en_GB` with `en_US`, and `true` with `false`. | |
defaults write -g AppleLanguages -array "en-IN" "en" | |
defaults write -g AppleLocale -string "en_IN@currency=INR" | |
defaults write -g AppleMeasurementUnits -string "Centimeters" | |
defaults write -g AppleMetricUnits -bool true | |
defaults write -g AppleActionOnDoubleClick -string "Maximize" | |
fi | |
# Stop iTunes from responding to the keyboard media keys | |
# launchctl unload -w /System/Library/LaunchAgents/com.apple.rcd.plist 2> /dev/null | |
if ask "Check spelling as you type by default, unless the application specifies otherwise" Y; then | |
defaults write -g CheckSpellingWhileTyping -bool true | |
fi | |
############################################################################### | |
# Finder # | |
############################################################################### | |
if ask "Allow quitting Finder via ⌘ + Q; doing so will also hide desktop icons" Y; then | |
defaults write com.apple.finder QuitMenuItem -bool true | |
fi | |
# if ask "Disable window animations and Get Info animations" Y; then | |
# defaults write com.apple.finder DisableAllAnimations -bool true | |
# fi | |
if ask "Set Desktop as the default location for new Finder windows" Y; then | |
# For other paths, use `PfLo` and `file:///full/path/here/` | |
defaults write com.apple.finder NewWindowTarget -string "PfHm" | |
defaults write com.apple.finder NewWindowTargetPath -string "file://${HOME}/" | |
fi | |
if ask "Show icons for hard drives, servers, and removable media on the desktop" Y; then | |
defaults write com.apple.finder ShowExternalHardDrivesOnDesktop -bool true | |
defaults write com.apple.finder ShowHardDrivesOnDesktop -bool false | |
# defaults write com.apple.finder ShowMountedServersOnDesktop -bool true | |
defaults write com.apple.finder ShowRemovableMediaOnDesktop -bool true | |
fi | |
# if ask "Show hidden files by default" Y; then | |
# defaults write com.apple.finder AppleShowAllFiles -bool true | |
# fi | |
if ask "Show all filename extensions" Y; then | |
defaults write -g AppleShowAllExtensions -bool true | |
fi | |
if ask "Hide status bar" Y; then | |
defaults write com.apple.finder ShowStatusBar -bool false | |
fi | |
if ask "Start the status bar Path at $HOME (instead of Hard drive)" N; then | |
defaults write /Library/Preferences/com.apple.finder PathBarRootAtHome -bool true | |
fi | |
if ask "Show path (breadcrumb) bar" Y; then | |
defaults write com.apple.finder ShowPathbar -bool true | |
fi | |
if ask "Show preview pane" Y; then | |
defaults write com.apple.finder ShowPreviewPane -bool false | |
fi | |
if ask "Allowing text selection in Quick Look/Preview in Finder by default" Y; then | |
defaults write com.apple.finder QLEnableTextSelection -bool true | |
fi | |
if ask "Display full POSIX path as Finder window title" Y; then | |
defaults write com.apple.finder _FXShowPosixPathInTitle -bool true | |
fi | |
# if ask "Keep folders on top when sorting by name" Y; then | |
# defaults write com.apple.finder _FXSortFoldersFirst -bool true | |
# fi | |
if ask "When performing a search, search the current folder by default (the default 'This Mac' is 'SCev')" Y; then | |
defaults write com.apple.finder FXDefaultSearchScope -string "SCcf" | |
fi | |
if ask "Disable the warning when changing a file extension" Y; then | |
defaults write com.apple.finder FXEnableExtensionChangeWarning -bool false | |
fi | |
# if ask "Enable spring loading for directories" Y; then | |
# defaults write -g com.apple.springing.enabled -bool true | |
# fi | |
if ask "Remove the delay for spring loading for directories" Y; then | |
defaults write -g com.apple.springing.delay -float 0 | |
fi | |
if ask "Enable snap-to-grid for icons on the desktop and in other icon views" Y; then | |
/usr/libexec/PlistBuddy -c "Set :DesktopViewSettings:IconViewSettings:arrangeBy grid" ~/Library/Preferences/com.apple.finder.plist | |
/usr/libexec/PlistBuddy -c "Set :FK_StandardViewSettings:IconViewSettings:arrangeBy grid" ~/Library/Preferences/com.apple.finder.plist | |
/usr/libexec/PlistBuddy -c "Set :StandardViewSettings:IconViewSettings:arrangeBy grid" ~/Library/Preferences/com.apple.finder.plist | |
fi | |
if ask "Increase grid spacing for icons on the desktop and in other icon views" Y; then | |
/usr/libexec/PlistBuddy -c "Set :DesktopViewSettings:IconViewSettings:gridSpacing 54" ~/Library/Preferences/com.apple.finder.plist | |
/usr/libexec/PlistBuddy -c "Set :FK_StandardViewSettings:IconViewSettings:gridSpacing 54" ~/Library/Preferences/com.apple.finder.plist | |
/usr/libexec/PlistBuddy -c "Set :StandardViewSettings:IconViewSettings:gridSpacing 54" ~/Library/Preferences/com.apple.finder.plist | |
fi | |
if ask "Increase the size of icons on the desktop and in other icon views" Y; then | |
/usr/libexec/PlistBuddy -c "Set :DesktopViewSettings:IconViewSettings:iconSize 64" ~/Library/Preferences/com.apple.finder.plist | |
/usr/libexec/PlistBuddy -c "Set :FK_StandardViewSettings:IconViewSettings:iconSize 64" ~/Library/Preferences/com.apple.finder.plist | |
/usr/libexec/PlistBuddy -c "Set :StandardViewSettings:IconViewSettings:iconSize 64" ~/Library/Preferences/com.apple.finder.plist | |
fi | |
if ask "Use list view in all Finder windows by default" Y; then | |
# Four-letter codes for the other view modes: `icnv` (icon), `Nlsv` (list), `Flwv` (cover flow) | |
defaults write com.apple.finder FXPreferredViewStyle -string "clmv" | |
defaults write com.apple.finder SearchRecentsSavedViewStyle -string "clmv" | |
fi | |
if ask "Disable creation of Metadata Files on Network Volumes (avoids creation of .DS_Store and AppleDouble files.)" Y; then | |
defaults write com.apple.desktopservices DSDontWriteNetworkStores -bool true | |
fi | |
if ask "Disable creation of Metadata Files on USB Volumes (avoids creation of .DS_Store and AppleDouble files.)" Y; then | |
defaults write com.apple.desktopservices DSDontWriteUSBStores -bool true | |
fi | |
if ask "Disable the warning before emptying the Trash" Y; then | |
defaults write com.apple.finder WarnOnEmptyTrash -bool false | |
fi | |
if ask "Empty Trash securely by default" Y; then | |
defaults write com.apple.finder EmptyTrashSecurely -bool true | |
fi | |
if ask "Show app-centric sidebar" Y; then | |
defaults write com.apple.finder FK_AppCentricShowSidebar -bool true | |
fi | |
if ask "Enable AirDrop over Ethernet and on unsupported Macs running Lion" Y; then | |
defaults write com.apple.NetworkBrowser BrowseAllInterfaces -bool true | |
fi | |
if ask "Automatically open a new Finder window when a volume is mounted" Y; then | |
defaults write com.apple.frameworks.diskimages auto-open-ro-root -bool true | |
defaults write com.apple.frameworks.diskimages auto-open-rw-root -bool true | |
defaults write com.apple.finder OpenWindowForNewRemovableDisk -bool true | |
fi | |
if ask "Enable the MacBook Air SuperDrive on any Mac" N; then | |
sudo nvram boot-args="mbasd=1" | |
fi | |
if ask "Show the '~/Library' folder" Y; then | |
chflags nohidden ~/Library | |
fi | |
if ask "Show the '/Volumes' folder" Y; then | |
sudo chflags nohidden /Volumes | |
fi | |
# Remove Dropbox’s green checkmark icons in Finder | |
# file=/Applications/Dropbox.app/Contents/Resources/emblem-dropbox-uptodate.icns | |
# [ -e "${file}" ] && mv -f "${file}" "${file}.bak" | |
if ask "Expand the following File Info panes: 'General', 'Open with', and 'Sharing & Permissions'" Y; then | |
defaults write com.apple.finder FXInfoPanesExpanded -dict-add "General" -bool true | |
defaults write com.apple.finder FXInfoPanesExpanded -dict-add "MetaData" -bool false | |
defaults write com.apple.finder FXInfoPanesExpanded -dict-add "OpenWith" -bool true | |
defaults write com.apple.finder FXInfoPanesExpanded -dict-add "Privileges" -bool true | |
fi | |
if ask "Windows which were open prior to logging out are re-opened after logging in" Y; then | |
defaults write com.apple.finder RestoreWindowState -bool true | |
fi | |
if ask "Allow Rubberband scrolling" Y; then | |
defaults write -g NSScrollViewRubberbanding -bool true | |
fi | |
# if ask "Location and style of scrollbar arrows" N; then | |
# Applications often need to be relaunched to see the change. | |
# defaults write -g AppleScrollBarVariant -string "DoubleBoth" true | |
# fi | |
if ask "Turn on Smooth Scroll" Y; then | |
defaults write -g NSScrollAnimationEnabled -bool true | |
fi | |
# if ask "Disable window animations" N; then | |
# defaults write -g NSAutomaticWindowAnimationsEnabled -bool false && killall Finder | |
# fi | |
############################################################################### | |
# Preview # | |
############################################################################### | |
if ask "Scale images by default when printing" N; then | |
defaults write com.apple.Preview PVImagePrintingScaleMode -bool true | |
fi | |
if ask "Preview Auto-rotate by default when printing" N; then | |
defaults write com.apple.Preview PVImagePrintingAutoRotate -bool true | |
fi | |
if ask "Quit Always Keeps Windows" N; then | |
defaults write com.apple.Preview NSQuitAlwaysKeepsWindows -bool true | |
fi | |
############################################################################### | |
# Keychain # | |
############################################################################### | |
if ask "Keychain shows expired certificates" N; then | |
defaults write com.apple.keychainaccess "Show Expired Certificates" -bool true | |
fi | |
if ask "Makes Keychain Access display *unsigned* ACL entries in italics" Y; then | |
defaults write com.apple.keychainaccess "Distinguish Legacy ACLs" -bool true | |
fi | |
############################################################################### | |
# Remote Desktop # | |
############################################################################### | |
# if ask "Admin Console Allows Remote Control" N; then | |
# defaults delete /Library/Preferences/com.apple.RemoteManagement AdminConsoleAllowsRemoteControl | |
# fi | |
# if ask "Disable Multicast" N; then | |
# defaults write /Library/Preferences/com.apple.RemoteManagement ARD_MulticastAllowed -bool true | |
# fi | |
# if ask "Prevents system keys like command-tab from being sent" N; then | |
# defaults write com.apple.RemoteDesktop DoNotSendSystemKeys -bool true | |
# fi | |
if ask "Show the Debug menu Remote Desktop" Y; then | |
defaults write com.apple.remotedesktop IncludeDebugMenu -bool true | |
fi | |
if ask "Define user name display behavior" Y; then | |
defaults write com.apple.remotedesktop showShortUserName -bool true | |
fi | |
# if ask "Set the maximum number of computers that can be observed: (up to 50 opposed to the default of 9)" Y; then | |
# defaults write com.apple.RemoteDesktop multiObserveMaxPerScreen -int 9 | |
# fi | |
############################################################################### | |
# Screen Sharing # | |
############################################################################### | |
# if ask "Prevent protection when attempting to remotely control this computer" N; then | |
# defaults write com.apple.ScreenSharing skipLocalAddressCheck -bool true | |
# fi | |
# if ask "Disables system-level key combos like command-option-esc (Force Quit), command-tab (App switcher) to be used on the remote machine" N; then | |
# defaults write com.apple.ScreenSharing DoNotSendSystemKeys -bool true | |
# fi | |
# if ask "Debug (To Show Bonjour)" N; then | |
# defaults write com.apple.ScreenSharing debug -bool true | |
# fi | |
# if ask "Do Not Send Special Keys to Remote Machine" N; then | |
# defaults write com.apple.ScreenSharing DoNotSendSystemKeys -bool true | |
# fi | |
# if ask "Skip local address check" N; then | |
# defaults write com.apple.ScreenSharing skipLocalAddressCheck -bool true | |
# fi | |
# if ask "Screen sharing image quality" N; then | |
# defaults write com.apple.ScreenSharing controlObserveQuality -int | |
# fi | |
# if ask "Number of recent hosts on ScreenSharingMenulet" N; then | |
# defaults write com.klieme.ScreenSharingMenulet maxHosts -int | |
# fi | |
# if ask "Display IP-Addresses of the local hosts on ScreenSharingMenulet" N; then | |
# defaults write com.klieme.ScreenSharingMenulet showIPAddresses -bool true | |
# fi | |
############################################################################### | |
# Dock, Dashboard, and hot corners # | |
############################################################################### | |
if ask "Set the icon size of Dock items to 35 pixels" Y; then | |
defaults write com.apple.dock tilesize -int 35 | |
fi | |
if ask "Move the dock to the right side of the screen" Y; then | |
defaults write com.apple.dock orientation -string "right" | |
fi | |
if ask "Minimize windows into their application’s icon" Y; then | |
defaults write com.apple.dock minimize-to-application -bool true | |
fi | |
# if ask "Enable spring loading for all Dock items" Y; then | |
# defaults write com.apple.dock enable-spring-load-actions-on-all-items -bool true | |
# fi | |
if ask "Enable highlight hover effect for the grid view of a stack (Dock)" Y; then | |
defaults write com.apple.dock mouse-over-hilte-stack -bool true | |
fi | |
if ask "Show indicator lights for open applications in the Dock" Y; then | |
defaults write com.apple.dock show-process-indicators -bool true | |
fi | |
if ask "Animate opening applications from the Dock" Y; then | |
defaults write com.apple.dock launchanim -bool true | |
fi | |
if ask "Change minimize/maximize window effect" Y; then | |
defaults write com.apple.dock mineffect -string "scale" | |
fi | |
if ask "Speed up Mission Control animations" Y; then | |
defaults write com.apple.dock expose-animation-duration -float 0.5 | |
fi | |
if ask "Don’t group windows by application in Mission Control (i.e. use the old Exposé behavior instead)" N; then | |
defaults write com.apple.dock expose-group-by-app -bool false | |
fi | |
if ask "Disable dashboard widgets (saves RAM)" N; then | |
defaults write com.apple.dashboard mcx-disabled -bool true | |
fi | |
if ask "Enable Mission Control" N; then | |
defaults write com.apple.Dock mcx-expose-disabled -bool false | |
fi | |
if ask "Don’t show Dashboard as a Space" N; then | |
defaults write com.apple.dock dashboard-in-overlay -bool true | |
fi | |
if ask "Show image for notifications" Y; then | |
defaults write com.apple.dock notification-always-show-image -bool true | |
fi | |
if ask "Enable the 2D Dock" N; then | |
defaults write com.apple.dock no-glass -bool true | |
fi | |
if ask "Disable Bouncing dock icons" N; then | |
defaults write com.apple.dock no-bouncing -bool true | |
fi | |
if ask "Disable multi-display swoosh animations" N; then | |
defaults write com.apple.dock workspaces-swoosh-animation-off -bool false | |
fi | |
if ask "Remove the animation when hiding or showing the dock" N; then | |
defaults write com.apple.dock autohide-time-modifier -float 0 | |
fi | |
if ask "Enable iTunes pop-up notifications" N; then | |
defaults write com.apple.dock itunes-notifications -boolean true | |
fi | |
if ask "Add a 'Recent Applications' stack to the Dock" N; then | |
defaults write com.apple.dock persistent-others -array-add '{ "tile-data" = { "list-type" = 1; }; "tile-type" = "recents-tile"; }' | |
fi | |
if ask "In Expose, only show windows from the current space" N; then | |
defaults write com.apple.dock wvous-show-windows-in-other-spaces -bool false | |
fi | |
if ask "Enable dev mode in dashboard" Y; then | |
defaults write com.apple.dashboard devmode -bool true | |
fi | |
if ask "Enable dashboard" Y; then | |
defaults write com.apple.dashboard "db-enabled-state" -int 3 | |
fi | |
# Dashboard widgets | |
# TODO: This is not working | |
# defaults write com.apple.dashboard "layer-gadgets" -array \ | |
# '{ 32bit = 0; "in-layer" = 1; path = "/Library/Widgets/Calendar.wdgt"; "percent-offset-x" = 0; "percent-offset-y" = 0; "percent-type" = 4; "percent-x" = "0.3982143"; "percent-y" = "0.1342857"; "pos-x" = 669; "pos-y" = 746; relativepath = "/Library/Widgets/Calendar.wdgt"; }' \ | |
# '{ 32bit = 0; "in-layer" = 1; path = "/Library/Widgets/World Clock.wdgt"; "percent-offset-x" = 0; "percent-offset-y" = 0; "percent-type" = 3; "percent-x" = "0.2714286"; "percent-y" = "0.4047619"; "pos-x" = 1052; "pos-y" = 453; relativepath = "/Library/Widgets/World Clock.wdgt"; }' \ | |
# '{ 32bit = 0; "in-layer" = 1; path = "/Library/Widgets/World Clock.wdgt"; "percent-offset-x" = 0; "percent-offset-y" = 0; "percent-type" = 2; "percent-x" = "0.2702381"; "percent-y" = "0.2657143"; "pos-x" = 1054; "pos-y" = 279; relativepath = "/Library/Widgets/World Clock.wdgt"; }' \ | |
# '{ 32bit = 0; "in-layer" = 1; path = "/Library/Widgets/World Clock.wdgt"; "percent-offset-x" = 0; "percent-offset-y" = 0; "percent-type" = 3; "percent-x" = "0.2714286"; "percent-y" = "0.2371429"; "pos-x" = 1052; "pos-y" = 629; relativepath = "/Library/Widgets/World Clock.wdgt"; }' \ | |
# '{ 32bit = 0; "in-layer" = 1; path = "/Library/Widgets/Calculator.wdgt"; "percent-offset-x" = 0; "percent-offset-y" = 0; "percent-type" = 0; "percent-x" = 0; "percent-y" = 0; "pos-x" = 585; "pos-y" = 448; relativepath = "/Library/Widgets/Calculator.wdgt"; }' \ | |
# '{ 32bit = 0; "in-layer" = 1; path = "/Library/Widgets/Weather.wdgt"; "percent-offset-x" = 0; "percent-offset-y" = 0; "percent-type" = 2; "percent-x" = "0.375"; "percent-y" = "0.2447619"; "pos-x" = 708; "pos-y" = 240; relativepath = "/Library/Widgets/Weather.wdgt"; }' | |
if ask "Automatically rearrange Spaces based on most recent use" Y; then | |
defaults write com.apple.dock mru-spaces -bool true | |
fi | |
if ask "Remove the auto-hiding Dock delay" N; then | |
defaults write com.apple.dock autohide-delay -float 0 | |
fi | |
if ask "Remove the animation when hiding/showing the Dock" N; then | |
defaults write com.apple.dock autohide-time-modifier -float 0 | |
fi | |
if ask "Automatically hide and show the Dock" Y; then | |
defaults write com.apple.dock autohide -bool true | |
fi | |
if ask "Automatically magnify the Dock" Y; then | |
defaults write com.apple.dock magnification -bool true | |
fi | |
if ask "Make Dock icons of hidden applications translucent" Y; then | |
defaults write com.apple.dock showhidden -bool true | |
fi | |
if ask "Enable highlight hover effect for the grid view of a stack (Dock)" Y; then | |
defaults write com.apple.dock mouse-over-hilite-stack -bool true | |
fi | |
if ask "Enable the 'reopen windows when logging back in' option" Y; then | |
# This works, although the checkbox will still appear to be checked. | |
defaults write com.apple.loginwindow TALLogoutSavesState -bool true | |
defaults write com.apple.loginwindow LoginwindowLaunchesRelaunchApps -bool true | |
fi | |
############################################################################### | |
# Launchpad # | |
############################################################################### | |
if ask "Number of columns and rows in the dock springboard set to 10" Y; then | |
defaults write com.apple.dock springboard-rows -int 10 | |
defaults write com.apple.dock springboard-columns -int 10 | |
fi | |
# defaults write com.apple.dock ResetLaunchPad -bool true | |
if ask "Disable the Launchpad gesture (pinch with thumb and three fingers)" N; then | |
defaults write com.apple.dock showLaunchpadGestureEnabled -int 0 | |
fi | |
# Add iOS & Watch Simulator to Launchpad | |
# sudo ln -sf "/Applications/Xcode.app/Contents/Developer/Applications/Simulator.app" "/Applications/Simulator.app" | |
# sudo ln -sf "/Applications/Xcode.app/Contents/Developer/Applications/Simulator (Watch).app" "/Applications/Simulator (Watch).app" | |
# Add a spacer to the left side of the Dock (where the applications are) | |
# defaults write com.apple.dock persistent-apps -array-add '{tile-data={}; tile-type="spacer-tile";}' | |
# Add a spacer to the right side of the Dock (where the Trash is) | |
# defaults write com.apple.dock persistent-others -array-add '{tile-data={}; tile-type="spacer-tile";}' | |
if ask "Hot corners" Y; then | |
# 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 | |
# Bottom left screen corner → Dashboard | |
defaults write com.apple.dock wvous-bl-corner -int 7 | |
defaults write com.apple.dock wvous-bl-modifier -int 0 | |
# Top right screen corner → Mission Control | |
defaults write com.apple.dock wvous-tr-corner -int 2 | |
defaults write com.apple.dock wvous-tr-modifier -int 0 | |
# Bottom right screen corner → Start screen saver | |
defaults write com.apple.dock wvous-br-corner -int 5 | |
defaults write com.apple.dock wvous-br-modifier -int 0 | |
fi | |
############################################################################### | |
# Safari & WebKit # | |
############################################################################### | |
if ask "Privacy: don’t send search queries to Apple" Y; then | |
defaults write com.apple.Safari UniversalSearchEnabled -bool false | |
defaults write com.apple.Safari SuppressSearchSuggestions -bool true | |
fi | |
# if ask "Press Tab to highlight each item on a web page" N; then | |
# defaults write com.apple.Safari WebKitTabToLinksPreferenceKey -bool true | |
# defaults write com.apple.Safari com.apple.Safari.ContentPageGroupIdentifier.WebKit2TabsToLinks -bool true | |
# fi | |
if ask "Show the full URL in the address bar (note: this still hides the scheme)" Y; then | |
defaults write com.apple.Safari ShowFullURLInSmartSearchField -bool true | |
fi | |
if ask "Set Safari’s home page to `about:blank` for faster loading" Y; then | |
defaults write com.apple.Safari HomePage -string "about:blank" | |
fi | |
if ask "Prevent Safari from opening ‘safe’ files automatically after downloading" Y; then | |
defaults write com.apple.Safari AutoOpenSafeDownloads -bool false | |
fi | |
if ask "Allow hitting the Backspace key to go to the previous page in history" Y; then | |
defaults write com.apple.Safari com.apple.Safari.ContentPageGroupIdentifier.WebKit2BackspaceKeyNavigationEnabled -bool true | |
fi | |
if ask "Hide Safari’s bookmarks bar by default" Y; then | |
defaults write com.apple.Safari ShowFavoritesBar -bool false | |
defaults write com.apple.Safari "ShowFavoritesBar-v2" -bool false | |
fi | |
if ask "Hide Safari’s sidebar in Top Sites" Y; then | |
defaults write com.apple.Safari ShowSidebarInTopSites -bool false | |
fi | |
if ask "Disable Safari’s thumbnail cache for History and Top Sites" Y; then | |
defaults write com.apple.Safari DebugSnapshotsUpdatePolicy -int 2 | |
fi | |
if ask "Enable Safari’s debug menu" Y; then | |
defaults write com.apple.Safari IncludeInternalDebugMenu -bool true | |
fi | |
if ask "Make Safari’s search banners default to Contains instead of Starts With" Y; then | |
defaults write com.apple.Safari FindOnPageMatchesWordStartsOnly -bool false | |
fi | |
if ask "Remove useless icons from Safari’s bookmarks bar" Y; then | |
defaults write com.apple.Safari ProxiesInBookmarksBar "()" | |
fi | |
if ask "Warn about fraudulent websites" Y; then | |
defaults write com.apple.Safari WarnAboutFraudulentWebsites -bool true | |
fi | |
if ask "Block pop-up windows" Y; then | |
defaults write com.apple.Safari WebKitJavaScriptCanOpenWindowsAutomatically -bool false | |
defaults write com.apple.Safari com.apple.Safari.ContentPageGroupIdentifier.WebKit2JavaScriptCanOpenWindowsAutomatically -bool false | |
fi | |
if ask "Disable auto-playing video" Y; then | |
defaults write com.apple.Safari WebKitMediaPlaybackAllowsInline -bool false | |
defaults write com.apple.SafariTechnologyPreview WebKitMediaPlaybackAllowsInline -bool false | |
defaults write com.apple.Safari com.apple.Safari.ContentPageGroupIdentifier.WebKit2AllowsInlineMediaPlayback -bool false | |
defaults write com.apple.SafariTechnologyPreview com.apple.Safari.ContentPageGroupIdentifier.WebKit2AllowsInlineMediaPlayback -bool false | |
fi | |
if ask "Enable 'Do Not Track'" Y; then | |
defaults write com.apple.Safari SendDoNotTrackHTTPHeader -bool true | |
fi | |
if ask "Enable the Develop menu and the Web Inspector in Safari" Y; then | |
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 | |
fi | |
# Requires Safari 5.0.1 or later. Feature that is intended to increase the speed at which pages load. DNS (Domain Name System) prefetching kicks in when you load a webpage that contains links to other pages. As soon as the initial page is loaded, Safari 5.0.1 (or later) begins resolving the listed links’ domain names to their IP addresses. Prefetching can occasionally result in 'slow performance, partially-loaded pages, or webpage ‘cannot be found’ messages.” | |
if ask "Increase page load speed in Safari" Y; then | |
defaults write com.apple.safari WebKitDNSPrefetchingEnabled -bool true | |
fi | |
if ask "Disable Data Detectors" Y; then | |
defaults write com.apple.Safari WebKitUsesEncodingDetector -bool false | |
fi | |
if ask "Google Suggestion" Y; then | |
defaults write com.apple.safari DebugSafari4IncludeGoogleSuggest -bool true | |
fi | |
if ask "Automatically spell check web forms" Y; then | |
defaults write com.apple.safari WebContinuousSpellCheckingEnabled -bool true | |
fi | |
if ask "Automatically grammar check web forms" Y; then | |
defaults write com.apple.safari WebGrammarCheckingEnabled -bool true | |
fi | |
if ask "Include page background colors and images when printing" N; then | |
defaults write com.apple.safari WebKitShouldPrintBackgroundsPreferenceKey -bool true | |
fi | |
if ask "Enable developer menu in Safari" Y; then | |
defaults write com.apple.Safari IncludeDebugMenu -bool true | |
fi | |
############################################################################### | |
# iMessage # | |
############################################################################### | |
if ask "Automatically go away after the specified time period" N; then | |
defaults write com.apple.ichat AutoAway -bool true | |
fi | |
if ask "Disable iChat Data Detectors which help locate e-mails, dates, and other data tidbits" N; then | |
defaults write com.apple.ichat EnableDataDetectors -bool false | |
fi | |
############################################################################### | |
# Parallels # | |
############################################################################### | |
if ask "Disable Advertisments" Y; then | |
defaults write com.parallels.Parallels\ Desktop ProductPromo.ForcePromoOff -bool true | |
fi | |
############################################################################### | |
# Mail # | |
############################################################################### | |
if ask "Display emails in threaded mode, sorted by date (oldest at the top)" Y; then | |
defaults write com.apple.mail DraftsViewerAttributes -dict-add "DisplayInThreadedMode" -string "yes" | |
defaults write com.apple.mail DraftsViewerAttributes -dict-add "SortedDescending" -string "yes" | |
defaults write com.apple.mail DraftsViewerAttributes -dict-add "SortOrder" -string "received-date" | |
fi | |
if ask "Disable automatic spell checking" N; then | |
defaults write com.apple.mail SpellCheckingBehavior -string "NoSpellCheckingEnabled" | |
fi | |
if ask "Copy email addresses as '[email protected]' instead of 'Foo Bar <[email protected]>'' in Mail.app" N; then | |
defaults write com.apple.mail AddressesIncludeNameOnPasteboard -bool false | |
fi | |
if ask "Disable send and reply animations in Mail.app" N; then | |
defaults write com.apple.Mail DisableReplyAnimations -bool true | |
defaults write com.apple.Mail DisableSendAnimations -bool true | |
fi | |
if ask "Set a minimum font size of 14px (affects reading and sending email)" N; then | |
defaults write com.apple.mail MinimumHTMLFontSize 14 | |
fi | |
if ask "Force all Mail messages to display as plain text" N; then | |
# For rich text (the default) set it to FALSE | |
defaults write com.apple.mail PreferPlainText -bool TRUE | |
fi | |
if ask "Disable tracking of Previous Recipients" N; then | |
defaults write com.apple.mail SuppressAddressHistory -bool true | |
fi | |
if ask "Send Windows friendly attachments" N; then | |
defaults write com.apple.mail SendWindowsFriendlyAttachments -bool true | |
fi | |
############################################################################### | |
# Spotlight # | |
############################################################################### | |
if ask "Hide Spotlight tray-icon (and subsequent helper) from menubar" Y; then | |
sudo chmod 600 /System/Library/CoreServices/Search.bundle/Contents/MacOS/Search | |
fi | |
if ask "Disable Spotlight indexing for any volume that gets mounted and has not yet been indexed before." N; then | |
# Use `sudo mdutil -i off "/Volumes/foo"` to stop indexing any volume. | |
sudo defaults write /.Spotlight-V100/VolumeConfiguration Exclusions -array "/Volumes" | |
fi | |
if ask "Change indexing order and disable some search results" Y; then | |
defaults write com.apple.spotlight orderedItems -array \ | |
'{"enabled" = 1;"name" = "APPLICATIONS";}' \ | |
'{"enabled" = 1;"name" = "SYSTEM_PREFS";}' \ | |
'{"enabled" = 0;"name" = "DIRECTORIES";}' \ | |
'{"enabled" = 0;"name" = "PDF";}' \ | |
'{"enabled" = 0;"name" = "FONTS";}' \ | |
'{"enabled" = 0;"name" = "DOCUMENTS";}' \ | |
'{"enabled" = 0;"name" = "MESSAGES";}' \ | |
'{"enabled" = 0;"name" = "CONTACT";}' \ | |
'{"enabled" = 0;"name" = "EVENT_TODO";}' \ | |
'{"enabled" = 0;"name" = "IMAGES";}' \ | |
'{"enabled" = 0;"name" = "BOOKMARKS";}' \ | |
'{"enabled" = 0;"name" = "MUSIC";}' \ | |
'{"enabled" = 0;"name" = "MOVIES";}' \ | |
'{"enabled" = 0;"name" = "PRESENTATIONS";}' \ | |
'{"enabled" = 0;"name" = "SPREADSHEETS";}' \ | |
'{"enabled" = 1;"name" = "SOURCE";}' \ | |
'{"enabled" = 1;"name" = "MENU_DEFINITION";}' \ | |
'{"enabled" = 0;"name" = "MENU_OTHER";}' \ | |
'{"enabled" = 1;"name" = "MENU_CONVERSION";}' \ | |
'{"enabled" = 1;"name" = "MENU_EXPRESSION";}' \ | |
'{"enabled" = 0;"name" = "MENU_WEBSEARCH";}' \ | |
'{"enabled" = 0;"name" = "MENU_SPOTLIGHT_SUGGESTIONS";}' | |
fi | |
if ask "Load new settings before rebuilding the index" Y; then | |
killall mds > /dev/null 2>&1 | |
fi | |
if ask "Make sure indexing is enabled for the main volume" Y; then | |
sudo mdutil -i on / > /dev/null | |
fi | |
if ask "Rebuild the index from scratch" Y; then | |
sudo mdutil -E / > /dev/null | |
fi | |
############################################################################### | |
# Apple Multitouch Mouse # | |
############################################################################### | |
if ask "Apple Multitouch mouse features" Y; then | |
defaults write com.apple.AppleMultitouchMouse MouseButtonMode -string "OneButton" | |
defaults write com.apple.AppleMultitouchMouse MouseHorizontalScroll -int 1 | |
defaults write com.apple.AppleMultitouchMouse MouseMomentumScroll -int 1 | |
defaults write com.apple.AppleMultitouchMouse MouseOneFingerDoubleTapGesture -int 0 | |
defaults write com.apple.AppleMultitouchMouse MouseTwoFingerDoubleTapGesture -int 3 | |
defaults write com.apple.AppleMultitouchMouse MouseTwoFingerHorizSwipeGesture -int 2 | |
defaults write com.apple.AppleMultitouchMouse MouseVerticalScroll -int 1 | |
defaults write com.apple.AppleMultitouchMouse UserPreferences -int 1 | |
fi | |
############################################################################### | |
# Apple Multitouch Trackpad # | |
############################################################################### | |
if ask "Apple Multitouch trackpad features" Y; then | |
defaults write com.apple.AppleMultitouchTrackpad Clicking -int 1 | |
defaults write com.apple.AppleMultitouchTrackpad DragLock -int 0 | |
defaults write com.apple.AppleMultitouchTrackpad Dragging -int 0 | |
defaults write com.apple.AppleMultitouchTrackpad FirstClickThreshold -int 1 | |
defaults write com.apple.AppleMultitouchTrackpad ForceSuppressed -int 0 | |
defaults write com.apple.AppleMultitouchTrackpad SecondClickThreshold -int 1 | |
defaults write com.apple.AppleMultitouchTrackpad TrackpadCornerSecondaryClick -int 0 | |
defaults write com.apple.AppleMultitouchTrackpad TrackpadFiveFingerPinchGesture -int 2 | |
defaults write com.apple.AppleMultitouchTrackpad TrackpadFourFingerHorizSwipeGesture -int 2 | |
defaults write com.apple.AppleMultitouchTrackpad TrackpadFourFingerPinchGesture -int 2 | |
defaults write com.apple.AppleMultitouchTrackpad TrackpadFourFingerVertSwipeGesture -int 2 | |
defaults write com.apple.AppleMultitouchTrackpad TrackpadHandResting -int 1 | |
defaults write com.apple.AppleMultitouchTrackpad TrackpadHorizScroll -int 1 | |
defaults write com.apple.AppleMultitouchTrackpad TrackpadMomentumScroll -int 1 | |
defaults write com.apple.AppleMultitouchTrackpad TrackpadPinch -int 1 | |
defaults write com.apple.AppleMultitouchTrackpad TrackpadRightClick -int 1 | |
defaults write com.apple.AppleMultitouchTrackpad TrackpadRotate -int 1 | |
defaults write com.apple.AppleMultitouchTrackpad TrackpadScroll -int 1 | |
defaults write com.apple.AppleMultitouchTrackpad TrackpadThreeFingerDrag -int 0 | |
defaults write com.apple.AppleMultitouchTrackpad TrackpadThreeFingerHorizSwipeGesture -int 2 | |
defaults write com.apple.AppleMultitouchTrackpad TrackpadThreeFingerTapGesture -int 2 | |
defaults write com.apple.AppleMultitouchTrackpad TrackpadThreeFingerVertSwipeGesture -int 2 | |
defaults write com.apple.AppleMultitouchTrackpad TrackpadTwoFingerDoubleTapGesture -int 1 | |
defaults write com.apple.AppleMultitouchTrackpad TrackpadTwoFingerFromRightEdgeSwipeGesture -int 3 | |
defaults write com.apple.AppleMultitouchTrackpad USBMouseStopsTrackpad -int 0 | |
defaults write com.apple.AppleMultitouchTrackpad UserPreferences -int 1 | |
fi | |
############################################################################### | |
# Terminal # | |
############################################################################### | |
if ask "New window opens in the same directory as the current window" Y; then | |
defaults write com.apple.Terminal NewWindowWorkingDirectoryBehavior -int 2 | |
fi | |
if ask "Disable Secure Keyboard Entry in Terminal.app" Y; then | |
# (see: https://security.stackexchange.com/a/47786/8918) | |
defaults write com.apple.Terminal SecureKeyboardEntry -bool false | |
defaults write com.apple.Terminal Shell -string "" | |
defaults write com.apple.Terminal "Default Window Settings" -string Basic | |
defaults write com.apple.Terminal "Startup Window Settings" -string Basic | |
fi | |
# Note: To print the values, use this: | |
# /usr/libexec/PlistBuddy -c "Print :'Window Settings':Basic" ~/Library/Preferences/com.apple.Terminal.plist | |
profile_array=(Basic Pro) | |
for profile in ${profile_array[*]} | |
do | |
# Close the window if the shell exited cleanly - TODO: These error out and stop the whole file from being executed - need to fix | |
# /usr/libexec/PlistBuddy -c "Delete :'Window Settings':$profile:shellExitAction" ~/Library/Preferences/com.apple.Terminal.plist | |
# /usr/libexec/PlistBuddy -c "Add :'Window Settings':$profile:shellExitAction integer 1" ~/Library/Preferences/com.apple.Terminal.plist | |
if ask "Set window size in Terminal.app" Y; then | |
/usr/libexec/PlistBuddy -c "Delete :'Window Settings':$profile:rowCount" ~/Library/Preferences/com.apple.Terminal.plist | |
/usr/libexec/PlistBuddy -c "Add :'Window Settings':$profile:rowCount integer 48" ~/Library/Preferences/com.apple.Terminal.plist | |
/usr/libexec/PlistBuddy -c "Delete :'Window Settings':$profile:columnCount" ~/Library/Preferences/com.apple.Terminal.plist | |
/usr/libexec/PlistBuddy -c "Add :'Window Settings':$profile:columnCount integer 160" ~/Library/Preferences/com.apple.Terminal.plist | |
fi | |
if ask "do not close the window if these programs are running" Y; then | |
/usr/libexec/PlistBuddy -c "Delete :'Window Settings':$profile:noWarnProcesses" ~/Library/Preferences/com.apple.Terminal.plist | |
/usr/libexec/PlistBuddy -c "Add :'Window Settings':$profile:noWarnProcesses array" ~/Library/Preferences/com.apple.Terminal.plist | |
/usr/libexec/PlistBuddy -c "Add :'Window Settings':$profile:noWarnProcesses:0:ProcessName string screen" ~/Library/Preferences/com.apple.Terminal.plist | |
/usr/libexec/PlistBuddy -c "Add :'Window Settings':$profile:noWarnProcesses:1:ProcessName string tmux" ~/Library/Preferences/com.apple.Terminal.plist | |
/usr/libexec/PlistBuddy -c "Add :'Window Settings':$profile:noWarnProcesses:2:ProcessName string rlogin" ~/Library/Preferences/com.apple.Terminal.plist | |
/usr/libexec/PlistBuddy -c "Add :'Window Settings':$profile:noWarnProcesses:3:ProcessName string ssh" ~/Library/Preferences/com.apple.Terminal.plist | |
/usr/libexec/PlistBuddy -c "Add :'Window Settings':$profile:noWarnProcesses:4:ProcessName string slogin" ~/Library/Preferences/com.apple.Terminal.plist | |
/usr/libexec/PlistBuddy -c "Add :'Window Settings':$profile:noWarnProcesses:5:ProcessName string telnet" ~/Library/Preferences/com.apple.Terminal.plist | |
fi | |
done | |
# Focus follows Mouse | |
# defaults write com.apple.Terminal FocusFollowsMouse -bool true | |
############################################################################### | |
# iTerm 2 # | |
############################################################################### | |
# TODO: Need to set the keyboard overrides for "back/forward 1 word" AND "Jobs to Ignore" | |
if ask "iTerm2 settings" Y; then | |
defaults write com.googlecode.iterm2 AllowClipboardAccess -bool true | |
defaults write com.googlecode.iterm2 AppleAntiAliasingThreshold -bool true | |
defaults write com.googlecode.iterm2 AppleScrollAnimationEnabled -bool false | |
defaults write com.googlecode.iterm2 AppleSmoothFixedFontsSizeThreshold -bool true | |
defaults write com.googlecode.iterm2 AppleWindowTabbingMode -string "manual" | |
defaults write com.googlecode.iterm2 AutoCommandHistory -bool false | |
defaults write com.googlecode.iterm2 CheckTestRelease -bool true | |
defaults write com.googlecode.iterm2 DimBackgroundWindows -bool true | |
defaults write com.googlecode.iterm2 HideTab -bool false | |
defaults write com.googlecode.iterm2 HotkeyMigratedFromSingleToMulti -bool true | |
defaults write com.googlecode.iterm2 IRMemory -int 4 | |
defaults write com.googlecode.iterm2 NSFontPanelAttributes -string "1, 0" | |
defaults write com.googlecode.iterm2 NSNavLastRootDirectory -string "${HOME}/Desktop" | |
defaults write com.googlecode.iterm2 NSQuotedKeystrokeBinding -string "" | |
defaults write com.googlecode.iterm2 NSScrollAnimationEnabled -bool false | |
defaults write com.googlecode.iterm2 NSScrollViewShouldScrollUnderTitlebar -bool false | |
defaults write com.googlecode.iterm2 NoSyncCommandHistoryHasEverBeenUsed -bool true | |
defaults write com.googlecode.iterm2 NoSyncDoNotWarnBeforeMultilinePaste -bool true | |
defaults write com.googlecode.iterm2 NoSyncDoNotWarnBeforeMultilinePaste_selection -bool false | |
defaults write com.googlecode.iterm2 NoSyncDoNotWarnBeforePastingOneLineEndingInNewlineAtShellPrompt -bool true | |
defaults write com.googlecode.iterm2 NoSyncDoNotWarnBeforePastingOneLineEndingInNewlineAtShellPrompt_selection -bool true | |
defaults write com.googlecode.iterm2 NoSyncHaveRequestedFullDiskAccess -bool true | |
defaults write com.googlecode.iterm2 NoSyncHaveWarnedAboutPasteConfirmationChange -bool true | |
defaults write com.googlecode.iterm2 NoSyncPermissionToShowTip -bool true | |
defaults write com.googlecode.iterm2 NoSyncSuppressBroadcastInputWarning -bool true | |
defaults write com.googlecode.iterm2 NoSyncSuppressBroadcastInputWarning_selection -bool false | |
defaults write com.googlecode.iterm2 OnlyWhenMoreTabs -bool false | |
defaults write com.googlecode.iterm2 OpenArrangementAtStartup -bool false | |
defaults write com.googlecode.iterm2 OpenNoWindowsAtStartup -bool false | |
defaults write com.googlecode.iterm2 PromptOnQuit -bool false | |
defaults write com.googlecode.iterm2 SUAutomaticallyUpdate -bool true | |
defaults write com.googlecode.iterm2 SUEnableAutomaticChecks -bool true | |
defaults write com.googlecode.iterm2 SUFeedAlternateAppNameKey -string iTerm; | |
defaults write com.googlecode.iterm2 SUFeedURL -string "https://iterm2.com/appcasts/final.xml?shard=69" | |
defaults write com.googlecode.iterm2 SUHasLaunchedBefore -bool true | |
defaults write com.googlecode.iterm2 SUUpdateRelaunchingMarker -bool false | |
defaults write com.googlecode.iterm2 SavePasteHistory -bool false | |
defaults write com.googlecode.iterm2 ShowBookmarkName -bool false | |
defaults write com.googlecode.iterm2 SplitPaneDimmingAmount -string "0.4070612980769232" | |
defaults write com.googlecode.iterm2 StatusBarPosition -integer 1 | |
defaults write com.googlecode.iterm2 SuppressRestartAnnouncement -bool true | |
defaults write com.googlecode.iterm2 TabStyleWithAutomaticOption -integer 4 | |
defaults write com.googlecode.iterm2 TraditionalVisualBell -bool true | |
defaults write com.googlecode.iterm2 UseBorder -bool true | |
defaults write com.googlecode.iterm2 WordCharacters -string "/-+\\\\~-integer." | |
defaults write com.googlecode.iterm2 findMode_iTerm -bool false | |
defaults write com.googlecode.iterm2 kCPKSelectionViewPreferredModeKey -bool false | |
defaults write com.googlecode.iterm2 kCPKSelectionViewShowHSBTextFieldsKey -bool false | |
# TODO: Need to set up the font settings for Powerline font in iTerm2 | |
# TODO: Need to set up the "Natural text editing" preset in Profiles > Keys preference pane for iTerm2 | |
# TODO: Need to set up the status bar layout and prefs in iTerm2 | |
# Note: To print the values, use this: | |
# /usr/libexec/PlistBuddy -c "Print :'New Bookmarks':0:'Jobs to Ignore'" ~/Library/Preferences/com.googlecode.iterm2.plist | |
/usr/libexec/PlistBuddy -c "Add :'New Bookmarks' array" ~/Library/Preferences/com.googlecode.iterm2.plist # Note: This is a naive way to ensure that the array is present on newly images OS | |
/usr/libexec/PlistBuddy -c "Delete :'New Bookmarks':0:Rows" ~/Library/Preferences/com.googlecode.iterm2.plist | |
/usr/libexec/PlistBuddy -c "Add :'New Bookmarks':0:Rows integer 48" ~/Library/Preferences/com.googlecode.iterm2.plist | |
/usr/libexec/PlistBuddy -c "Delete :'New Bookmarks':0:Columns" ~/Library/Preferences/com.googlecode.iterm2.plist | |
/usr/libexec/PlistBuddy -c "Add :'New Bookmarks':0:Columns integer 160" ~/Library/Preferences/com.googlecode.iterm2.plist | |
/usr/libexec/PlistBuddy -c "Delete :'New Bookmarks':0:'Silence Bell'" ~/Library/Preferences/com.googlecode.iterm2.plist | |
/usr/libexec/PlistBuddy -c "Add :'New Bookmarks':0:'Silence Bell' bool false" ~/Library/Preferences/com.googlecode.iterm2.plist | |
/usr/libexec/PlistBuddy -c "Delete :'New Bookmarks':0:'Unlimited Scrollback'" ~/Library/Preferences/com.googlecode.iterm2.plist | |
/usr/libexec/PlistBuddy -c "Add :'New Bookmarks':0:'Unlimited Scrollback' bool true" ~/Library/Preferences/com.googlecode.iterm2.plist | |
/usr/libexec/PlistBuddy -c "Delete :'New Bookmarks':0:'Use Cursor Guide'" ~/Library/Preferences/com.googlecode.iterm2.plist | |
/usr/libexec/PlistBuddy -c "Add :'New Bookmarks':0:'Use Cursor Guide' bool true" ~/Library/Preferences/com.googlecode.iterm2.plist | |
/usr/libexec/PlistBuddy -c "Delete :'New Bookmarks':0:'Visual Bell'" ~/Library/Preferences/com.googlecode.iterm2.plist | |
/usr/libexec/PlistBuddy -c "Add :'New Bookmarks':0:'Visual Bell' bool true" ~/Library/Preferences/com.googlecode.iterm2.plist | |
/usr/libexec/PlistBuddy -c "Delete :'New Bookmarks':0:'Jobs to Ignore'" ~/Library/Preferences/com.googlecode.iterm2.plist | |
/usr/libexec/PlistBuddy -c "Add :'New Bookmarks':0:'Jobs to Ignore' array" ~/Library/Preferences/com.googlecode.iterm2.plist | |
/usr/libexec/PlistBuddy -c "Add :'New Bookmarks':0:'Jobs to Ignore':0 string screen" ~/Library/Preferences/com.googlecode.iterm2.plist | |
/usr/libexec/PlistBuddy -c "Add :'New Bookmarks':0:'Jobs to Ignore':1 string tmux" ~/Library/Preferences/com.googlecode.iterm2.plist | |
/usr/libexec/PlistBuddy -c "Add :'New Bookmarks':0:'Jobs to Ignore':2 string rlogin" ~/Library/Preferences/com.googlecode.iterm2.plist | |
/usr/libexec/PlistBuddy -c "Add :'New Bookmarks':0:'Jobs to Ignore':3 string ssh" ~/Library/Preferences/com.googlecode.iterm2.plist | |
/usr/libexec/PlistBuddy -c "Add :'New Bookmarks':0:'Jobs to Ignore':4 string slogin" ~/Library/Preferences/com.googlecode.iterm2.plist | |
/usr/libexec/PlistBuddy -c "Add :'New Bookmarks':0:'Jobs to Ignore':5 string telnet" ~/Library/Preferences/com.googlecode.iterm2.plist | |
/usr/libexec/PlistBuddy -c "Add :'New Bookmarks':0:'Jobs to Ignore':5 string zsh" ~/Library/Preferences/com.googlecode.iterm2.plist | |
/usr/libexec/PlistBuddy -c "Delete :'New Bookmarks':0:'Minimum Contrast'" ~/Library/Preferences/com.googlecode.iterm2.plist | |
/usr/libexec/PlistBuddy -c "Add :'New Bookmarks':0:'Minimum Contrast' integer 0" ~/Library/Preferences/com.googlecode.iterm2.plist | |
fi | |
# TODO: Need to add these - stopping due to time constraints | |
# { | |
# "New Bookmarks" = ( | |
# { | |
# // Same level as 'Jobs to Ignore' | |
# "Character Encoding" -integer 4; | |
# "Mouse Reporting" -integer 1; | |
# "Close Sessions On End" -bool true | |
# Command -string "" | |
# Description -string Default | |
# "Flashing Bell" -bool true | |
# "Idle Code" -bool false | |
# Name -string Default | |
# "Non Ascii Font" = "Monaco 12"; | |
# "Non-ASCII Anti Aliased" = 1; | |
# "Normal Font" = "MenloForPowerline-Regular 14"; | |
# "Option Key Sends" -integer 0 | |
# "Prompt Before Closing 2" -integer 2 | |
# "Right Option Key Sends" -integer 0 | |
# Screen -string "-1" | |
# "Scrollback Lines" -integer 0 | |
# "Send Code When Idle" -bool false | |
# "Show Status Bar" = 1; | |
# "Sync Title" -bool false | |
# Transparency -string "0.1610584549492386" | |
# "Use Bold Font" -bool true | |
# "Use Bright Bold" -bool true | |
# "Use Italic Font" -bool true | |
# "Use Non-ASCII Font" -bool false | |
# "Window Type" -integer 0 | |
# "Working Directory" -string "${HOME}" | |
# } | |
# ); | |
# } | |
############################################################################### | |
# AppCleaner # | |
############################################################################### | |
if ask "AppCleaner settings" Y; then | |
defaults write net.freemacsoft.AppCleaner SUAutomaticallyUpdate -bool true | |
defaults write net.freemacsoft.AppCleaner SUEnableAutomaticChecks -bool true | |
defaults write net.freemacsoft.AppCleaner SUSendProfileInfo -bool false | |
fi | |
############################################################################### | |
# Hour - World Clock # | |
############################################################################### | |
# TODO: Capture all settings | |
############################################################################### | |
# CCleaner # | |
############################################################################### | |
# TODO: Capture all settings | |
############################################################################### | |
# Docker # | |
############################################################################### | |
if ask "Docker settings" Y; then | |
defaults write com.docker.docker SUAutomaticallyUpdate -bool true | |
defaults write com.docker.docker SUEnableAutomaticChecks -bool true | |
defaults write com.docker.docker SUUpdateRelaunchingMarker -bool true | |
fi | |
############################################################################### | |
# Firefox-nightly # | |
############################################################################### | |
if ask "Firefox settings" Y; then | |
defaults write -app "Firefox Nightly" NSFullScreenMenuItemEverywhere -bool false | |
defaults write -app "Firefox Nightly" NSNavLastRootDirectory -string "${HOME}/Downloads"; | |
defaults write -app "Firefox Nightly" NSNavLastUserSetHideExtensionButtonState -bool false | |
defaults write -app "Firefox Nightly" NSTreatUnknownArgumentsAsOpen -bool false | |
defaults write -app "Firefox Nightly" PMPrintingExpandedStateForPrint2 -bool false | |
fi | |
############################################################################### | |
# Flycut # | |
############################################################################### | |
if ask "Flycut settings" Y; then | |
defaults write com.generalarcade.flycut loadOnStartup -bool true | |
defaults write com.generalarcade.flycut pasteMovesToTop -bool true | |
defaults write com.generalarcade.flycut rememberNum -int 60; | |
defaults write com.generalarcade.flycut removeDuplicates -bool true | |
defaults write com.generalarcade.flycut store -dict-add displayLen -int 40 | |
defaults write com.generalarcade.flycut store -dict-add displayNum -int 10 | |
defaults write com.generalarcade.flycut store -dict-add favoritesRememberNum -int 40 | |
defaults write com.generalarcade.flycut store -dict-add rememberNum -int 60 | |
fi | |
############################################################################### | |
# Google-chrome-beta # | |
############################################################################### | |
if ask "Chrome settings" Y; then | |
defaults write com.google.Chrome AppleEnableMouseSwipeNavigateWithScrolls -bool false | |
defaults write com.google.Chrome AppleEnableSwipeNavigateWithScrolls -bool false | |
defaults write com.google.Chrome KeychainReauthorizeInAppSpring2017 -int 2 | |
defaults write com.google.Chrome KeychainReauthorizeInAppSpring2017Success -bool true | |
fi | |
############################################################################### | |
# ImageOptim # | |
############################################################################### | |
if ask "ImageOptim settings" Y; then | |
defaults write net.pornel.ImageOptim AdvPngLevel -int 5 | |
defaults write net.pornel.ImageOptim JpegOptimMaxQuality -int 85 | |
defaults write net.pornel.ImageOptim GuetzliEnabled -bool false | |
defaults write net.pornel.ImageOptim PngCrush2Enabled -bool true | |
defaults write net.pornel.ImageOptim SvgoEnabled -bool true | |
defaults write net.pornel.ImageOptim JpegTranStripAll -bool false | |
defaults write net.pornel.ImageOptim JpegTranStripAllSetByGuetzli -bool false | |
fi | |
############################################################################### | |
# KeepingYouAwake # | |
############################################################################### | |
if ask "KeepingYouAwake settings" Y; then | |
defaults write info.marcel-dierkes.KeepingYouAwake "info.marcel-dierkes.KeepingYouAwake.BatteryCapacityThreshold" -int 20 | |
defaults write info.marcel-dierkes.KeepingYouAwake "info.marcel-dierkes.KeepingYouAwake.BatteryCapacityThresholdEnabled" -bool true | |
fi | |
############################################################################### | |
# Monolingual # | |
############################################################################### | |
if ask "Monolingual settings" Y; then | |
defaults write net.sourceforge.Monolingual SUAutomaticallyUpdate -bool true | |
defaults write net.sourceforge.Monolingual SUEnableAutomaticChecks -bool true | |
defaults write net.sourceforge.Monolingual SUSendProfileInfo -bool false | |
defaults write net.sourceforge.Monolingual Strip -bool true | |
fi | |
############################################################################### | |
# ProtonVpn # | |
############################################################################### | |
if ask "ProtonVpn settings" Y; then | |
defaults write ch.protonvpn.mac ConnectOnDemand -bool true | |
defaults write ch.protonvpn.mac EarlyAccess -bool true | |
defaults write ch.protonvpn.mac NSInitialToolTipDelay -int 500; | |
defaults write ch.protonvpn.mac RememberLoginAfterUpdate -bool false | |
defaults write ch.protonvpn.mac SUAutomaticallyUpdate -bool false | |
defaults write ch.protonvpn.mac SUEnableAutomaticChecks -bool false | |
defaults write ch.protonvpn.mac SUFeedURL -string "https://protonvpn.com/download/macos-early-access-update.xml"; | |
defaults write ch.protonvpn.mac SecureCoreToggle -bool false | |
defaults write ch.protonvpn.mac StartMinimized -bool true | |
defaults write ch.protonvpn.mac StartOnBoot -bool true | |
defaults write ch.protonvpn.mac SystemNotifications -bool true | |
fi | |
############################################################################### | |
# Rambox # | |
############################################################################### | |
if ask "Rambox settings" Y; then | |
defaults write com.grupovrs.ramboxce NSFullScreenMenuItemEverywhere -bool false | |
defaults write com.grupovrs.ramboxce NSNavLastRootDirectory -string "${HOME}/Downloads" | |
defaults write com.grupovrs.ramboxce NSNavLastUserSetHideExtensionButtonState -bool false | |
defaults write com.grupovrs.ramboxce NSTreatUnknownArgumentsAsOpen -bool false | |
fi | |
############################################################################### | |
# Station # | |
############################################################################### | |
# TODO: Still need to capture | |
############################################################################### | |
# Signal-beta # | |
############################################################################### | |
if ask "Signal settings" Y; then | |
defaults write org.whispersystems.signal-desktop-beta NSFullScreenMenuItemEverywhere -bool false | |
defaults write org.whispersystems.signal-desktop-beta NSNavLastRootDirectory -string "${HOME}/Downloads" | |
defaults write org.whispersystems.signal-desktop-beta NSTreatUnknownArgumentsAsOpen -bool false | |
fi | |
############################################################################### | |
# Spectacle # | |
############################################################################### | |
if ask "Spectacle settings" Y; then | |
defaults write com.divisiblebyzero.Spectacle SUEnableAutomaticChecks -bool true | |
fi | |
############################################################################### | |
# The-unarchiver # | |
############################################################################### | |
if ask "The-unarchiver settings" Y; then | |
defaults write com.macpaw.site.theunarchiver SUEnableAutomaticChecks -bool true | |
defaults write com.macpaw.site.theunarchiver changeDateOfFiles -bool true | |
defaults write com.macpaw.site.theunarchiver folderModifiedDate -int 2 | |
defaults write com.macpaw.site.theunarchiver openExtractedFolder -bool true | |
defaults write com.macpaw.site.theunarchiver userAgreedToNewTOSAndPrivacy -bool true | |
fi | |
############################################################################### | |
# Thunderbird-beta # | |
############################################################################### | |
if ask "Thunderbird settings" Y; then | |
defaults write org.mozilla.thunderbird NSFullScreenMenuItemEverywhere -bool false | |
defaults write org.mozilla.thunderbird NSTreatUnknownArgumentsAsOpen -bool false | |
fi | |
############################################################################### | |
# Vlc # | |
############################################################################### | |
if ask "Vlc settings" Y; then | |
defaults write org.videolan.vlc.plist AudioEffectSelectedProfile -int 0 | |
defaults write org.videolan.vlc.plist SUEnableAutomaticChecks -bool true | |
defaults write org.videolan.vlc.plist VideoEffectSelectedProfile -int 0 | |
defaults write org.videolan.vlc.plist language -string auto | |
fi | |
############################################################################### | |
# Zoomus # | |
############################################################################### | |
if ask "Zoomus settings" Y; then | |
defaults write us.zoom.xos BounceApplicationSetting -int 2 | |
defaults write us.zoom.xos NSInitialToolTipDelay -int 100 | |
defaults write us.zoom.xos NSQuitAlwaysKeepsWindows -bool false | |
defaults write us.zoom.xos kZPSettingShowCodeSnippet -bool true | |
defaults write us.zoom.xos kZPSettingShowLinkPreview -bool true | |
fi | |
############################################################################### | |
# Activity Monitor # | |
############################################################################### | |
if ask "Show the main window when launching Activity Monitor" Y; then | |
defaults write com.apple.ActivityMonitor OpenMainWindow -bool true | |
fi | |
if ask "Visualize CPU usage in the Dock icon" Y; then | |
defaults write com.apple.ActivityMonitor IconType -int 5 | |
fi | |
if ask "Show all processes hierarchically" Y; then | |
defaults write com.apple.ActivityMonitor ShowCategory -int 101 | |
fi | |
if ask "Sort Activity Monitor results by CPU usage" Y; then | |
defaults write com.apple.ActivityMonitor SortColumn -string "CPUUsage" | |
defaults write com.apple.ActivityMonitor SortDirection -int 0 | |
fi | |
if ask "default to showing the Memory tab" Y; then | |
defaults write com.apple.ActivityMonitor SelectedTab -int 1 | |
fi | |
############################################################################### | |
# Photos # | |
############################################################################### | |
if ask "Prevent Photos from opening automatically when devices are plugged in" Y; then | |
defaults -currentHost write com.apple.ImageCapture disableHotPlug -bool true | |
fi | |
############################################################################### | |
# Software Update # | |
############################################################################### | |
if ask "Automatically check for updates (required for any downloads)" Y; then | |
sudo defaults write /Library/Preferences/com.apple.SoftwareUpdate.plist AutomaticCheckEnabled -bool true | |
fi | |
if ask "Download updates automatically in the background" Y; then | |
sudo defaults write /Library/Preferences/com.apple.SoftwareUpdate AutomaticDownload -bool true | |
fi | |
if ask "Install app updates automatically" Y; then | |
sudo defaults write /Library/Preferences/com.apple.commerce AutoUpdate -bool true | |
defaults write com.apple.commerce AutoUpdate -bool true | |
fi | |
if ask "Don't Install macos updates automatically" Y; then | |
sudo defaults write /Library/Preferences/com.apple.commerce AutoUpdateRestartRequired -bool false | |
fi | |
if ask "Install system data file updates automatically" Y; then | |
sudo defaults write /Library/Preferences/com.apple.SoftwareUpdate.plist ConfigDataInstall -bool true | |
fi | |
if ask "Install critical security updates automatically" Y; then | |
sudo defaults write /Library/Preferences/com.apple.SoftwareUpdate.plist CriticalUpdateInstall -bool true | |
fi | |
if ask "Check for software updates daily, not just once per week" Y; then | |
defaults write com.apple.SoftwareUpdate ScheduleFrequency -int 1 | |
fi | |
############################################################################### | |
# Mac App Store # | |
############################################################################### | |
# Disable smart quotes as they’re annoying when typing code | |
# defaults write -g NSAutomaticQuoteSubstitutionEnabled -bool false | |
# Disable smart dashes as they’re annoying when typing code | |
# defaults write -g NSAutomaticDashSubstitutionEnabled -bool false | |
# Enable the WebKit Developer Tools in the Mac App Store | |
defaults write com.apple.appstore WebKitDeveloperExtras -bool true | |
# Enable Debug Menu in the Mac App Store | |
defaults write com.apple.appstore ShowDebugMenu -bool true | |
# Add a context menu item for showing the Web Inspector in web views | |
defaults write -g WebKitDeveloperExtras -bool true | |
############################################################################### | |
# Google Chrome & Google Chrome Canary # | |
############################################################################### | |
# Disable the all too sensitive backswipe on trackpads | |
defaults write com.google.Chrome AppleEnableSwipeNavigateWithScrolls -bool false | |
defaults write com.google.Chrome.canary AppleEnableSwipeNavigateWithScrolls -bool false | |
# Disable the all too sensitive backswipe on Magic Mouse | |
defaults write com.google.Chrome AppleEnableMouseSwipeNavigateWithScrolls -bool false | |
defaults write com.google.Chrome.canary AppleEnableMouseSwipeNavigateWithScrolls -bool false | |
# Allow installing user scripts via GitHub or Userscripts.org | |
# defaults write com.google.Chrome ExtensionInstallSources -array "https://*.github.com/*" "http://userscripts.org/*" | |
# defaults write com.google.Chrome.canary ExtensionInstallSources -array "https://*.github.com/*" "http://userscripts.org/*" | |
############################################################################### | |
# Flycut # | |
############################################################################### | |
defaults write com.generalarcade.flycut rememberNum -int 60 | |
defaults write com.generalarcade.flycut loadOnStartup -bool true | |
defaults write com.generalarcade.flycut pasteMovesToTop -bool true | |
defaults write com.generalarcade.flycut removeDuplicates -bool true | |
############################################################################### | |
# Time Machine # | |
############################################################################### | |
# Prevent Time Machine from prompting to use new hard drives as backup volume | |
defaults write com.apple.TimeMachine DoNotOfferNewDisksForBackup -bool true | |
# Disable local Time Machine backups | |
# TODO: This causes an error to be printed to stdout - need to investigate if this is deprecated | |
# hash tmutil &> /dev/null && sudo tmutil disablelocal | |
# Auto backup: | |
# defaults write com.apple.TimeMachine AutoBackup =1 | |
# Backup frequency default= 3600 seconds (every hour) 1800 = 1/2 hour, 7200=2 hours | |
# sudo defaults write /System/Library/Launch Daemons/com.apple.backupd-auto StartInterval -int 1800 | |
############################################################################### | |
# Screen # | |
############################################################################### | |
# Require password immediately after sleep or screen saver begins | |
defaults write com.apple.screensaver askForPassword -bool true | |
defaults write com.apple.screensaver askForPasswordDelay -int 0 | |
# Enable subpixel font rendering on non-Apple LCDs (0=off, 1=light, 2=Medium/flat panel, 3=strong/blurred) | |
# This is mostly needed for non-Apple displays. | |
defaults write -g AppleFontSmoothing -int 2 | |
# Enable HiDPI display modes (requires restart) | |
sudo defaults write /Library/Preferences/com.apple.windowserver DisplayResolutionEnabled -bool true | |
############################################################################### | |
# Screen capture # | |
############################################################################### | |
# Save screenshots to the desktop | |
defaults write com.apple.screencapture location -string "${HOME}/Desktop" | |
# Save screenshots in PNG format (other options: BMP, GIF, JPG, PDF, TIFF) | |
defaults write com.apple.screencapture type -string "png" | |
# Disable shadow in screenshots | |
# defaults write com.apple.screencapture disable-shadow -bool true | |
############################################################################### | |
# iCal # | |
############################################################################### | |
# Log HTTP Activity: | |
# defaults write com.apple.iCal LogHTTPActivity -bool true | |
############################################################################### | |
# Address Book # | |
############################################################################### | |
# Show Contact Reflection: | |
# defaults write com.apple.AddressBook reflection -boolean | |
defaults write com.apple.AddressBook ABBirthDayVisible -bool true | |
defaults write com.apple.AddressBook ABDefaultAddressCountryCode -string in | |
############################################################################### | |
# iTunes 10 # | |
############################################################################### | |
# Make the arrows next to artist & album jump to local iTunes library folders instead of Store: | |
# defaults write com.apple.iTunes show-store-link-arrows -bool true | |
# defaults write com.apple.iTunes invertStoreLinks -bool true | |
# Restore the standard close/minimise buttons: | |
# defaults write com.apple.iTunes full-window -1 | |
# Hide the iTunes Genre list: | |
# defaults write com.apple.iTunes show-genre-when-browsing -bool false | |
############################################################################### | |
# OmniGraffle # | |
############################################################################### | |
# Allow scroll wheel zooming: | |
# defaults write com.omnigroup.OmniGraffle DisableScrollWheelZooming -bool false | |
# Allow scroll wheel zooming in OmniGrafflePro: | |
# defaults write com.omnigroup.OmniGrafflePro DisableScrollWheelZooming -bool false | |
############################################################################### | |
# Quick Time Player # | |
############################################################################### | |
# Automatically show Closed Captions (CC) when opening a Movie: | |
# defaults -currentHost write com.apple.QuickTimePlayerX.plist MGEnableCCAndSubtitlesOnOpen -boolean | |
############################################################################### | |
## Spaces # | |
############################################################################### | |
# When switching applications, switch to respective space | |
defaults write -g AppleSpacesSwitchOnActivate -bool true | |
############################################################################### | |
# Kill affected applications # | |
############################################################################### | |
for app in "Activity Monitor" \ | |
"Address Book" \ | |
"Calendar" \ | |
"cfprefsd" \ | |
"Contacts" \ | |
"Dock" \ | |
"Finder" \ | |
"Flycut" \ | |
"Google Chrome Canary" \ | |
"Google Chrome" \ | |
"Mail" \ | |
"Safari" \ | |
"SizeUp" \ | |
"Spectacle" \ | |
"SystemUIServer" \ | |
"iCal"; do | |
killall "${app}" &> /dev/null | |
done | |
sudo softwareupdate --schedule ON | |
echo "Need to manually quit and restart 'Terminal' and 'iTerm' - since one of these might be running this script." | |
echo "Done. Note that some of these changes require a logout/restart to take effect." |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment