Skip to content

Instantly share code, notes, and snippets.

@elipapa
Last active February 26, 2024 04:27
Show Gist options
  • Save elipapa/08bb72574d1f3d0f1f3a to your computer and use it in GitHub Desktop.
Save elipapa/08bb72574d1f3d0f1f3a to your computer and use it in GitHub Desktop.
Steps to set up a new osx laptop for data science and computational biology work

Set up a new os x laptop

Steps to setup a new OS X laptop with a data science & computational biology development environment.

Last updated: 7 Jan 2017 macOS: Yosemite => Sierra

Sure you could try to do this from dotfiles, but historically something has broken and required manual input anyway. So, inspired by the pragmatism of paul irish bash setup script and a few other gists written in markdown like this, I rolled my own.

Some design considerations:

  • I tried a few password manager, but settled on using macOS keychain
  • However, i) needing to use chrome for work and ii) access on mobile meant that I decided to transition to lastpass
  • Most of my documents are synced by dropbox or google drive, so i keep minimal stuff on local hard drive only
  • Configuration are synced on dropbox in the ~/Dropbox/OSXdotfiles directory, with the exception of those API tokens and encrypted info, which better stay off cloud services. when I first did this, I was not aware of mackup which automates all of this
  • after trying to use anaconda python for a while, I opted to switch back to homebrew's python. I like that i can install other non-scientific packages without breaking python-packages dependencies. If I use anaconda, I place the anaconda path at the end, rather than at the beginning of $PATH
  • I rely on arq 5 for mac to backup most things to the unlimited amazon cloud drive

1. What to grab from the old machine

make a temporary directory

mkdir ~/migration && cd ~/migration

keychains, ssh, pgp, API tokens

Put this very important stuff on a USB key. I make a regular copy more than once a day using Arq backup to amazon cloud drive (55$/year unlimited), but using borg to a free Dropbox account works well as a cheaper alternative.

 # all the keychains and secret keys
rsync -av ~/Library/Keychains/ migration/Keychains/
rsync -av ~/.ssh migration/.ssh
rsync -av ~/.gnupg migration/.gnupg
rsync -av ~/.borg migration/.borg
rsync -av ~/.airvpn migration/.airvpn

 # all local tokens and paths that are not normally in public repo
for f in ~/.*.local; do cp $f migration/; done

or just rsync all dotfiles

rsync -av ~/.[^.]* migration/dotfiles

note this works in bash but not zsh because of automatic * expansion.

zip the directory using a password for safety

zip -er migration.zip migration/

Perfect destination is an external USB drive or key. Drag the resulting encrypted zip on there. Unzip in the new machine.

Other optional things...

a list of homebrew packages.

brew leaves | sed 's/^/install /' > ~/migration/Brewfile    # all top-level brew installs
brew cask list > ~/migration/Caskfile

A more sophisticated approach is using a Brewfile like the one in this gist. If you have the homebrew bundle command installed you can create a Brewfile by simply using

brew bundle dump
 # this creates a Brewfile in the current directory (eg. ~/migration)

The brewfile I keep here is the master, but my machine usually gains a few packages and the file becomes out of date. To compare and add differences I do:

mv ~/migration/Brewfile ~/migration/Brewfile.now
comm -23 <(sort ~/migration/Brewfile.now) <(sort thisgist_brewfile)
 # outputs a list of those packages on the machine but not included in the gist.
 # copy paste manually the ones you actually want or simply cat

cat ~/migration/Brewfile.now thisgist_brewfile | sort | uniq > ~/migration/Brewfile

a list of python packages

Attached to this gist is a pip requirements.txt file that list the main packages that should be there. We can compare that list with what has been installed on the machine we are about to leave.

pip3 freeze | sed 's/==.*//' > old-requirements.txt

 # show the packages that are installed on the old machine and are not included in the requirements file
comm -23 <(sort ~/migration/old-requirements.txt) <(sort requirements.txt)

On your way out check for...

system settings

Getting a full list of any settings changed is difficult. I have opted for forking the mighty .osx, but this might become out of date with the actual preferences I have selected on the laptop. Hopefully nothing I can't live with.

command line settings

make sure the zprezto repo is fully commited and pushed to github. I wish there was a oh-my-bash out there.

atom,sublime text,vim,emacs settings

I keep sublime text preferences synced in Dropbox ~/Dropbox/OSXdotfiles/Subl/. One needs only to save the User directory.

Others

  • Chrome tabs via OneTab One can probably go in the onetab extension and export everything, but the local files shoud be in:
cp ~/Library/Application\ Support/Google/Chrome/Default/Local\ Storage/chrome-extension_chphlpgkkbolifaimnlloiipkdnihall_0.localstorage-journal ~/Dropbox/OSXdotfiles/onetab/

cp ~/Library/Application\ Support/Google/Chrome/Default/Local\ Storage/chrome-extension_chphlpgkkbolifaimnlloiipkdnihall_0.localstorage ~/Dropbox/OSXdotfiles/onetab/
  • iTerm settings. I keep them synced in Dropbox Dropbox/OSXdotfiles/iTerm
  • safari tabs / chrome tabs + bookmarks
  • software licenses
  • Movies
  • Pictures

to be extra safe

Before wiping, make a copy of the disk in its entirety with SuperDuper or CarbonCopyCloner.


2. Install the basics on the new laptop

OS X basics

Add passwords for google accounts (pwd + 2fa token) and check what you want synced. At the moment I rely on google as my main base so:

  • Turn on google calendar, contacts sync
  • Turn off icloud calendar + contacts sync

Log into gmail on safari using google password + 2fa token

Update the software to the latest version. Apple Icon > Software Update...

Fix the sidebar (TODO: automate) in the finder panels

Dropbox & Google Drive

i could do this with brew cask, but it's a lot easier to download and install the client by hand. Also for google drive. I need both to sync before i can continue much of the below.

So login, authenticate and take a nap until directories are all synced. If you can't wait, at least sync:

  • OSXdotfiles Use selective sync in the dropbox app preference to do that.

browser extension

  • install lastpass
  • install pocket

mac apps

  • install todoist (my current choice of todo)
  • install simplenote

arq backup

install the client, put the licence code in, fix amazon cloud drive as the destination

Install iTerm2

While you wait for Dropbox syncing, download iTerm2 and install it. Dont load your preferences for now, as they rely on the presence of zsh.

XCode

Install XCode CLI Tools from the command line.

xcode-select --install &> /dev/null

If installing Xcode one needs to also agree to the license using sudo xcodebuild -license, but when i installed only the commandline tools, it doesn't let me run the command saying it needs a valid instance of xcode. So far not a limitation though.

There also seems to be a way to install the tools in headless mode without a GUI

System preferences

Run the osx.sh script in this same gist.

keychains and ssh

Copy the ssh keys and gnupg keys. NOTE This is really bad SSH practice. SSH keys should only be transferred if you are really not using the old machine anymore. Otherwise you should make new keys for each laptop/machine you plan to ever use. That said, it is much more comfortable not having to re-upload all those public keys to github, servers, etc.

rsync -av migration/.ssh/ ~
rsync -av migration/.gnupg/ ~

Add the old keychain to the list of your keychains.

cp migration/Keychains/login.keychain ~/Library/Keychains/login.oldmachine.keychain

Then open the keychain in Keychain Access and type in the password for the login.oldmachine.keychain as it was in the old machine.

optional copy every password that was there to the main login keychain. After you are done delete the login.oldmachine.keychain file in the directory, to avoid any future confusion. If you have already a lot of keychain items than there are ways to speed this up, but not by much. I have looked at using the security command from terminal but it's more cumbersome than copying and pasting all items across. All of this may only be pleasing your inner OCD self rather than being useful. UPDATE(nov 2015) -- In fact, this can easily break the keychain in the new system!! be warned. I won't be using this trick in the future

backup the login.keychain to the cloud (this can wait until the end)

**TODO update the script so rathen than rsyncing it with a volume (or folder linke ~/Sync) it actually creates backups. (using for eg. duplicity, tar.gz, bup, burp, borg, arq) **

Set up a cron job on mac to regularly backup the keychain with borg. Depending if you are taking the script from the gist:

git clone https://gist.github.com/elipapa/81251ec54f08e86a4819 kbak
mv kbak/com.elipapa.keychains-backup.plist ~/Library/LaunchAgents/
mv kbak/keychains_backup.sh ~/dotfiles/
sudo launchctl load ~/Library/LaunchAgents/com.elipapa.keychains-backup.plist
rm -rf kbak

or from the dotfiles directory:

ln -s com.elipapa.keychains-backup.plist ~/Library/LaunchAgents/
sudo launchctl load ~/Library/LaunchAgents/com.elipapa.keychains-backup.plist

Install iTerm2

Download iTerm2 and install it. Dont load your preferences for now, as they rely on the presence of zsh.

System preferences

Run the osx.sh script.

Also:

  • change the caps lock to control in keyboard system control panel

XCode

Install XCode CLI Tools from the command line. One needs to also agree to the license

if [ $(xcode-select -p &> /dev/null; printf $?) -ne 0 ]; then
    xcode-select --install &> /dev/null
    # Wait until the XCode Command Line Tools are installed
    while [ $(xcode-select -p &> /dev/null; printf $?) -ne 0 ]; do
        sleep 5
    done
  xcode-select -p &> /dev/null
  if [ $? -eq 0 ]; then
        # Prompt user to agree to the terms of the Xcode license
        # https://github.com/alrra/dotfiles/issues/10
       sudo xcodebuild -license
   fi
fi

Homebrew

Instructions should not change often, but can be double checked on the homepage. We must have set up the github token before starting to use homebrew

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

check everything worked ok

brew doctor

install the key ones first and foremost

brew install git
brew install zsh

Install prezto

I forked the original repo to add some changes to paths and the modules I use. I want to keep as close as possible to the original runcoms offered by the repo.

 # make sure you have the homebrew zsh installed
which zsh

 #launch it
zsh

 # (fork and )clone prezto
git clone --recursive https://github.com/sorin-ionescu/prezto.git "${ZDOTDIR:-$HOME}/.zprezto"

 # using my repo
 git clone --recursive https://github.com/elipapa/prezto.git ~/.zprezto


 # Create a new Zsh configuration by copying the Zsh configuration files provided:
setopt EXTENDED_GLOB
for rcfile in "${ZDOTDIR:-$HOME}"/.zprezto/runcoms/^README.md(.N); do
  ln -s "$rcfile" "${ZDOTDIR:-$HOME}/.${rcfile:t}"
done

 # add the homebrew zsh to /etc/shells
 # see http://stackoverflow.com/questions/791227/unable-to-update-my-bash-in-mac-by-macports
sudo -s
echo /usr/local/bin/zsh >> /etc/shells
exit

 # now you can set the homebrew Zsh as your default shell:
chsh -s /usr/local/bin/zsh

Instructions on github on how to keep the fork up to date

Customize iTerm2

One could reinstall iTerm2 using cask, which helps keeping things up to date later on.

tap caskroom/cask
tap caskroom/versions

install caskroom/cask/brew-cask

 # remove old iTerm2
cask install iterm2

Now that you have zsh installed, load the profiles that live in Dropbox. You can load the ones you have exported by hand or read the file copied from the directory like so:

defaults read ~/migration/com.googlecode.iterm2

Also double check that iTerm2 starts with zsh as the command rather than login, as this could cause [massive slowdown on terminal startup].

To fix the powerline fonts

After Dropbox & Google Drive have synced

Link working directories into $HOME:

 #i keep any dirty code i am working on in here
ln -s ~/Dropbox/dev ~

 #i keep comp bio projects here
ln -s ~/Dropbox/bio ~

 #i keep my published repos here
ln -s ~/Dropbox/src ~

Keep user documents, user desktop and user fonts in cloud storage. Notice how this fonts folder already contains patched powerline fonts

sudo rm -rf ~/Documents
ln -s ~/Dropbox/Documents ~/Documents

sudo rm -rf ~/Desktop
ln -s ~/Google\ Drive/Desktop ~/Desktop

sudo rm -rf ~/Library/Fonts
ln -s ~/Dropbox/Fonts ~/Library/Fonts

Also sync all preferences from the dropbox directory ~/Dropbox/OSXdotfiles/install_symlinks.sh. One can also use Mackup which simply automates the same steps.

Homebrew part 2 (the long one)

Once that is done, we can use the Brewfile created above to install packages and Casks.

brew tap Homebrew/bundle
brew bundle # in the directory where the Brewfile is located

Editor

 # add the sublime command
ln -s /opt/homebrew-cask/Caskroom/sublime-text3/3047/Sublime\ Text.app/Contents/SharedSupport/bin/subl  /usr/local/bin/subl

 # old way was..
 #ln -sf "/Applications/Sublime Text.app/Contents/SharedSupport/bin/subl" ~/bin/subl

Synchronize the packages as they are kept in dropbox

 # remove the local copies
rm -rf ~/Library/Application\ Support/Sublime\ Text\ 3/Packages
rm -rf ~/Library/Application\ Support/Sublime\ Text\ 3/Installed\ Packages

 # link to the master copies
ln -s ~/Dropbox/OSXdotfiles/Subl/Packages ~/Library/Application\ Support/Sublime\ Text\ 3/Packages
ln -s ~/Dropbox/OSXdotfiles/Subl/Installed\ Packages ~/Library/Application\ Support/Sublime\ Text\ 3/Installed\ Packages

Python

Use pip3 install -r requirements.txt with the attached file to install an inital list of packages.

R

Nothing needed except the installation of the IRKernel into the jupyter notebooks. In R console type:

install.packages(c('rzmq','repr','IRkernel','IRdisplay'),
                 repos = c('http://irkernel.github.io/', getOption('repos')))

More on Java setup

In the Brewfile java is installed using cask, which turns out to be the best way to do it. As suggested in the previous link, if more than one version is necessary, one can use jenv.

brew install jenv
brew cask tap caskroom/versions

brew cask install java7
brew cask install java6
brew cask install java    # though this is already in the brew file

 # install using zshrc
echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.zshrc
echo 'eval "$(jenv init -)"' >> ~/.zshrc

 # add the installed java versions
jenv add /Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home

install quicklook plugins

brew cask install qlcolorcode qlstephen qlmarkdown quicklook-json qlprettypatch quicklook-csv betterzipql webp-quicklook suspicious-package && qlmanage -r

Webdev

ruby

Install ruby using rbenv

 #To use Homebrew's directories rather than ~/.rbenv add to your profile:
export RBENV_ROOT=/usr/local/var/rbenv

 #To enable shims and autocompletion add to your profile:
if which rbenv > /dev/null; then eval "$(rbenv init -)"; fi

one should also turn on the ruby module in the .zpreztorc file.

local servers

Install pow and anvil

 #Create the required host directories:
  mkdir -p ~/Library/Application\ Support/Pow/Hosts
  ln -s ~/Library/Application\ Support/Pow/Hosts ~/.pow

 #Setup port 80 forwarding and launchd agents:
  sudo pow --install-system
  pow --install-local

 #Load launchd agents:
  sudo launchctl load -w /Library/LaunchDaemons/cx.pow.firewall.plist
  launchctl load -w ~/Library/LaunchAgents/cx.pow.powd.plist

brew cask install anvil

Javascript setup

Node and NPM will be installed by the Brewfile. Other than that you can install some key packages globally

npm install -g coffee-script
npm install -g grunt-cli

npm install -g jshint

Manual installs

More on some binary apps

Binary apps that have to be installed by hand (via the App Store):

  • Pages
  • Keynote
  • Simplenote
  • DayOne

Some binary apps benefit from additional work around their installation

Chrome

brew cask install google-chrome

 # # Allow installing user scripts via GitHub Gist or Userscripts.org
defaults write com.google.Chrome ExtensionInstallSources -array "https://gist.githubusercontent.com/" "http://userscripts.org/*"
defaults write com.google.Chrome.canary ExtensionInstallSources -array "https://gist.githubusercontent.com/" "http://userscripts.org/*"

 # # 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

 # Use the system-native print preview dialog
defaults write com.google.Chrome DisablePrintPreview -bool true
defaults write com.google.Chrome.canary DisablePrintPreview -bool true

 # Expand the print dialog by default
defaults write com.google.Chrome PMPrintingExpandedStateForPrint2 -bool true
defaults write com.google.Chrome.canary PMPrintingExpandedStateForPrint2 -bool true

Transmission.app

brew cask install transmission

 # Use `~/Documents/Torrents` to store incomplete downloads
defaults write org.m0k.transmission UseIncompleteDownloadFolder -bool true
defaults write org.m0k.transmission IncompleteDownloadFolder -string "${HOME}/Documents/Torrents"

 # Don’t prompt for confirmation before downloading
defaults write org.m0k.transmission DownloadAsk -bool false

 # Trash original torrent files
defaults write org.m0k.transmission DeleteOriginalTorrent -bool true

 # Hide the donate message
defaults write org.m0k.transmission WarningDonate -bool false
 # Hide the legal disclaimer
defaults write org.m0k.transmission WarningLegal -bool false

VPN

cisco anyconnect

authenticate with duo to download the installer from mit then you can login with userid+pwd from kerberos.

airvpn

Find the client in google drive. Find the login in the password manager.


Other things to try out

tap 'caskroom/cask'
tap 'caskroom/versions'
tap 'homebrew/bundle'
tap 'homebrew/dupes'
tap 'homebrew/versions'
tap 'homebrew/science'
tap 'homebrew/fuse'
cask 'dropbox' #essential
cask 'google-drive' #essential
brew 'caskroom/cask/brew-cask'
brew 'ag' # silver searcher is better than ack
brew 'android-sdk'
brew 'ant'
brew 'autoconf'
brew 'automake'
brew 'boost'
brew 'cairo'
brew 'cloog'
brew 'cmake'
brew 'coreutils'
brew 'dos2unix'
brew 'duff'
brew 'duplicity'
brew 'elasticsearch'
brew 'exiftool'
brew 'fasd'
brew 'fdupes'
brew 'ffmpeg'
brew 'findutils'
brew 'fontconfig'
brew 'freetype'
brew 'gcc'
brew 'gd', args: ['with-freetype']
brew 'gdbm'
brew 'gettext'
brew 'ghostscript'
brew 'gibo'
brew 'gist'
brew 'git' #essential
brew 'glib'
brew 'gmp'
brew 'gnu-sed', args: ['with-default-names']
brew 'gnu-time'
brew 'gnupg'
brew 'gsl'
brew 'intltool'
brew 'isl'
brew 'jbig2dec'
brew 'jpeg'
brew 'jq'
brew 'lame'
brew 'libevent'
brew 'libffi'
brew 'libmpc'
brew 'libpng'
brew 'librsync'
brew 'libtasn1'
brew 'libtiff'
brew 'libtool'
brew 'libvo-aacenc'
brew 'little-cms2'
brew 'lz4'
brew 'lzo'
brew 'lzop'
brew 'makedepend'
brew 'md5sha1sum'
brew 'mercurial'
brew 'mongodb'
brew 'mp3info'
brew 'mp4v2'
brew 'mpfr'
brew 'mtr'
brew 'mysql'
brew 'nettle'
brew 'nmap'
brew 'node'
brew 'oniguruma'
brew 'openssl'
brew 'p11-kit'
brew 'parallel'
brew 'pcre'
brew 'pdfgrep'
brew 'pixman'
brew 'pkg-config'
brew 'popt'
brew 'pow'
brew 'psutils'
brew 'python'
brew 'python3'
brew 'q'
brew 'qt'
brew 'rbenv'
brew 'rbenv-gem-rehash'
brew 'rdfind'
brew 'readline'
brew 'redis'
brew 'rename'
brew 'rlog'
brew 'ruby-build'
brew 's3cmd', args: ['HEAD']
brew 'scons'
brew 'spark' #sparklines for the shell
brew 'speedtest_cli'
brew 'sqlite'
brew 'ssdeep'
brew 'ssh-copy-id'
brew 'tmux'
brew 'tree'
brew 'wget'
brew 'x264'
brew 'xvid'
brew 'xz'
brew 'zeromq'
brew 'zsh' #essential
## dupes
brew 'homebrew/dupes/apple-gcc42'
brew 'homebrew/dupes/bzip2'
brew 'homebrew/dupes/rsync'
brew 'homebrew/dupes/zlib'
brew 'homebrew/dupes/grep'
brew 'homebrew/dupes/openssh'
brew 'homebrew/dupes/screen'
## file systems
brew 'homebrew/fuse/encfs'
brew 'homebrew/fuse/fuse4x-kext'
brew 'homebrew/fuse/s3fs'
brew 'homebrew/fuse/sshfs'
## science
brew 'homebrew/science/bedtools'
brew 'homebrew/science/bioawk'
brew 'homebrew/science/blat'
brew 'homebrew/science/ea-utils'
brew 'homebrew/science/fasttree'
brew 'homebrew/science/fastx_toolkit'
brew 'homebrew/science/hmmer'
brew 'homebrew/science/htslib'
brew 'homebrew/science/mafft'
brew 'homebrew/science/meme'
brew 'homebrew/science/muscle'
brew 'homebrew/science/openblas'
brew 'homebrew/science/r'
brew 'homebrew/science/samtools'
brew 'homebrew/science/seqtk'
brew 'homebrew/science/tabix'
brew 'homebrew/science/vsearch'
## specific versions
brew 'homebrew/versions/gmp4'
brew 'homebrew/versions/isl011'
brew 'homebrew/versions/cloog018'
brew 'homebrew/versions/mpfr2'
brew 'homebrew/versions/libmpc08'
brew 'homebrew/versions/gcc49'
brew 'homebrew/versions/zeromq22'
brew 'homebrew/versions/gcc49'
### Binaries
cask 'osxfuse'
cask 'xquartz'
cask 'borgbackup'
cask 'dayone-cli'
cask 'java'
cask 'pdftotext'
cask 'wkhtmltopdf'
### Apps
#cask 'prey'
cask 'anvil'
cask 'appcleaner'
cask 'cheatsheet'
cask 'cyberduck'
cask 'dashlane'
cask 'disk-inventory-x'
cask 'evernote'
cask 'flux'
cask 'github-desktop'
cask 'google-chrome'
cask 'gpgtools'
cask 'gpgtools'
cask 'handbrake'
cask 'imageoptim'
cask 'iterm2-beta'
cask 'robomongo'
cask 'rstudio'
cask 'selfcontrol'
cask 'shimeike-formulatepro'
cask 'skype'
cask 'sourcetree'
cask 'spectacle'
cask 'spotify'
cask 'sublime-text3'
cask 'superduper'
cask 'the-unarchiver'
cask 'todoist'
cask 'torbrowser'
cask 'transmission'
cask 'vagrant'
cask 'vlc'
brew 'aria2'
brew 'bison'
brew 'corkscrew'
brew 'gcc@4.9'
brew 'git'
brew 'gmp@4'
brew 'gnu-sed'
brew 'gobject-introspection'
brew 'gstreamer'
brew 'homebrew/boneyard/lftp'
brew 'homebrew/boneyard/tabix'
brew 'homebrew/science/diamond'
brew 'homebrew/science/emboss'
brew 'homebrew/science/igv'
brew 'htop-osx'
brew 'isl@0.11'
brew 'libmpc@0.8'
brew 'md5deep'
brew 'mpfr@2'
brew 'qt5'
brew 'spark'
brew 'syncthing'
brew 'syncthing-inotify', restart_service: true
brew 'the_silver_searcher'
brew 'zsh'
tap 'homebrew/boneyard'
tap 'homebrew/core'
tap 'homebrew/services'
tap 'thoughtbot/formulae'
#!/usr/bin/env bash
# forked from
# ~/.osx — https://mths.be/osx
# 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)
export THEHOSTNAME="lapofeli"
sudo scutil --set ComputerName $THEHOSTNAME
sudo scutil --set HostName $THEHOSTNAME
sudo scutil --set LocalHostName $THEHOSTNAME
sudo defaults write /Library/Preferences/SystemConfiguration/com.apple.smb.server NetBIOSName -string $THEHOSTNAME
# Set standby delay to 24 hours (default is 1 hour)
sudo pmset -a standbydelay 86400 #make hibernation to disk less frequent
sudo pmset -b displaysleep 3 sleep 10 #battery
sudo pmset -c displaysleep 10 sleep 120 #charger
# Disable the sound effects on boot
sudo nvram SystemAudioVolume=" "
# Disable transparency in the menu bar and elsewhere on Yosemite
# defaults write com.apple.universalaccess reduceTransparency -bool true
# Menu bar: hide the Time Machine, Volume, and User icons
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"
# Set sidebar icon size to medium
#defaults write NSGlobalDomain NSTableViewDefaultSizeMode -int 2
# Always show scrollbars
#defaults write NSGlobalDomain AppleShowScrollBars -string "Always"
# Possible values: `WhenScrolling`, `Automatic` and `Always`
# Disable smooth scrolling
# (Uncomment if you’re on an older Mac that messes up the animation)
#defaults write NSGlobalDomain NSScrollAnimationEnabled -bool false
# Increase window resize speed for Cocoa applications
#defaults write NSGlobalDomain NSWindowResizeTime -float 0.001
# Expand save panel by default - when do you ever need a tiny one?
defaults write NSGlobalDomain NSNavPanelExpandedStateForSaveMode -bool true
defaults write NSGlobalDomain NSNavPanelExpandedStateForSaveMode2 -bool true
# Expand print panel by default
defaults write NSGlobalDomain PMPrintingExpandedStateForPrint -bool true
defaults write NSGlobalDomain PMPrintingExpandedStateForPrint2 -bool true
# Save to disk (not to iCloud) by default
defaults write NSGlobalDomain NSDocumentSaveNewDocumentsToCloud -bool false
# Automatically quit printer app once the print jobs complete
defaults write com.apple.print.PrintingPrefs "Quit When Finished" -bool true
# Disable the “Are you sure you want to open this application?” dialog
defaults write com.apple.LaunchServices LSQuarantine -bool false
# Remove duplicates in the “Open With” menu (also see `lscleanup` alias)
/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister -kill -r -domain local -domain system -domain user
# 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 NSGlobalDomain NSTextShowsControlCharacters -bool true
# Disable Resume system-wide
#defaults write com.apple.systempreferences NSQuitAlwaysKeepsWindows -bool false
# Disable automatic termination of inactive apps
#defaults write NSGlobalDomain NSDisableAutomaticTermination -bool true
# Disable the crash reporter
defaults write com.apple.CrashReporter DialogType -string "none"
# Set Help Viewer windows to non-floating mode
#defaults write com.apple.helpviewer DevMode -bool true
# Fix for the ancient UTF-8 bug in QuickLook (https://mths.be/bbo)
# Commented out, as this is known to cause problems in various Adobe apps :(
# See https://github.com/mathiasbynens/dotfiles/issues/237
#echo "0x08000100:0" > ~/.CFUserTextEncoding
# Reveal IP address, hostname, OS version, etc. when clicking the clock
# in the login window
sudo defaults write /Library/Preferences/com.apple.loginwindow AdminHostInfo HostName
# Restart automatically if the computer freezes
#sudo systemsetup -setrestartfreeze on
# Never go into computer sleep mode
#sudo systemsetup -setcomputersleep Off > /dev/null
# Check for software updates daily, not just once per week
#defaults write com.apple.SoftwareUpdate ScheduleFrequency -int 1
# Disable Notification Center and remove the menu bar icon
launchctl unload -w /System/Library/LaunchAgents/com.apple.notificationcenterui.plist 2> /dev/null
# Disable smart quotes as they’re annoying when typing code
defaults write NSGlobalDomain NSAutomaticQuoteSubstitutionEnabled -bool false
# Disable smart dashes as they’re annoying when typing code
defaults write NSGlobalDomain NSAutomaticDashSubstitutionEnabled -bool false
# 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
###############################################################################
# SSD-specific tweaks #
###############################################################################
# Disable local Time Machine snapshots
sudo tmutil disablelocal
# Disable hibernation (speeds up entering sleep mode)
sudo pmset -a hibernatemode 0
# Remove the sleep image file to save disk space
sudo rm /private/var/vm/sleepimage
# Create a zero-byte file instead…
sudo touch /private/var/vm/sleepimage
# …and make sure it can’t be rewritten
sudo chflags uchg /private/var/vm/sleepimage
# Disable the sudden motion sensor as it’s not useful for SSDs
sudo pmset -a sms 0
###############################################################################
# Trackpad, mouse, keyboard, Bluetooth accessories, and input #
###############################################################################
# Trackpad: enable tap to click for this user and for the login screen
defaults write com.apple.driver.AppleBluetoothMultitouch.trackpad Clicking -bool true
defaults -currentHost write NSGlobalDomain com.apple.mouse.tapBehavior -int 1
defaults write NSGlobalDomain com.apple.mouse.tapBehavior -int 1
# Trackpad: map bottom right corner 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 NSGlobalDomain com.apple.trackpad.trackpadCornerClickBehavior -int 1
# defaults -currentHost write NSGlobalDomain com.apple.trackpad.enableSecondaryClick -bool true
# Disable “natural” (Lion-style) scrolling
# defaults write NSGlobalDomain com.apple.swipescrolldirection -bool false
# Increase sound quality for Bluetooth headphones/headsets
defaults write com.apple.BluetoothAudioAgent "Apple Bitpool Min (editable)" -int 40
# Enable full keyboard access for all controls
# (e.g. enable Tab in modal dialogs)
defaults write NSGlobalDomain AppleKeyboardUIMode -int 3
# Use scroll gesture with the Ctrl (^) modifier key to zoom
# defaults write com.apple.universalaccess closeViewScrollWheelToggle -bool true
# defaults write com.apple.universalaccess HIDScrollZoomModifierMask -int 262144
# Follow the keyboard focus while zoomed in
# defaults write com.apple.universalaccess closeViewZoomFollowsFocus -bool true
# Disable press-and-hold for keys in favor of key repeat
#defaults write NSGlobalDomain ApplePressAndHoldEnabled -bool false
# Set a blazingly fast keyboard repeat rate
defaults write NSGlobalDomain KeyRepeat -int 0
# Set language and text formats
# 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 NSGlobalDomain AppleLanguages -array "en" "nl"
# defaults write NSGlobalDomain AppleLocale -string "en_GB@currency=EUR"
# defaults write NSGlobalDomain AppleMeasurementUnits -string "Centimeters"
# defaults write NSGlobalDomain AppleMetricUnits -bool true
# Set the timezone; see `sudo systemsetup -listtimezones` for other values
# sudo systemsetup -settimezone "Europe/Brussels" > /dev/null
# Disable auto-correct
#defaults write NSGlobalDomain NSAutomaticSpellingCorrectionEnabled -bool false
# Stop iTunes from responding to the keyboard media keys
#launchctl unload -w /System/Library/LaunchAgents/com.apple.rcd.plist 2> /dev/null
###############################################################################
# Screen #
###############################################################################
# Require password immediately after sleep or screen saver begins
defaults write com.apple.screensaver askForPassword -int 1
defaults write com.apple.screensaver askForPasswordDelay -int 0
# 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
# Enable subpixel font rendering on non-Apple LCDs
defaults write NSGlobalDomain AppleFontSmoothing -int 2
# Enable HiDPI display modes (requires restart)
sudo defaults write /Library/Preferences/com.apple.windowserver DisplayResolutionEnabled -bool true
###############################################################################
# Finder #
###############################################################################
# Finder: allow quitting via ⌘ + Q; doing so will also hide desktop icons
defaults write com.apple.finder QuitMenuItem -bool true
# Finder: disable window animations and Get Info animations
defaults write com.apple.finder DisableAllAnimations -bool true
# Set Desktop as the default location for new Finder windows
# For other paths, use `PfLo` and `file:///full/path/here/`
defaults write com.apple.finder NewWindowTarget -string "PfLo"
defaults write com.apple.finder NewWindowTargetPath -string "file://${HOME}/"
# Show icons for hard drives, servers, and removable media on the desktop
defaults write com.apple.finder ShowExternalHardDrivesOnDesktop -bool true
defaults write com.apple.finder ShowHardDrivesOnDesktop -bool true
defaults write com.apple.finder ShowMountedServersOnDesktop -bool true
defaults write com.apple.finder ShowRemovableMediaOnDesktop -bool true
# Finder: show hidden files by default
defaults write com.apple.finder AppleShowAllFiles -bool true
# Finder: show all filename extensions
defaults write NSGlobalDomain AppleShowAllExtensions -bool true
# Finder: show status bar
defaults write com.apple.finder ShowStatusBar -bool true
# Finder: show path bar
# defaults write com.apple.finder ShowPathbar -bool true
# Display full POSIX path as Finder window title
# defaults write com.apple.finder _FXShowPosixPathInTitle -bool true
# When performing a search, search the current folder by default
defaults write com.apple.finder FXDefaultSearchScope -string "SCcf"
# Disable the warning when changing a file extension
defaults write com.apple.finder FXEnableExtensionChangeWarning -bool false
# Enable spring loading for directories
# defaults write NSGlobalDomain com.apple.springing.enabled -bool true
# Remove the spring loading delay for directories
# defaults write NSGlobalDomain com.apple.springing.delay -float 0
# Avoid creating .DS_Store files on network volumes
defaults write com.apple.desktopservices DSDontWriteNetworkStores -bool true
# Disable disk image verification
# defaults write com.apple.frameworks.diskimages skip-verify -bool true
# defaults write com.apple.frameworks.diskimages skip-verify-locked -bool true
# defaults write com.apple.frameworks.diskimages skip-verify-remote -bool true
# Automatically open a new Finder window when a volume is mounted
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
# # Show item info near icons on the desktop and in other icon views
# /usr/libexec/PlistBuddy -c "Set :DesktopViewSettings:IconViewSettings:showItemInfo true" ~/Library/Preferences/com.apple.finder.plist
# /usr/libexec/PlistBuddy -c "Set :FK_StandardViewSettings:IconViewSettings:showItemInfo true" ~/Library/Preferences/com.apple.finder.plist
# /usr/libexec/PlistBuddy -c "Set :StandardViewSettings:IconViewSettings:showItemInfo true" ~/Library/Preferences/com.apple.finder.plist
# # Show item info to the right of the icons on the desktop
# /usr/libexec/PlistBuddy -c "Set DesktopViewSettings:IconViewSettings:labelOnBottom false" ~/Library/Preferences/com.apple.finder.plist
# Enable snap-to-grid for icons on the desktop and in other icon views
/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
# Increase grid spacing for icons on the desktop and in other icon views
# /usr/libexec/PlistBuddy -c "Set :DesktopViewSettings:IconViewSettings:gridSpacing 100" ~/Library/Preferences/com.apple.finder.plist
# /usr/libexec/PlistBuddy -c "Set :FK_StandardViewSettings:IconViewSettings:gridSpacing 100" ~/Library/Preferences/com.apple.finder.plist
# /usr/libexec/PlistBuddy -c "Set :StandardViewSettings:IconViewSettings:gridSpacing 100" ~/Library/Preferences/com.apple.finder.plist
# # Increase the size of icons on the desktop and in other icon views
# /usr/libexec/PlistBuddy -c "Set :DesktopViewSettings:IconViewSettings:iconSize 80" ~/Library/Preferences/com.apple.finder.plist
# /usr/libexec/PlistBuddy -c "Set :FK_StandardViewSettings:IconViewSettings:iconSize 80" ~/Library/Preferences/com.apple.finder.plist
# /usr/libexec/PlistBuddy -c "Set :StandardViewSettings:IconViewSettings:iconSize 80" ~/Library/Preferences/com.apple.finder.plist
# Use list view in all Finder windows by default
# Four-letter codes for the other view modes: `icnv`, `clmv`, `Flwv` "Nlsv"
defaults write com.apple.finder FXPreferredViewStyle -string "clmv"
# Disable the warning before emptying the Trash
defaults write com.apple.finder WarnOnEmptyTrash -bool false
# Empty Trash securely by default
defaults write com.apple.finder EmptyTrashSecurely -bool true
# Enable AirDrop over Ethernet and on unsupported Macs running Lion
defaults write com.apple.NetworkBrowser BrowseAllInterfaces -bool true
# Enable the MacBook Air SuperDrive on any Mac
sudo nvram boot-args="mbasd=1"
# Show the ~/Library folder
chflags nohidden ~/Library
# 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"
# Expand the following File Info panes:
# “General”, “Open with”, and “Sharing & Permissions”
# defaults write com.apple.finder FXInfoPanesExpanded -dict \
# General -bool true \
# OpenWith -bool true \
# Privileges -bool true
###############################################################################
# Dock, Dashboard, and hot corners #
###############################################################################
# Enable highlight hover effect for the grid view of a stack (Dock)
# defaults write com.apple.dock mouse-over-hilite-stack -bool true
# Set the icon size of Dock items to 36 pixels
defaults write com.apple.dock tilesize -int 36
# Change minimize/maximize window effect
defaults write com.apple.dock mineffect -string "scale"
# Minimize windows into their application’s icon
defaults write com.apple.dock minimize-to-application -bool true
# Enable spring loading for all Dock items
defaults write com.apple.dock enable-spring-load-actions-on-all-items -bool true
# Show indicator lights for open applications in the Dock
defaults write com.apple.dock show-process-indicators -bool true
# Wipe all (default) app icons from the Dock
# This is only really useful when setting up a new Mac, or if you don’t use
# the Dock to launch apps.
#defaults write com.apple.dock persistent-apps -array
# Don’t animate opening applications from the Dock
defaults write com.apple.dock launchanim -bool true
# Speed up Mission Control animations
defaults write com.apple.dock expose-animation-duration -float 0.1
# Don’t group windows by application in Mission Control
# (i.e. use the old Exposé behavior instead)
defaults write com.apple.dock expose-group-by-app -bool true
# Disable Dashboard
defaults write com.apple.dashboard mcx-disabled -bool true
# Don’t show Dashboard as a Space
defaults write com.apple.dock dashboard-in-overlay -bool true
# Don’t automatically rearrange Spaces based on most recent use
defaults write com.apple.dock mru-spaces -bool false
# Remove the auto-hiding Dock delay
defaults write com.apple.dock autohide-delay -float 0
# Remove the animation when hiding/showing the Dock
defaults write com.apple.dock autohide-time-modifier -float 0
# Automatically hide and show the Dock
defaults write com.apple.dock autohide -bool true
# Make Dock icons of hidden applications translucent
defaults write com.apple.dock showhidden -bool true
# Disable the Launchpad gesture (pinch with thumb and three fingers)
defaults write com.apple.dock showLaunchpadGestureEnabled -int 0
# Reset Launchpad, but keep the desktop wallpaper intact
# find "${HOME}/Library/Application Support/Dock" -name "*-*.db" -maxdepth 1 -delete
# Add iOS Simulator to Launchpad
# sudo ln -sf "/Applications/Xcode.app/Contents/Developer/Applications/iOS Simulator.app" "/Applications/iOS Simulator.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";}'
# 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
# Top left screen corner → Mission Control
# defaults write com.apple.dock wvous-tl-corner -int 2
# defaults write com.apple.dock wvous-tl-modifier -int 0
# bottom right screen corner → screen saver
defaults write com.apple.dock wvous-br-corner -int 5
defaults write com.apple.dock wvous-br-modifier -int 0
# Bottom left screen corner → mission control
defaults write com.apple.dock wvous-bl-corner -int 2
defaults write com.apple.dock wvous-bl-modifier -int 0
###############################################################################
# Safari & WebKit #
###############################################################################
# Privacy: don’t send search queries to Apple
defaults write com.apple.Safari UniversalSearchEnabled -bool false
defaults write com.apple.Safari SuppressSearchSuggestions -bool true
# Press Tab to highlight each item on a web page
defaults write com.apple.Safari WebKitTabToLinksPreferenceKey -bool true
defaults write com.apple.Safari com.apple.Safari.ContentPageGroupIdentifier.WebKit2TabsToLinks -bool true
# Show the full URL in the address bar (note: this still hides the scheme)
defaults write com.apple.Safari ShowFullURLInSmartSearchField -bool true
# Set Safari’s home page to `about:blank` for faster loading
defaults write com.apple.Safari HomePage -string "about:blank"
# Prevent Safari from opening ‘safe’ files automatically after downloading
defaults write com.apple.Safari AutoOpenSafeDownloads -bool false
# Allow hitting the Backspace key to go to the previous page in history
defaults write com.apple.Safari com.apple.Safari.ContentPageGroupIdentifier.WebKit2BackspaceKeyNavigationEnabled -bool true
# Hide Safari’s bookmarks bar by default
defaults write com.apple.Safari ShowFavoritesBar -bool false
# Hide Safari’s sidebar in Top Sites
defaults write com.apple.Safari ShowSidebarInTopSites -bool false
# Disable Safari’s thumbnail cache for History and Top Sites
defaults write com.apple.Safari DebugSnapshotsUpdatePolicy -int 2
# Enable Safari’s debug menu
defaults write com.apple.Safari IncludeInternalDebugMenu -bool true
# Make Safari’s search banners default to Contains instead of Starts With
defaults write com.apple.Safari FindOnPageMatchesWordStartsOnly -bool false
# Remove useless icons from Safari’s bookmarks bar
defaults write com.apple.Safari ProxiesInBookmarksBar "()"
# Enable the Develop menu and the Web Inspector in Safari
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
# Add a context menu item for showing the Web Inspector in web views
defaults write NSGlobalDomain WebKitDeveloperExtras -bool true
###############################################################################
# Mail #
###############################################################################
# Disable send and reply animations in Mail.app
# defaults write com.apple.mail DisableReplyAnimations -bool true
# defaults write com.apple.mail DisableSendAnimations -bool true
# Copy email addresses as `foo@example.com` instead of `Foo Bar <foo@example.com>` in Mail.app
# defaults write com.apple.mail AddressesIncludeNameOnPasteboard -bool false
# Add the keyboard shortcut ⌘ + Enter to send an email in Mail.app
# defaults write com.apple.mail NSUserKeyEquivalents -dict-add "Send" -string "@\\U21a9"
# Display emails in threaded mode, sorted by date (oldest at the top)
# 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"
# Disable inline attachments (just show the icons)
# defaults write com.apple.mail DisableInlineAttachmentViewing -bool true
# Disable automatic spell checking
# defaults write com.apple.mail SpellCheckingBehavior -string "NoSpellCheckingEnabled"
########
# iCal
########
# <<<TODO: Bday notifications in settings>>>
###############################################################################
# Spotlight #
###############################################################################
# Hide Spotlight tray-icon (and subsequent helper)
#sudo chmod 600 /System/Library/CoreServices/Search.bundle/Contents/MacOS/Search
# Disable Spotlight indexing for any volume that gets mounted and has not yet
# been indexed before.
# Use `sudo mdutil -i off "/Volumes/foo"` to stop indexing any volume.
# sudo defaults write /.Spotlight-V100/VolumeConfiguration Exclusions -array "/Volumes"
# Change indexing order and disable some search results
# Yosemite-specific search results (remove them if your are using OS X 10.9 or older):
# MENU_DEFINITION
# MENU_CONVERSION
# MENU_EXPRESSION
# MENU_SPOTLIGHT_SUGGESTIONS (send search queries to Apple)
# MENU_WEBSEARCH (send search queries to Apple)
# MENU_OTHER
# defaults write com.apple.spotlight orderedItems -array \
# '{"enabled" = 1;"name" = "APPLICATIONS";}' \
# '{"enabled" = 1;"name" = "SYSTEM_PREFS";}' \
# '{"enabled" = 1;"name" = "DIRECTORIES";}' \
# '{"enabled" = 1;"name" = "PDF";}' \
# '{"enabled" = 1;"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" = 0;"name" = "SOURCE";}' \
# '{"enabled" = 0;"name" = "MENU_DEFINITION";}' \
# '{"enabled" = 0;"name" = "MENU_OTHER";}' \
# '{"enabled" = 0;"name" = "MENU_CONVERSION";}' \
# '{"enabled" = 0;"name" = "MENU_EXPRESSION";}' \
# '{"enabled" = 0;"name" = "MENU_WEBSEARCH";}' \
# '{"enabled" = 0;"name" = "MENU_SPOTLIGHT_SUGGESTIONS";}'
# Load new settings before rebuilding the index
# killall mds > /dev/null 2>&1
# Make sure indexing is enabled for the main volume
# sudo mdutil -i on / > /dev/null
# Rebuild the index from scratch
# sudo mdutil -E / > /dev/null
###############################################################################
# iTerm 2 #
###############################################################################
# Install the Solarized Dark theme for iTerm
#open "${HOME}/init/Solarized Dark.itermcolors"
# Don’t display the annoying prompt when quitting iTerm
defaults write com.googlecode.iterm2 PromptOnQuit -bool false
###############################################################################
# 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
hash tmutil &> /dev/null && sudo tmutil disablelocal
###############################################################################
# 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
###############################################################################
# Address Book, Dashboard, iCal, TextEdit, and Disk Utility #
###############################################################################
# Enable the debug menu in Address Book
defaults write com.apple.addressbook ABShowDebugMenu -bool true
# Enable Dashboard dev mode (allows keeping widgets on the desktop)
# defaults write com.apple.dashboard devmode -bool true
# Enable the debug menu in iCal (pre-10.8)
# defaults write com.apple.iCal IncludeDebugMenu -bool true
# Use plain text mode for new TextEdit documents
defaults write com.apple.TextEdit RichText -int 0
# Open and save files as UTF-8 in TextEdit
defaults write com.apple.TextEdit PlainTextEncoding -int 4
defaults write com.apple.TextEdit PlainTextEncodingForWrite -int 4
# Enable the debug menu in Disk Utility
defaults write com.apple.DiskUtility DUDebugMenuEnabled -bool true
defaults write com.apple.DiskUtility advanced-image-options -bool true
###############################################################################
# Mac App Store #
###############################################################################
# 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
###############################################################################
# Messages #
###############################################################################
# Disable automatic emoji substitution (i.e. use plain text smileys)
defaults write com.apple.messageshelper.MessageController SOInputLineSettings -dict-add "automaticEmojiSubstitutionEnablediMessage" -bool false
# Disable smart quotes as it’s annoying for messages that contain code
defaults write com.apple.messageshelper.MessageController SOInputLineSettings -dict-add "automaticQuoteSubstitutionEnabled" -bool false
# Disable continuous spell checking
defaults write com.apple.messageshelper.MessageController SOInputLineSettings -dict-add "continuousSpellCheckingEnabled" -bool false
###############################################################################
# Kill affected applications #
###############################################################################
# for app in "Activity Monitor" "Address Book" "Calendar" "Contacts" "cfprefsd" \
# "Dock" "Finder" "Google Chrome" "Google Chrome Canary" "Mail" "Messages" \
# "Opera" "Safari" "SizeUp" "Spectacle" "SystemUIServer" "Terminal" \
# "iCal"; do
# killall "${app}" &> /dev/null
# done
echo "Done. Note that some of these changes require a logout/restart to take effect."
jupyter
matplotlib
scipy
numpy
pandas
networkx
statsmodels
scikit-learn
boto
flask
pymongo
requests
seaborn
biopython
gnureadline
Jinja2
openpyxl
XlsxWriter
tornado
rpy2
tqdm
joblib
tinydb
dill
fuzzywuzzy
progressbar
delorean
sh
pymc
prettytable
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment