mirror of
https://github.com/ivuorinen/dotfiles.git
synced 2026-01-26 11:14:08 +00:00
307 lines
13 KiB
Bash
Executable File
307 lines
13 KiB
Bash
Executable File
#!/usr/bin/env bash
|
||
#
|
||
# set-macos-defaults.sh - Sets macOS Defaults that I like
|
||
#
|
||
# This script contains large portions from following scripts:
|
||
# - https://github.com/freekmurze/dotfiles/blob/main/macos/set-defaults.sh
|
||
#
|
||
|
||
[ "$(uname)" != "Darwin" ] && echo "Not a macOS system" && exit 0
|
||
|
||
# Ask for the administrator password upfront
|
||
sudo -v
|
||
|
||
# Keep-alive: update existing `sudo` time stamp
|
||
# until this script has finished
|
||
while true; do
|
||
sudo -n true
|
||
sleep 60
|
||
kill -0 "$$" || exit
|
||
done 2> /dev/null &
|
||
|
||
# Change user shell to zsh if not that already.
|
||
if hash zsh 2> /dev/null; then
|
||
[[ "$SHELL" != $(which zsh) ]] && chsh -s "$(which zsh)"
|
||
fi
|
||
|
||
###############################################################################
|
||
# General UI/UX #
|
||
###############################################################################
|
||
|
||
# Disable the sound effects on boot
|
||
sudo nvram SystemAudioVolume=" "
|
||
|
||
# Menu bar: disable transparency
|
||
#defaults write NSGlobalDomain AppleEnableMenuBarTransparency -bool false
|
||
|
||
# Set sidebar icon size to small
|
||
defaults write NSGlobalDomain NSTableViewDefaultSizeMode -int 1
|
||
|
||
# Increase window resize speed for Cocoa applications
|
||
defaults write NSGlobalDomain NSWindowResizeTime -float 0.001
|
||
|
||
# Expand save panel by default
|
||
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
|
||
|
||
# Disable Resume system-wide
|
||
defaults write NSGlobalDomain 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"
|
||
|
||
# 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
|
||
|
||
# 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
|
||
|
||
###############################################################################
|
||
# SSD-specific tweaks #
|
||
###############################################################################
|
||
|
||
# Disable hibernation (speeds up entering sleep mode)
|
||
sudo pmset -a hibernatemode 0
|
||
|
||
# Disable the sudden motion sensor as it’s not useful for SSDs
|
||
sudo pmset -a sms 0
|
||
|
||
###############################################################################
|
||
# Trackpad, mouse, keyboard, Bluetooth accessories, and input #
|
||
###############################################################################
|
||
|
||
# Increase sound quality for Bluetooth headphones/headsets
|
||
defaults write com.apple.BluetoothAudioAgent "Apple Bitpool Max (editable)" 80
|
||
defaults write com.apple.BluetoothAudioAgent "Apple Bitpool Min (editable)" 80
|
||
defaults write com.apple.BluetoothAudioAgent "Apple Initial Bitpool (editable)" 80
|
||
defaults write com.apple.BluetoothAudioAgent "Apple Initial Bitpool Min (editable)" 80
|
||
defaults write com.apple.BluetoothAudioAgent "Negotiated Bitpool" 80
|
||
defaults write com.apple.BluetoothAudioAgent "Negotiated Bitpool Max" 80
|
||
defaults write com.apple.BluetoothAudioAgent "Negotiated Bitpool Min" 80
|
||
|
||
# Enable full keyboard access for all controls
|
||
# (e.g. enable Tab in modal dialogs)
|
||
defaults write NSGlobalDomain AppleKeyboardUIMode -int 3
|
||
|
||
# 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"
|
||
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 `systemsetup -listtimezones` for other values
|
||
systemsetup -settimezone "Europe/Helsinki" > /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
|
||
|
||
###############################################################################
|
||
# Finder #
|
||
###############################################################################
|
||
|
||
# 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 "PfDe"
|
||
defaults write com.apple.finder NewWindowTargetPath -string "file://${HOME}/Desktop/"
|
||
|
||
# Show icons for external hard drives, servers, and removable media on the desktop
|
||
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
|
||
|
||
# Finder: show all filename extensions
|
||
defaults write NSGlobalDomain AppleShowAllExtensions -bool true
|
||
|
||
# Finder: allow text selection in Quick Look
|
||
defaults write com.apple.finder QLEnableTextSelection -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
|
||
|
||
# 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
|
||
|
||
# Use list view in all Finder windows by default
|
||
# Four-letter codes for the other view modes: `icnv`, `clmv`, `Flwv`
|
||
defaults write com.apple.finder FXPreferredViewStyle -string "icnv"
|
||
|
||
# Disable the warning before emptying the Trash
|
||
defaults write com.apple.finder WarnOnEmptyTrash -bool false
|
||
|
||
# Show the ~/Library folder
|
||
# chflags nohidden ~/Library
|
||
|
||
# Show the ~/Users folder
|
||
# chflags nohidden /Users
|
||
|
||
# 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
|
||
|
||
###############################################################################
|
||
# Screenshots #
|
||
###############################################################################
|
||
|
||
# Set default screenshot location
|
||
#defaults write com.apple.screencapture "location" -string "~/Documents/Screenshots"
|
||
|
||
# Exclude date and time in screenshot filenames
|
||
defaults write com.apple.screencapture "include-date" -bool true
|
||
|
||
# Change the default screenshot file name
|
||
defaults write com.apple.screencapture "name" -string "screenshot"
|
||
|
||
###############################################################################
|
||
# Dock, Dashboard, and hot corners #
|
||
###############################################################################
|
||
|
||
# Prevent applications from bouncing in Dock
|
||
defaults write com.apple.dock no-bouncing -bool true
|
||
|
||
# Set the icon size of Dock items to 30 pixels
|
||
defaults write com.apple.dock tilesize -int 30
|
||
|
||
# Hide 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 ""
|
||
|
||
# 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
|
||
|
||
# Make Dock icons of hidden applications translucent
|
||
defaults write com.apple.dock showhidden -bool true
|
||
|
||
###############################################################################
|
||
# Safari & WebKit #
|
||
###############################################################################
|
||
|
||
# Enable Safari’s debug menu
|
||
defaults write com.apple.Safari IncludeInternalDebugMenu -bool true
|
||
|
||
# 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
|
||
|
||
# Don’t display the annoying prompt when quitting iTerm
|
||
#defaults write com.googlecode.iterm2 PromptOnQuit -bool false
|
||
|
||
# Prevent Time Machine from prompting to use new hard drives as backup volume
|
||
defaults write com.apple.TimeMachine DoNotOfferNewDisksForBackup -bool true
|
||
|
||
###############################################################################
|
||
# 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 #
|
||
###############################################################################
|
||
|
||
# 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
|
||
|
||
###############################################################################
|
||
# Messages #
|
||
###############################################################################
|
||
|
||
# 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" "Mail" "Messages" "Safari" "SizeUp" "SystemUIServer" \
|
||
"Terminal" "Transmission" "Twitter" "iCal"; do
|
||
killall "${app}" > /dev/null 2>&1
|
||
done
|
||
echo "Done. Note that some of these changes require a logout/restart to take effect."
|