-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path.osx
executable file
·404 lines (306 loc) · 18.4 KB
/
.osx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
#!/usr/bin/env bash
# Based heavily on .osx file by Jeff Geerling
# Source: https://github.com/geerlingguy/dotfiles/blob/master/.osx
# Mac OS X configuration
#
# This configuration applies to the latest version of macOS (currently 11.5),
# and sets up preferences and configurations for all the built-in services and
# apps. Third-party app config should be done elsewhere.
#
# Options:
# --no-restart: Don't restart any apps or services after running the script.
#
# If you want to figure out what default needs changing, do the following:
#
# 1. `cd /tmp`
# 2. Store current defaults in file: `defaults read > before`
# 3. Make a change to your system.
# 4. Store new defaults in file: `defaults read > after`
# 5. Diff the files: `diff before after`
#
# @see: http://secrets.blacktree.com/?showapp=com.apple.finder
# @see: https://github.com/herrbischoff/awesome-macos-command-line
#
# @author Jeff Geerling
# Warn that some commands will not be run if the script is not run as root.
if [[ $EUID -ne 0 ]]; then
RUN_AS_ROOT=false
echo -e "Certain commands will not be run without sudo privileges. To run as root, run the same command prepended with 'sudo', for example: $ sudo $0\n" | fold -s -w 80
else
RUN_AS_ROOT=true
# Update existing `sudo` timestamp until `.osx` has finished
while true; do sudo -n true; sleep 60; kill -0 "$$" || exit; done 2>/dev/null &
fi
###############################################################################
# General UI/UX #
##########################################################################{{{1#
# macOS Dark Mode
defaults write -globalDomain AppleInterfaceStyle -string "Dark"
# Beep every time the volume is changed
defaults write -globalDomain com.apple.sound.beep.feedback -int 1
# Expand save panel by default
defaults write -globalDomain NSNavPanelExpandedStateForSaveMode -bool true
# Expand print panel by default
defaults write -globalDomain PMPrintingExpandedStateForPrint -bool true
# Save to disk (not to iCloud) by default
defaults write -globalDomain NSDocumentSaveNewDocumentsToCloud -bool false
# Automatically quit printer app once the print jobs complete
defaults write com.apple.print.PrintingPrefs "Quit When Finished" -bool true
# Restart automatically if the computer freezes
# if [[ "$RUN_AS_ROOT" = true ]]; then
# systemsetup -setrestartfreeze on
# fi
# Disable smart quotes as they’re annoying when typing code
# defaults write -globalDomain NSAutomaticQuoteSubstitutionEnabled -bool false
# Disable smart dashes as they’re annoying when typing code
# defaults write -globalDomain NSAutomaticDashSubstitutionEnabled -bool false
# Set background to dark-grey color
# osascript -e 'tell application "Finder" to set desktop picture to POSIX file "/System/Library/Desktop Pictures/Solid Colors/Stone.png"'
##########################################################################}}}1#
# Trackpad #
##########################################################################{{{1#
# Trigger Look up with "Tap with three-fingers" instead of "Force Click with one finger"
defaults write com.apple.AppleMultitouchTrackpad TrackpadThreeFingerTapGesture -int 2
# Haptic feedback (light, silent clicking)
# defaults write com.apple.AppleMultitouchTrackpad FirstClickThreshold -int 0
# defaults write com.apple.AppleMultitouchTrackpad ActuationStrength -int 0
# Map bottom right corner to right-click (requires restart!)
# defaults write com.apple.driver.AppleBluetoothMultitouch.trackpad TrackpadRightClick -bool true
# defaults write com.apple.AppleMultitouchTrackpad TrackpadRightClick -bool true
# defaults write com.apple.AppleMultitouchTrackpad TrackpadCornerSecondaryClick -int 2
# defaults write -globalDomain ContextMenuGesture -int 1
##########################################################################}}}1#
# Keyboard, Bluetooth accessories, and input #
##########################################################################{{{1#
# Use Tab to move focus between UI controls
defaults write -globalDomain AppleKeyboardUIMode -int 2
# Fn key opens Emoji & Symbols
defaults write com.apple.HIToolbox AppleFnUsageType -int 2
# Disable press-and-hold for keys in favor of key repeat
# defaults write -globalDomain ApplePressAndHoldEnabled -bool false
# Set a blazingly fast keyboard repeat rate, and make it happen more quickly.
# defaults write -globalDomain InitialKeyRepeat -int 20
# defaults write -globalDomain KeyRepeat -int 1
# Disable auto-correct
defaults write -globalDomain NSAutomaticSpellingCorrectionEnabled -bool false
# Disable adding a period with a double-space
defaults write -globalDomain NSAutomaticPeriodSubstitutionEnabled -bool false
# Disable Spotlight keyboard shortcut "Show Finder search window"
/usr/libexec/PlistBuddy -c "Set :AppleSymbolicHotKeys:65:enabled false" ~/Library/Preferences/com.apple.symbolichotkeys.plist
# Change Spotlight keyboard shortcut to Cmd+Opt+Space instead of just Cmd+Space (since Alfred will take Cmd+Space)
/usr/libexec/PlistBuddy -c "Set :AppleSymbolicHotKeys:64:value:parameters:2 1572864" ~/Library/Preferences/com.apple.symbolichotkeys.plist
# Disable Dictation keyboard shotcut
/usr/libexec/PlistBuddy -c "Set :AppleSymbolicHotKeys:164:enabled false" ~/Library/Preferences/com.apple.symbolichotkeys.plist
# Enable Ctrl+<Desktop #> (such as Ctrl+1) to switch to a specific Desktop
/usr/libexec/PlistBuddy -c "Set :AppleSymbolicHotKeys:118:enabled true" ~/Library/Preferences/com.apple.symbolichotkeys.plist
/usr/libexec/PlistBuddy -c "Set :AppleSymbolicHotKeys:119:enabled true" ~/Library/Preferences/com.apple.symbolichotkeys.plist
##########################################################################}}}1#
# Screen #
##########################################################################{{{1#
# Save screenshots to Downloads folder.
# defaults write com.apple.screencapture location -string "${HOME}/Downloads"
# 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
##########################################################################}}}1#
# Finder #
##########################################################################{{{1#
# Set the default location for new Finder windows
# For Desktop, use `PfDe` and `file://${HOME}/Desktop/`
# For Home, use `PfHm` and `file://${HOME}/`
# 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}/"
# 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
# Don't show "Recent Tags" in Finder Sidebar
defaults write com.apple.finder ShowRecentTags -bool false
# Finder: show hidden files by default
# defaults write com.apple.finder AppleShowAllFiles -bool true
# Finder: show all filename extensions
defaults write -globalDomain 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
# 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
# Enable spring loading for directories
defaults write -globalDomain com.apple.springing.enabled -bool true
# Remove the spring loading delay for directories
# defaults write -globalDomain com.apple.springing.delay -float 0.1
# Avoid creating .DS_Store files on network volumes
#defaults write com.apple.desktopservices DSDontWriteNetworkStores -bool true
# 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
# Set the size of icons on the desktop and in other icon views
/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
# Use icon view in all Finder windows by default
# Four-letter codes for the other view modes: `icnv`, `Nlsv`, `clmv`, `Flwv`
defaults write com.apple.finder FXPreferredViewStyle -string "icnv"
# Show the ~/Library folder
chflags nohidden ~/Library
# Automatically delete Trash items after 30 days
defaults write com.apple.finder FXRemoveOldTrashItems -bool true
##########################################################################}}}1#
# Dock, Dashboard, and hot corners #
##########################################################################{{{1#
# Set the icon size of Dock items
defaults write com.apple.dock tilesize -int 32
# Speed up Mission Control animations
# defaults write com.apple.dock expose-animation-duration -float 0.15
# Make Dock icons of hidden applications translucent
defaults write com.apple.dock showhidden -bool true
# Enable the 'reduce transparency' option. Save GPU cycles.
# defaults write com.apple.universalaccess reduceTransparency -bool true
# Hot corners
# Possible values:
# 0: no-op
# 1: 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
#
# Possible modifiers:
# 262144: Control
# 131072: Shift
# 524288: Option
# 1048576: Command
# 393216: Shift+Control
# 1572864: Command+Option
# Top left screen corner → Disable screen saver
defaults write com.apple.dock wvous-tl-corner -int 6
defaults write com.apple.dock wvous-tl-modifier -int 0
# Top right screen corner with Command key → Start screen saver
defaults write com.apple.dock wvous-tr-corner -int 5
defaults write com.apple.dock wvous-tr-modifier -int 1048576
# Bottom left screen corner → Disabled
defaults write com.apple.dock wvous-bl-corner -int 0
defaults write com.apple.dock wvous-bl-modifier -int 0
# Bottom right screen corner → Mission Control
defaults write com.apple.dock wvous-br-corner -int 2
defaults write com.apple.dock wvous-br-modifier -int 0
##########################################################################}}}1#
# Safari & WebKit #
##########################################################################{{{1#
# 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 -globalDomain WebKitDeveloperExtras -bool true
# Disable Apple Personalized Ads (disables ad tracking)
defaults write com.apple.AdLib allowApplePersonalizedAdvertising -bool false
##########################################################################}}}1#
# Mail #
##########################################################################{{{1#
# Inbox list shows 1 preview line of email body content instead of 2
defaults write com.apple.mail NumberOfSnippetLines -int 1
# Unread messages are in bold
defaults write com.apple.mail ShouldShowUnreadMessagesInBold -bool true
# In a message thread: show unread messages at the top
defaults write com.apple.mail ConversationViewSortDescending -bool true
# In a message thread: mark all messages as read when viewing thread
defaults write com.apple.mail ConversationViewMarkAllAsRead -bool true
# Swiping left on an email message in a list archives it instead of deleting it
defaults write com.apple.mail SwipeAction -int 1
# 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
##########################################################################}}}1#
# Spotlight #
##########################################################################{{{1#
if [[ "$RUN_AS_ROOT" = true ]]; then
# 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"
# Restart spotlight
killall mds > /dev/null 2>&1
fi
##########################################################################}}}1#
# Activity Monitor #
##########################################################################{{{1#
# Show the main window when launching Activity Monitor
defaults write com.apple.ActivityMonitor OpenMainWindow -bool true
# Show all processes in Activity Monitor
defaults write com.apple.ActivityMonitor ShowCategory -int 0
##########################################################################}}}1#
# Messages #
##########################################################################{{{1#
# 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
##########################################################################}}}1#
# iTerm2 #
##########################################################################{{{1#
iTermSyncDir="$HOME/dotfiles/iTerm/Preferences"
if [ -d "$iTermSyncDir" ]; then
defaults write com.googlecode.iterm2 PrefsCustomFolder -string "$iTermSyncDir"
defaults write com.googlecode.iterm2 LoadPrefsFromCustomFolder -bool true
fi
##########################################################################}}}1#
# 1Password #
##########################################################################{{{1#
defaults write com.agilebits.onepassword7 ShowItemCounts -bool true
##########################################################################}}}1#
# Spotify #
##########################################################################{{{1#
defaults write com.spotify.client AutoStartSettingIsHidden -bool false
##########################################################################}}}1#
# iA Writer #
##########################################################################{{{1#
defaults write pro.writer.mac "Document Path Extension" -string "md"
defaults write pro.writer.mac "Content Size" -string "S"
defaults write pro.writer.mac "Editor Line Length Limit" -int 80
##########################################################################}}}1#
# Drafts #
##########################################################################{{{1#
defaults write com.agiletortoise.Drafts-OSX com.agiletortoise.Drafts.Backups.ActionGroupBackupNumberToKeep -int 10
defaults write com.agiletortoise.Drafts-OSX com.agiletortoise.Drafts.Backups.DraftsBackupNumberToKeep -int 30
defaults write com.agiletortoise.Drafts-OSX com.agiletortoise.Drafts5.Backup.DraftsInterval -int 1
if defaults read com.agiletortoise.Drafts-OSX "NSStatusItem Preferred Position Item-0"; then
defaults delete com.agiletortoise.Drafts-OSX "NSStatusItem Preferred Position Item-0"
fi
defaults write com.agiletortoise.Drafts-OSX "NSStatusItem Visible Item-0" -bool false
##########################################################################}}}1#
# Kill/restart affected applications #
##########################################################################{{{1#
# Restart affected applications if `--no-restart` flag is not present.
if [[ ! ($* == *--no-restart*) ]]; then
for app in "cfprefsd" "Dock" "Finder" "Mail" "SystemUIServer" "Terminal" "iTerm2" "Alfred"; do
killall "${app}" > /dev/null 2>&1
done
fi
##########################################################################}}}1#
# Alfred (must happen AFTER it quits) #
##########################################################################{{{1#
# shellcheck disable=SC2088
alfredSyncDir="~/dotfiles/Alfred/Preferences"
if [ -d "${alfredSyncDir/\~/$HOME}" ]; then
defaults write com.runningwithcrayons.Alfred-Preferences syncfolder -string "$alfredSyncDir"
defaults write com.runningwithcrayons.Alfred-Preferences NSNavLastRootDirectory -string "$alfredSyncDir"
fi
# }}}1
echo "Please log out and log back in to make all settings take effect."
# vim: set copyindent preserveindent foldmethod=marker: