Sierra対応! MacBook Pro 13inch Retina を疑似解像度 1920×1200 で使う

以前も同様の記事を書いたのですが、内容が古くなったため新しく書き直してみます。

前回記事:

OS X で画面サイズを拡張する系のソフトウェアに QuickRes というものがあります。ちょっと画面を広く使いたいなーというときに、WUXGA(1920 x 1200) なディスプレイで擬似的に WQXGA (2560 x 1600)

13inch MacBook Pro では、ディスプレイ設定で選択できる最大の解像度が 1680 x 1050 となっています。ここで、最大 1920 x 1200 を選択できるようにするための変更方法になります。QuickRes などの解像度拡張系のソフトウェアを使っている場合は、 HiDPI モードで選択できる解像度の上限が上がるかと思います。

前回記事から OS も 2 世代新しくなり、書き換えるファイルのパスも変わっているようなので、新しい記事としてまとめてみたいと思います。

環境

  • MacBook Pro (Retina, 13-inch, Early 2015)
  • mac OS Sierra 10.12.2

お約束

システムで使われるファイルの書き換えを行います。下記の内容を試す際は自己責任でお願いします。

変更手順

OS X El Capitan から System Integrity Protection (SIP) というセキュリティ機構が導入されました。root ユーザであってもシステムの特定領域を変更することができなくなるものです。

今回は SIP で保護された領域のシステムファイルを書き換える必要があるため、この SIP を一時的に無効にする手順が必要となります。ファイル書き換えが完了したら SIP を再び有効にしておきます。

1. リカバリモードで起動し SIP を無効にする

Mac が既に起動していたらシャットダウンします。Command + R を押しながら Mac 電源ボタンを押し、 Mac をリカバリモードで起動させます。

その後、 メニューバー > ユーティリティ > ターミナル を選択しターミナルを起動させます。以下のコマンドで SIP を無効にします。

csrutil disable

その後 reboot し、通常通り Mac を再起動します。ターミナルを立ち上げ、以下のコマンドを実行し status が disabled になっていれば OK!

% csrutil status
System Integrity Protection status: disabled.

2. ディスプレイ認識に関するファイルを書き換える

ディスプレイ認識に関係するファイルを書き換えることで、1920×1200 を選択できるようになります。目的のファイルは /System/Library/Displays/Contents/Resources/Overrides ディレクトリに存在します。

% cd /System/Library/Displays/Contents/Resources/Overrides
% ls
DisplayVendorID-10ac/     DisplayVendorID-469/      DisplayVendorID-610/
DisplayVendorID-11a9/     DisplayVendorID-472/      DisplayVendorID-68c/
DisplayVendorID-1e6d/     DisplayVendorID-4c2d/     DisplayVendorID-756e6b6e/
DisplayVendorID-2283/     DisplayVendorID-4d10/     DisplayVendorID-9e6d/
DisplayVendorID-22f0/     DisplayVendorID-4dd9/     DisplayVendorID-daf/
DisplayVendorID-34a9/     DisplayVendorID-5a63/     Icons.plist
DisplayVendorID-38a3/     DisplayVendorID-5b4/      Models/

DisplayVendorID-*** というディレクトリの中に DisplayProductID-*** という名前のファイルが保存されているという構成になっています。各ファイルは plist 形式になっているようです。

で、どのディレクトリの何てファイルを書き換えれば良いの?

これらのファイルは、ディスプレイの製造会社と製品ごとに分けられています。それぞれ DisplayVendorID, DisplayProductID の2つの識別子が割り当てられています。自分の使っているマシンの識別子を特定し、対応するディレクトリ/ファイルの中身を書き換えていくことになります。

自分のマシンの DisplayVendorID, DisplayProductID は、以下のコマンドで調べることができます。

% ioreg -lw0 | grep IODisplayPrefsKey

上記コマンドを実行すると、下のような結果が出てくるかと思います。注目するのは実行結果の一番最後です。

% ioreg -lw0 | grep IODisplayPrefsKey
    | | | | | |       "IODisplayPrefsKey" = "IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/IGPU@2/AppleIntelFramebuffer@0/display0/AppleBacklightDisplay-610-a029"

AppleBacklightDisplay-610-a029 と表示されています。この AppleBacklightDisplay にハイフンで続く英数字が、それぞれ順に DisplayVendorIDDisplayProductID となります。

上記の例の場合であれば、書き換えるべきファイルは

/System/library/Displays/Overrides/DisplayVendorID-610/DisplayProductID-a029

ということになります!

3. 1920 x 1200 (HiDPI) を追加する

書き換えを行うファイルが判明しました。書き換えにミスった場合に元通りにできるよう、念のためバックアップをとっておきましょう。

% cp /System/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-610/DisplayProductID-a029 ~/DisplayProductID-a029.backup

適当なエディタで対象のファイルを開きます。

% sudo vim /System/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-610/DisplayProductID-a029

<data> ~~ </data> と書かれた謎の文字列が並んでいます。その並びの一番最後の行に、以下の行を追記します。これが HiDPI で 1920×1200 を使うためのデータなんだそうです。

<data>AAAPAAAACWAAAAAB</data>

👇こんな感じで。

    〜 省略 〜

        <data>AAAHgAAABLAAAAAJAKAAAA==</data>
        <data>AAAHgAAABDgAAAAJACAAAA==</data>
        <data>AAAFAAAAAtAAAAAJACAAAA==</data>
        <data>AAAPAAAACWAAAAAB</data>        ← こいつを追加した
    </array>
</dict>
</plist>

追記が終わったら Mac を再起動します。

4. 解像度が変わったか確認

ディスプレイ設定で More Space を選んで、解像度が 1920×1200 となるか確認してみます。以下のコマンドを打つことで、現在設定されている解像度を調べることができます。

% osascript -e 'tell application "Finder" to get bounds of window of desktop'

1920×1200 が設定可能になったようです!

ちなみに、環境設定で変更できる解像度は以下のようになります。

  • 1280 x 800
  • 1440 x 900 Best (Retina)
  • 1680 x 1050
  • 1920 x 1200 More Space

QuickRes のメニューも確認してみます。 HiDPI のメニュー内に 1920×1200 が現れました。

無事に書き換え作業が出来たようです!

5. SIP を有効に戻す

最後に、無効化していた SIP を有効に戻しておきましょう。手順1と同様に Mac をリカバリモードで起動し、ターミナルで以下のコマンドを実行します。

csrutil enable

その後 reboot し、通常通り Mac を再起動します。 csrutil status が enabled になっていれば OK!

% csrutil status
System Integrity Protection status: enabled.

以上で作業完了です!

スポンサーリンク
shiftky_blog_336

シェアする

  • このエントリーをはてなブックマークに追加

フォローする