-
Notifications
You must be signed in to change notification settings - Fork 0
/
osx
393 lines (314 loc) · 19.2 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
#!/usr/bin/env bash
# ./osx
#
# Mostly from http://mths.be/osx
killall System\ Preferences
#-------------------------------------------------------------------------------
# General UI/UX
#-------------------------------------------------------------------------------
# Set up Login items.
osascript -e 'tell application "System Events" to make new login item at end with properties {path:"/Applications/Alfred 2.app", name:"Alfred 2", hidden:true}'
osascript -e 'tell application "System Events" to make new login item at end with properties {path:"/Applications/Day-O.app", name:"Day-O", hidden:true}'
osascript -e 'tell application "System Events" to make new login item at end with properties {path:"/Applications/Divvy.app", name:"Divvy", hidden:true}'
osascript -e 'tell application "System Events" to make new login item at end with properties {path:"/Applications/Dropbox.app", name:"Dropbox", hidden:true}'
osascript -e 'tell application "System Events" to make new login item at end with properties {path:"/Applications/Flux.app", name:"f.lux", hidden:true}'
osascript -e 'tell application "System Events" to make new login item at end with properties {path:"/Applications/Typinator.app", name:"Typinator", hidden:true}'
# Menu bar: hide the Clock icon, as it is replaced by Day-O.
for domain in ~/Library/Preferences/ByHost/com.apple.systemuiserver.*; do
defaults write "${domain}" dontAutoLoad -array \
"/System/Library/CoreServices/Menu Extras/Clock.menu"
done
# Menu bar: set the order of the icons to show.
defaults write com.apple.systemuiserver menuExtras -array \
"/System/Library/CoreServices/Menu Extras/TextInput.menu" \
"/System/Library/CoreServices/Menu Extras/Volume.menu" \
"/System/Library/CoreServices/Menu Extras/AirPort.menu" \
"/System/Library/CoreServices/Menu Extras/Battery.menu"
# 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
# Restart automatically if the computer freezes.
#sudo systemsetup -setrestartfreeze on
# Never go into computer sleep mode.
#sudo systemsetup -setcomputersleep Off > /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
#-------------------------------------------------------------------------------
# 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
# Use scroll gesture with the ⌘ modifier key to zoom.
defaults write com.apple.universalaccess closeViewScrollWheelToggle -bool true
defaults write com.apple.universalaccess closeViewSmoothImages -bool false
defaults write com.apple.universalaccess closeViewScrollWheelModifiersInt -int 1048576
# TODO: useful?
# defaults write com.apple.AppleMultitouchTrackpad HIDScrollZoomModifierMask -int 1048576
# defaults write com.apple.driver.AppleBluetoothMultitouch.trackpad HIDScrollZoomModifierMask -int 1048576
# Set the keyboard repeat rate.
defaults write NSGlobalDomain KeyRepeat -int 2
defaults write NSGlobalDomain InitialKeyRepeat -int 15
# Set language and text formats.
defaults write NSGlobalDomain AppleLanguages -array "en" "zh-Hant"
defaults write NSGlobalDomain AppleLocale -string "en_FR@currency=EUR"
defaults write NSGlobalDomain AppleMeasurementUnits -string "Centimeters"
defaults write NSGlobalDomain AppleMetricUnits -bool true
# Shortcuts to change input sources.
# ⌥+↑ to Select the previous input source.
/usr/libexec/PlistBuddy -c "Set :AppleSymbolicHotKeys:60:enabled bool true" ~/Library/Preferences/com.apple.symbolichotkeys.plist
/usr/libexec/PlistBuddy -c "Delete :AppleSymbolicHotKeys:60:value:parameters" ~/Library/Preferences/com.apple.symbolichotkeys.plist
/usr/libexec/PlistBuddy -c "Add :AppleSymbolicHotKeys:60:value:parameters array" ~/Library/Preferences/com.apple.symbolichotkeys.plist
/usr/libexec/PlistBuddy -c "Add :AppleSymbolicHotKeys:60:value:parameters:0 integer 65535" ~/Library/Preferences/com.apple.symbolichotkeys.plist
/usr/libexec/PlistBuddy -c "Add :AppleSymbolicHotKeys:60:value:parameters:1 integer 126" ~/Library/Preferences/com.apple.symbolichotkeys.plist
/usr/libexec/PlistBuddy -c "Add :AppleSymbolicHotKeys:60:value:parameters:2 integer 2621440" ~/Library/Preferences/com.apple.symbolichotkeys.plist
# ⌥+↓ to Select the next input source.
/usr/libexec/PlistBuddy -c "Set :AppleSymbolicHotKeys:61:enabled bool true" ~/Library/Preferences/com.apple.symbolichotkeys.plist
/usr/libexec/PlistBuddy -c "Delete :AppleSymbolicHotKeys:61:value:parameters" ~/Library/Preferences/com.apple.symbolichotkeys.plist
/usr/libexec/PlistBuddy -c "Add :AppleSymbolicHotKeys:61:value:parameters array" ~/Library/Preferences/com.apple.symbolichotkeys.plist
/usr/libexec/PlistBuddy -c "Add :AppleSymbolicHotKeys:61:value:parameters:0 integer 65535" ~/Library/Preferences/com.apple.symbolichotkeys.plist
/usr/libexec/PlistBuddy -c "Add :AppleSymbolicHotKeys:61:value:parameters:1 integer 125" ~/Library/Preferences/com.apple.symbolichotkeys.plist
/usr/libexec/PlistBuddy -c "Add :AppleSymbolicHotKeys:61:value:parameters:2 integer 2621440" ~/Library/Preferences/com.apple.symbolichotkeys.plist
# Set the timezone.
sudo systemsetup -settimezone "Europe/Paris" > /dev/null
# TODO: useful?
#sudo systemsetup -setusingnetworktime on
# TODO: how to set based on location?
#-------------------------------------------------------------------------------
# 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
#-------------------------------------------------------------------------------
# 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
# Show hidden files by default.
#defaults write com.apple.finder AppleShowAllFiles -bool true
# Finder: show all filename extensions.
#defaults write NSGlobalDomain AppleShowAllExtensions -bool true
# Show status bar.
defaults write com.apple.finder ShowStatusBar -bool true
# Show path bar.
defaults write com.apple.finder ShowPathbar -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
# Avoid creating .DS_Store files on network volumes.
defaults write com.apple.desktopservices DSDontWriteNetworkStores -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
# Enable snap-to-grid for icons on the desktop and in other icon views.
/usr/libexec/PlistBuddy -c "Set :DesktopViewSettings:IconViewSettings:arrangeBy dateModified" ~/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
# Use list view in all Finder windows by default.
defaults write com.apple.finder FXPreferredViewStyle -string "clmv"
# Disable the warning before emptying the Trash.
defaults write com.apple.finder WarnOnEmptyTrash -bool false
# Enable AirDrop over Ethernet.
defaults write com.apple.NetworkBrowser BrowseAllInterfaces -bool true
# Show the ~/Library folder.
chflags nohidden ~/Library
#-------------------------------------------------------------------------------
# Dock, Dashboard, and hot corners
#-------------------------------------------------------------------------------
dockutil --remove all
dockutil --add "/Applications/Xcode.app"
dockutil --add "/Applications/Reeder.app"
dockutil --add "/Applications/Google Chrome.app"
dockutil --add "/Applications/Dash.app"
dockutil --add "/Applications/Sublime Text.app"
dockutil --add "/Applications/Calendar.app"
dockutil --add "/Applications/Reeder.app"
dockutil --add "/Applications/Messages.app"
dockutil --add "/Applications/iTerm2.app"
dockutil --add "/Applications" --view grid --display folder --sort name
dockutil --add "$HOME/Dropbox" --view grid --display folder --sort name
dockutil --add "$HOME/Downloads" --view grid --display stack --sort dateadded
# Enable highlight hover effect for the grid view of a stack in the Dock.
defaults write com.apple.dock mouse-over-hilite-stack -bool true
# 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
# Enable Dashboard as Space.
defaults write com.apple.dashboard enabled-state 2
# 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 → Put display to sleep
defaults write com.apple.dock wvous-tl-corner -int 10
defaults write com.apple.dock wvous-tl-modifier -int 0
# Top right screen corner → Desktop
defaults write com.apple.dock wvous-tr-corner -int 4
defaults write com.apple.dock wvous-tr-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
# Bottom right screen corner → Show application windows
defaults write com.apple.dock wvous-br-corner -int 3
defaults write com.apple.dock wvous-br-modifier -int 0
#-------------------------------------------------------------------------------
# Alfred.app
#-------------------------------------------------------------------------------
# Set the sync folder.
defaults write com.runningwithcrayons.Alfred-Preferences syncfolder -string "~/Dropbox/Utilitaires/Alfred"
#-------------------------------------------------------------------------------
# Dash.app
#-------------------------------------------------------------------------------
# Set the sync folder path.
defaults write com.kapeli.dashdoc syncFolderPath -string "~/Dropbox/Utilitaires/Dash"
defaults write com.kapeli.dashdoc snippetSQLPath -string "~/Dropbox/Utilitaires/Dash/library.dash"
#-------------------------------------------------------------------------------
# Day-O.app
#-------------------------------------------------------------------------------
# Set the hour format.
defaults write com.shauninman.Day-O format -string "EEEE HH:mm"
#-------------------------------------------------------------------------------
# Divvy.app
#-------------------------------------------------------------------------------
# Don't show menu icon.
defaults write com.mizage.direct.Divvy showMenuIcon -bool false
# Set the global hotkey to ⌥+1.
defaults write com.mizage.direct.Divvy useGlobalHotkey -bool true
defaults write com.mizage.direct.Divvy globalHotkey -dict keyCode 18 modifiers 2048
#-------------------------------------------------------------------------------
# Google Chrome.app
#-------------------------------------------------------------------------------
# Expand the print dialog by default.
defaults write com.google.Chrome PMPrintingExpandedStateForPrint2 -bool true
#-------------------------------------------------------------------------------
# iTerm2.app
#-------------------------------------------------------------------------------
# Set the custom prefs folder.
defaults write com.googlecode.iterm2PrefsCustomFolder -string "~/Dropbox/Utilitaires/iTerm2"
# Don't display the prompt when quitting iTerm2.
defaults write com.googlecode.iterm2 PromptOnQuit -bool false
#-------------------------------------------------------------------------------
# Mail.app
#-------------------------------------------------------------------------------
# Copy email addresses as `[email protected]` instead of `Foo Bar <[email protected]>`.
defaults write com.apple.mail AddressesIncludeNameOnPasteboard -bool false
# Add the keyboard shortcut ⌘ + Enter to send an email.
defaults write com.apple.mail NSUserKeyEquivalents -dict-add "Send" -string "@\\U21a9"
# Display emails in threaded mode, sorted by date (newest at the top).
defaults write com.apple.mail DraftsViewerAttributes -dict-add "DisplayInThreadedMode" -string "YES"
defaults write com.apple.mail DraftsViewerAttributes -dict-add "SortedDescending" -string "NO"
defaults write com.apple.mail DraftsViewerAttributes -dict-add "SortOrder" -string "received-date"
#-------------------------------------------------------------------------------
# Messages.app
#-------------------------------------------------------------------------------
# Disable smart quotes as it's annoying for messages that contain code.
defaults write com.apple.messageshelper.MessageController SOInputLineSettings -dict-add "automaticQuoteSubstitutionEnabled" -bool false
#-------------------------------------------------------------------------------
# Safari.app & WebKit
#-------------------------------------------------------------------------------
# Show the full URL in the address bar (note: this still hides the scheme).
#defaults write com.apple.Safari ShowFullURLInSmartSearchField -bool true
# 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
# Make Safari's search banners default to Contains instead of Starts With.
defaults write com.apple.Safari FindOnPageMatchesWordStartsOnly -bool false
# 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
#-------------------------------------------------------------------------------
# Terminal.app
#-------------------------------------------------------------------------------
# Only use UTF-8 in Terminal.app
defaults write com.apple.terminal StringEncodings -array 4
#-------------------------------------------------------------------------------
# TextEdit.app
#-------------------------------------------------------------------------------
# Use plain text mode for new documents.
defaults write com.apple.TextEdit RichText -int 0
# Open and save files as UTF-8.
defaults write com.apple.TextEdit PlainTextEncoding -int 4
defaults write com.apple.TextEdit PlainTextEncodingForWrite -int 4
#-------------------------------------------------------------------------------
# Transmission.app
#-------------------------------------------------------------------------------
# Use `~/Downloads/Incomplete` to store incomplete downloads.
defaults write org.m0k.transmission UseIncompleteDownloadFolder -bool true
defaults write org.m0k.transmission IncompleteDownloadFolder -string "~/Downloads/Incomplete"
# 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
#-------------------------------------------------------------------------------
# Twitter.app
#-------------------------------------------------------------------------------
# Disable smart quotes as it's annoying for code tweets.
defaults write com.twitter.twitter-mac AutomaticQuoteSubstitutionEnabled -bool false
# Allow closing the 'new tweet' window by pressing `Esc`.
defaults write com.twitter.twitter-mac ESCClosesComposeWindow -bool true
#-------------------------------------------------------------------------------
# Typinator.app
#-------------------------------------------------------------------------------
# Don't open the window at start.
defaults write com.macility.typinator2 "Open Window at Start" -bool false
#-------------------------------------------------------------------------------
# Xcode.app
#-------------------------------------------------------------------------------
# Show line numbers.
defaults write com.apple.dt.Xcode DVTTextShowLineNumbers -boolean true
# Show folding ribbon.
defaults write com.apple.dt.Xcode DVTTextShowFoldingSidebar -boolean true
# Page guide at column 80.
defaults write com.apple.dt.Xcode DVTTextShowPageGuide -boolean true
defaults write com.apple.dt.Xcode DVTTextPageGuideLocation -int 80
# Indent using spaces.
defaults write com.apple.dt.Xcode DVTTextIndentUsingTabs -boolean false
# Indent width.
defaults write com.apple.dt.Xcode DVTTextIndentWidth -int 2
# Trim trailing whitespace, including whitespace-only lines.
defaults write com.apple.dt.Xcode DVTTextEditorTrimWhitespaceOnlyLines -boolean true
# Align consecutive // comments.
defaults write com.apple.dt.Xcode DVTTextAlignConsecutiveSlashSlashComments -boolean true
# Show the last build duration.
defaults write com.apple.dt.Xcode ShowBuildOperationDuration -bool YES
#-------------------------------------------------------------------------------
# Kill affected applications
#-------------------------------------------------------------------------------
for app in "Activity Monitor" "Address Book" "Calendar" "cfprefsd" "Contacts" \
"Divvy" "Dock" "Finder" "Google Chrome" "iTerm2" "Mail" "Messages" "Photos" \
"Safari" "Sublime Text" "SystemUIServer" "Terminal" "Transmission" "Twitter" \
"Typinator" "Xcode"; do
killall "${app}" &> /dev/null
done
echo "Done. Note that some of these changes require a logout/restart to take effect."