mirror of
https://github.com/ivuorinen/dotfiles.git
synced 2026-01-26 11:14:08 +00:00
341 lines
14 KiB
Bash
Executable File
341 lines
14 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# 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
|
|
|
|
# shellcheck source=shared.sh
|
|
source "$HOME/.dotfiles/config/shared.sh"
|
|
|
|
msgr run "Starting to set macOS defaults, these require sudo privileges:"
|
|
|
|
# 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 &
|
|
|
|
msgr nested "Change user shell to zsh if it is available and not the current"
|
|
|
|
# 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 #
|
|
###############################################################################
|
|
|
|
msgr nested "Setting General UI/UX settings"
|
|
|
|
# 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 #
|
|
###############################################################################
|
|
|
|
msgr nested "Setting 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 #
|
|
###############################################################################
|
|
|
|
msgr nested "Settings for 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 #
|
|
###############################################################################
|
|
|
|
msgr nested "Settings for 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 #
|
|
###############################################################################
|
|
|
|
msgr nested "Settings for 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 #
|
|
###############################################################################
|
|
|
|
msgr nested "Settings for Screenshots"
|
|
|
|
# Set default screenshot location
|
|
mkdir -p "$HOME/Documents/Screenshots"
|
|
defaults write com.apple.screencapture "location" -string "$HOME/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 #
|
|
###############################################################################
|
|
|
|
msgr nested "Settings for 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 #
|
|
###############################################################################
|
|
|
|
msgr nested "Settings for 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
|
|
# Use iTerm2 preferences from the .dotfiles folder.
|
|
defaults write com.googlecode.iterm2 PrefsCustomFolder \
|
|
-string "$HOME/.dotfiles/config/iterm2"
|
|
|
|
# Prevent Time Machine from prompting to use new hard drives as backup volume
|
|
defaults write com.apple.TimeMachine DoNotOfferNewDisksForBackup -bool true
|
|
|
|
###############################################################################
|
|
# Activity Monitor #
|
|
###############################################################################
|
|
|
|
msgr nested "Settings for ActivityMonitor"
|
|
|
|
# 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 #
|
|
###############################################################################
|
|
|
|
msgr nested "Settings for 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 #
|
|
###############################################################################
|
|
|
|
msgr nested "Settings for 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
|
|
|
|
msgr nested "Restarting applications to apply changes"
|
|
|
|
###############################################################################
|
|
# Kill affected applications #
|
|
###############################################################################
|
|
|
|
for app in "Activity Monitor" "Address Book" "Calendar" "Contacts" "cfprefsd" \
|
|
"Dock" "Finder" "Mail" "Messages" "Safari" "SizeUp" "SystemUIServer" \
|
|
"Terminal" "Transmission" "iCal"; do
|
|
killall "${app}" > /dev/null 2>&1
|
|
done
|
|
|
|
msg_yay "Done. Note that some of these changes require a logout/restart to take effect."
|