OS X を自分色に染める w/ defaults

  • 34
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

わけあって新しく環境を設定することになったので備忘録代わりに。

スクリプタブルであること

新しいMac買ったときって環境作るの面倒臭いですよね。

  1. OSの設定
  2. 必要なパッケージのインストール
  3. 必要なアプリケーションのインストール
  4. 各種アプリケーションの設定

やることがたくさんあります。
これを手でやっていると面倒臭いですし、抜け漏れ出ますよね。
まぁ気付き次第ちょこちょこ設定していけばいいんですが、自分色になっていくまで結構不便だったりします。

だからスクリプト化しようや

パッケージやアプリケーションのインストールについてはMac-geekなみなさんであればbrew(cask)など使ってうまいことスクリプト化されていると思うので、今回は触れません。
ですので、OSの設定について解説します。各種アプリケーションの設定も実は今回の話でだいたいスクリプト化可能です。

defaultsコマンド

読んで man defaults
流石に申し訳ないので解説しますと:

デフォルトでは、ユーザーがコマンドラインシェルからのMac OS Xユーザのデフォルトを、読み取り、書き込み、および削除することができます。 Mac OS Xのアプリケーションやその他のプログラムは、好みやapplicationsaren'tは(そのようなデフォルトの新規文書のフォント、またはInfopanelの位置として)実行しているときに維持されなければならない他の情報をrecorduserするために、デフォルトのシステムを使用しています。この情報の多くは、アプリケーションのPreferencespanelを介してアクセス可能ですが、それのいくつかは、そのような情報パネルの位置として、ではありません。あなたはデフォルト値を持つthisinformationにアクセスすることができます

とのこと (man defaults translated by Google Translate)

使い方

読んで man defaults
ざっくり:

  • defaults read DOMAIN KEY ...で設定読み込み
  • defaults write DOMAIN KEY ...で設定書き込み

です

私の設定内容

こちらに添って説明。

QuickLook

QuickLookのテキストを選択可能にする

defaults write com.apple.finder QLEnableTextSelection -bool true

スクリーンキャプチャ

  • jpgで保存
  • 影付けない
  • ss~みたいな名前で保存
  • ssディレクトリに保存
defaults write com.apple.screencapture type jpg
defaults write com.apple.screencapture “disable-shadow” -bool yes
defaults write com.apple.screencapture name ss
defaults write com.apple.screencapture location ~/ss/

キーボード早め

まぁなんかこの辺はみなさん設定されてるかと思います

defaults write -g KeyRepeat -int 2
defaults write -g InitialKeyRepeat -int 15

スクロール方向

老人なので従来式じゃないとダメです…

defaults write -g com.apple.swipescrolldirection -bool false

OSの言語設定

英語にします

defaults write -g AppleLanguages -array en ja

辞書の設定

ちょっとマニアック(笑)

  • 国語
  • 和英 / 英和
  • Wikipedia
  • 英類語
  • 英英

を使うように設定します

defaults write -g com.apple.DictionaryServices -dict-add "DCSActiveDictionaries" '("/Library/Dictionaries/Sanseido Super Daijirin.dictionary", "/Library/Dictionaries/Sanseido The WISDOM English-Japanese Japanese-English Dictionary.dictionary", "/System/Library/Frameworks/CoreServices.framework/Frameworks/DictionaryServices.framework/Resources/Wikipedia.wikipediadictionary", "/Library/Dictionaries/Oxford Thesaurus of English.dictionary", "/Library/Dictionaries/Oxford Dictionary of English.dictionary")'

DCSActiveDictionariesに辞書のパスを配列で渡せばいいっぽい。

Spotlight呼び出しショートカット

Spotlightをoption + command + spaceで呼び出せるようにします。

defaults write com.apple.symbolichotkeys AppleSymbolicHotKeys -dict-add 61 "<dict><key>enabled</key><false/></dict>"
defaults write com.apple.symbolichotkeys AppleSymbolicHotKeys -dict-add 64 "<dict><key>enabled</key><true/><key>value</key><dict><key>parameters</key><array><integer>32</integer><integer>49</integer><integer>1572864</integer></array><key>type</key><string>standard</string></dict></dict>"

次の入力ソースを選択とショートカットが被るので一行目で無効に。
二行目でSpotlightの設定をしています。
61とか64とかが設定項目のキーです。こちらに詳しい。

parametersに3つ数字を渡すが、1つめと2つめはよく分かってないのでデフォで入ってる値をそのままにした。3つめでキーを指定している。
optionが524288でcommandが1048576なので足して1572864。

CapsLockをControlに割り当てる

CapsLockって使わなくないですか…?

keyboardid=$(ioreg -n IOHIDKeyboard -r | grep -E 'VendorID"|ProductID' | awk '{ print $4 }' | paste -s -d'-\n' -)'-0'
defaults -currentHost write -g com.apple.keyboard.modifiermapping.${keyboardid} -array '<dict><key>HIDKeyboardModifierMappingDst</key></dict><integer>2</integer> <key>HIDKeyboardModifierMappingSrc</key><key>0</key>'

keyboardidの取り方はこちらに習った。

Dock

  • 左に配置
  • 自動で隠す
  • 起動中のアプリだけ表示
  • 小さめの表示
defaults write com.apple.dock orientation left
defaults write com.apple.dock autohide -bool true
defaults write com.apple.dock persistent-apps -array
defaults write com.apple.dock tilesize -int 25

Finder

  • デスクトップにアイコンを表示しない
  • 新規ウィンドウはホームディレクトリで開く
  • 拡張子の変更を警告しない
  • 検索をデフォルトでカレントディレクトリ以下にする
  • カラム表示にする
  • サイドバー表示の諸々...
  • 拡張子はすべて表示
defaults write com.apple.finder CreateDesktop -bool false
defaults write com.apple.finder NewWindowTarget -string "PfLo"
defaults write com.apple.finder NewWindowTargetPath -string "file://${HOME}"
defaults write com.apple.finder FXEnableExtensionChangeWarning -bool false
defaults write com.apple.finder FXDefaultSearchScope -string "SCcf"
defaults write com.apple.finder FXPreferredViewStyle -string "clmv"
defaults write com.apple.finder ShowRecentTags -bool false
defaults write com.apple.finder SidebarDevicesSectionDisclosedState -bool true
defaults write com.apple.finder SidebarPlacesSectionDisclosedState -bool true
defaults write com.apple.finderSidebarSharedSectionDisclosedState -bool true
defaults write -g AppleShowAllExtensions -bool true

ほか

ネットワークディスク上に.DS_Storeを作らない(重要)

defaults write com.apple.desktopservices DSDontWriteNetworkStores -bool true

バッテリー残量のパーセンテージ表示

defaults write com.apple.menuextra.battery ShowPercent -string "YES"

Bluetooth切っとく

sudo defaults write /Library/Preferences/com.apple.Bluetooth ControllerPowerState -int 0

設定を反映する

killall Dock
killall SystemUIServer
killall Finder

けど

反映されないものも多いのでYou better reboot your machine..🤔

設定項目の探し方

Dictionary.appを例にとって書きたいところですが この余白はそれを書くには狭すぎる。 (後日追記予定)

雑に説明すると

defaults read > before
# ここで設定変更
defaults read > after
diff before after

とかして探してくイメージです。

最後に

enjoy scripting your mac!

参考

こちらとそれを解説したこちら(全8回) <- 相当真似ました。 ありがとうございます。

その他にStackoverflowの先人たち!

免責

記載スクリプトの実行により被った一切の損害等について当方では責任を負いかねます。

ぶっちゃけ理解が足りていない部分も相当にありますので実行についてはすべて自己責任でお願い致します。

環境設定の項目が開けなくなったり、アプリケーションがNot Respondingになったりします。(実際試している途中何度かなりました)

defaults readdefaults writeを駆使してなんとか元には戻せますが、遊ぶ際には無事な状態のバックアップを取っておくことを忘れないで下さいね!