MacBookの解像度を変更する

# はじめに

MacBookのRetinaディスプレイは綺麗で満足しているけれど、標準の解像度だとスケーリングの選択肢が少なく表示領域が狭く感じることが多々あったので、なんと設定を変えられないか調べた結果をまとめる。

MacBookPro13インチ解像度
`2,560 x 1,600`

標準で選択可能な解像度の選択肢
`1,680 x 1,050`
`1,440 x 900`
`1,024 x 640`

追加する解像度
`1920 x 1200`

# 設定方法

## SIPの無効化
`OSX El Capitan`以降はSIPによってOSのシステムファイルが保護されており、通常であればroot権限でコマンドを実行しても変更が出来ない。
システムファイルを書き換える必要があるため、一時的に無効化するためには起動時に`⌘+r`でリカバリモードで`macOS`を起動させる。
`ユーティリティ`から`ターミナル`を起動させ下記のコマンドで`csrutil`を無効化する。

```
$ csrutil disable
```

## 変更対象の情報を取得する
ディスプレイのベンダIDとプロダクトIDが機種ごとに異なるので、ディスプレイ情報を取得するため下記コマンドでを実行します。

```
$ ioreg -lw0 | grep -e DisplayVendorID |sed -e 's/.*= //g' | xargs printf DisplayVendorID-'%x\n'
$ ioreg -lw0 | grep -e DisplayProductID |sed -e 's/.*= //g' | xargs printf DisplayProductID-'%x\n'
```

```:2016_13インチの場合
$ ioreg -lw0 | grep -e DisplayVendorID |sed -e 's/.*= //g' | xargs printf DisplayVendorID-'%x\n'
DisplayVendorID-610

$ ioreg -lw0 | grep -e DisplayProductID |sed -e 's/.*= //g' | xargs printf DisplayProductID-'%x\n'
DisplayProductID-a034
```

## 対象のファイルを変更する
取得した情報をもとに対象のファイルを変更します。

```
$ cd /System/Library/Displays/Contents/Resources/Overrides/
```

```
$ cd DisplayVendorID-610
```

```
$ vim DisplayProductID-a034
```

`1920 x 1200`の解像度を追加したい場合は、
`<key>scale-resolutions</key>`の次にある`<array>`の最後に、`<data>AAAPAAAACWAAAAAB</data>`を追加します。

(※ MacBook 12インチは`1680 x 1050`までしか認識しなかったので
代わりに`<data>AAANIAAACDQAAAAB</data>`を追加します。)


```plist:DisplayProductID-a034_追記後
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>DisplayVendorID</key>
        <integer>1552</integer>
  <key>DisplayProductID</key>
  <integer>41012</integer>
  <key>DisplayProductName</key>
  <string>Color LCD</string>
  <key>DisplayLeakage</key>
  <real>0.419</real>
  <key>DisplayLowestLevel</key>
  <real>2</real>
  <key>DisplayLowestMeasured</key>
  <real>0.4323</real>
  <key>DisplayBacklight</key>
  <real>575.50</real>
  <key>DisplayDarkReflection</key>
  <real>1.10</real>
  <key>DisplayBrightReflection</key>
  <real>573.10</real>
  <key>IOGFlags</key>
  <integer>4</integer>
  <key>scale-resolutions</key>
  <array>
    <data>AAANIAAACDQA</data>
    <data>AAALQAAABwgA</data>
    <data>AAAKAAAABkAA</data>
    <data>AAAIAAAABQAA</data>
    <data>AAAKAAAABkAAAAABACAAAA==</data>
    <data>AAAKAAAABaAAAAABACAAAA==</data>
    <data>AAAHgAAABLAAAAABACAAAA==</data>
    <data>AAAHgAAABDgAAAABACAAAA==</data>
    <data>AAAFAAAAAtAAAAABACAAAA==</data>
    <data>AAAGcgAABBoAAAAB</data>
    <data>AAAFoAAAA4QAAAAB</data>
    <data>AAAFAAAAAyAAAAAB</data>
    <data>AAAEgAAAAtAAAAAB</data>
    <data>AAAEAAAAAwAAAAAB</data>
    <data>AAADSAAAAg0AAAAB</data>
    <data>AAADIAAAAlgAAAAB</data>
    <data>AAACgAAAAeAAAAAB</data>
    <data>AAANIAAACDQAAAAJAKAAAA==</data>
    <data>AAALQAAABwgAAAAJAKAAAA==</data>
    <data>AAAKAAAABkAAAAAJAKAAAA==</data>
    <data>AAAIAAAABQAAAAAJAKAAAA==</data>
    <data>AAAKAAAABaAAAAAJAKAAAA==</data>
    <data>AAAGcgAABBoAAAAJAKAAAA==</data>
    <data>AAAHgAAABLAAAAAJAKAAAA==</data>
    <data>AAAHgAAABDgAAAAJACAAAA==</data>
    <data>AAAFAAAAAtAAAAAJACAAAA==</data>
    <data>AAAPAAAACWAAAAAB</data>
  </array>
  <key>target-default-ppmm</key>
  <real>10.0699301</real>
  <key>edid-patches</key>
  <array>
    <dict>
      <key>offset</key>
      <integer>72</integer>
      <key>data</key>
      <data>AAAAEAAAAAAAAAAAAAAAAAAA</data>
    </dict>
  </array>
</dict>
</plist>
```

## 再起動
再起動後、`システム環境設定` > `ディスプレイ` > `解像度` > `変更` に追加した解像度が増えていれば成功です。

<img width="681" src="https://qiita-image-store.s3.amazonaws.com/0/5295/2c367e8c-88b2-cc98-7db9-848df2bdb916.png">


## SIPの有効化
システムファイルの保護を無効にしたままだとよろしくないのでSIPを有効な状態に戻す。
無効化したときと同様に、起動時に`⌘+r`でリカバリモードで`macOS`を起動させ`ユーティリティ`から`ターミナル`を起動させ下記のコマンドで`csrutil`を有効化する。

```
$ csrutil enable
```