13インチのMacBook Proを疑似解像度1920×1200で使う設定
はじめに
清水です。13インチのMacBook Proをよく使っているのですが *1、ディスプレイ解像度(疑似解像度)を通常では設定できない1920x1200で使用しています。この設定方法、macOSのセットアップ時にその都度Google検索していたのですが、先日macOSのソフトウェアアップデートを実施したらこの設定がクリアされてしまい、この度の再設定を契機に個人的備忘録としてブログエントリにまとめてみたしだいです。
なお以下の方法ですがAppleより公式に公開されているものかは不明です。基本的にはWebの情報を参考にしています。(参照元サイトは本エントリ最後にまとめてあります。)実際に設定する方は 必ず自己責任で お願いいたします。
前提など
13インチのMacBook Pro(例えばMacBook Pro (13-inch, 2017, Four Thunderbolt 3 Ports)
など)、スペック上のディスプレイ解像度(ピクセル数)は2560x1600ですが、macOSインストール直後はこれを疑似解像度1440x900として使う設定となっています。(たしかMacBook Pro (Retina, 13-inch, Early 2015)では疑似解像度1280x800がデフォルトでした。)
システム環境設定のディスプレイ > 内蔵Retinaディスプレイの設定で解像度を変更することにより他の解像度でも使用可能です。標準では以下4つの疑似解像度が選択できるかと思います。(上から文字を拡大、下に行くほどスペースを拡大)
- 1024x640
- 1280x800
- 1440x900
- 1680x1050
通常では上記の通り、1680x1050が最大の疑似解像度なのですが、これを1920x1200とさらにひとまわり大きい疑似解像度でつかえるよう設定を行います。本エントリはmacOSのシステムファイルを書き換える方法を採りますが、他にもアプリを使って標準以外の疑似解像度にする方法もあるようです。(以前アプリを使った方法も試したことがあるのですが、画面がぼやけたりしてしまって使用を断念しました。)
なお、以下3種のMacBook Proで設定したことがあります。macOSのバージョンとしては現在リリースされている最新のmacOS Mojaveの他、macOS High Sierra、macOS Sierraあたりでの動作を確認しています。(ただし以下の3つのハードウェアとmacOSのバージョン、すべてとの組み合わせでの確認は取れていません。)
- MacBook Pro (Retina, 13-inch, Early 2015)
- MacBook Pro (13-inch, 2017, Four Thunderbolt 3 Ports)
- MacBook Pro (13-inch, 2018, Four Thunderbolt 3 Ports)
13インチのMacBook Proを疑似解像度1920x1200で使う設定方法
それでは実際に13インチのMacBook Proを疑似解像度1920x1200で使う設定方法をまとめていきます。
繰り返しになりますがOSの設定ファイルを書き換える作業となります。ファイル構造を破損してしまった場合や設定内容を誤ってしまった場合の動作はどうなるかわかりません。自己責任で編集してください。
SIPを無効に設定
疑似解像度1920x1200の設定ですが、macOS上のシステムファイルを書き換える必要があります。通常状態ではSystem Integrity Protection (SIP)というセキュリティ機能でシステムファイルの書き換えができないようになっているので、まずはこのSIPを無効にします。
SIPが有効であることの確認
まずは現状、SIPが有効となっていることを確認しておきます。ターミナルからcsrutil status
を実行します。enabled
ということで有効ですね。
$ csrutil status System Integrity Protection status: enabled.
Macをリカバリーモードで起動
SIPを無効にするにはMacをリカバリーモードで起動する必要があります。OSシャットダウン後に再度Macの電源を入れ、command (⌘) + R
を押し続けます。しばらくするとリカバリーモードで起動し、以下のようなmacOSユーティリティ画面が表示されます。(参考: macOS 復元について)
SIPを無効化
上記のmacOSユーティリティを無視して、上部のメニューバーからユーティリティ > ターミナルを選択、ターミナルを起動します。csrutil disable
と入力してSIPを無効にします。
ターミナルを終了させ、再度macOSユーティリティが表示されたら、上部のメニューバーのリンゴマークから再起動を選択して、再起動を行います。
SIPが無効になっていることの確認
再度Macを起動して、ターミナルからcsrutil status
を実行します。disabled
と表示され無効になっていることを確認しましょう。
$ csrutil status System Integrity Protection status: disabled.
システムファイルの編集
SIPを無効にしたら、実際にシステムファイルを編集していきます。
編集するシステムファイルの確認
ターミナルでioreg -lw0 | grep IODisplayPrefsKey
を実行します。実行結果の行末尾の部分、下記の例ではAppleBacklightDisplay-610-a034
を確認します。これをハイフン(ー)で区切り、2つ目の3桁の数字(ここでは610)がDisplayVendorID、3つ目の4桁のアルファベット+数字がDisplayProductIDと呼ばれるものとのことです。これらを使って実際に編集するファイルが決まります。
$ ioreg -lw0 | grep IODisplayPrefsKey | | | | | "IODisplayPrefsKey" = "IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/IGPU@2/AppleIntelFramebuffer@0/display0/AppleBacklightDisplay-610-a034"
編集する対象のファイル群については、/System/Library/Displays/Contents/Resources/Overrides
ディレクトリ配下に存在します。このディレクトリの一つ下、DisplayVendorID-[3桁の数字]
(この例ではDisplayVendorID-610
)ディレクトリ配下の、DisplayProductID-[4桁のアルファベット+数字]
(この例ではDisplayProductID-a034
)が編集対象のファイルとなります。つまり/System/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-610/DisplayProductID-a034
ですね。
他の例だと以下のように、DisplayVendorID-610
、DisplayProductID-a03e
となり、編集対象のファイルは/System/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-610/DisplayProductID-a03e
となります。
$ ioreg -lw0 | grep IODisplayPrefsKey | | | | | "IODisplayPrefsKey" = "IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/IGPU@2/AppleIntelFramebuffer@0/display0/AppleBacklightDisplay-610-a03e"
以降はDisplayVendorID-610
、DisplayProductID-a034
を例にしてまとめていきます。編集対象のファイルが確認できたら、まずはバックアップを取っておきましょう。
$ sudo cp -p /System/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-610/DisplayProductID-a034 /System/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-610/DisplayProductID-a034.original
設定ファイルの書き換え
続いて実際に設定ファイルを書き換えます。お好みのエディタでファイルを開きましょう。
$ sudo emacs /System/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-610/DisplayProductID-a034
XML形式のファイルです。以下のように、<key>scale-resolutions</key>
に続いて
<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> </array>
この列挙の末尾に、疑似解像度1920x1200を使用する設定である、<data>AAAPAAAACWAAAAAB</data>
という一要素を挿入にします。</array>
の直前ですね。以下のようになります。(追加箇所をハイライト表示しています。)
<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>
編集し終えたら、保存してエディタを終了、diffコマンドで変更内容を確認しておきましょう。
$ diff /System/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-610/DisplayProductID-a034 /System/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-610/DisplayProductID-a034.original 53d52 < <data>AAAPAAAACWAAAAAB</data>
再起動と解像度の設定
設定ファイルを編集し終えたら、一度OSを再起動します。その後は通常の手順と同じく、システム環境設定の「ディスプレイ」から解像度を変更します。右側に1920x1200が追加されているので、これを選択しましょう。
SIPを有効に戻す
無事に疑似解像度1920x1200を設定できたら、システムファイル保護が再度有効になるようSIPを有効に戻しておきます。手順や先ほどの無効化と同一です。(有効/無効の部分だけ反対になりますね。)
SIPが無効であることの確認
システムファイルを書き換えたので、SIPは無効になっているはずですね。disabled
と表示されることを確認しておきます。
$ csrutil status System Integrity Protection status: disabled.
Macをリカバリーモードで起動
OSを一度シャットダウン、再度Macの電源を入れ、command (⌘) + R
を押し続けます。しばらくするとリカバリーモードで起動し、macOSユーティリティ画面が表示されます。
SIPを有効化
メニューバーからユーティリティ > ターミナルを選択してターミナルを起動します。csrutil enable
と入力してSIPを有効にします。
ターミナルを終了させ、再度macOSユーティリティが表示されたら、上部のメニューバーのリンゴマークから再起動を選択して、再起動を行います。
SIPが有効になっていることの確認
再度Macが起動したら、ターミナルからcsrutil status
を実行します。enable
と表示され有効にになっていることを確認しましょう。
$ csrutil status System Integrity Protection status: enabled.
まとめ
13インチのMacBook Proにて、通常では設定できない1920x1200の疑似解像度をシステム環境設定から指定できるようにする方法を個人的な備忘録がてらまとめてみました。
個人的にはMacに改宗する前のWindows使用時代から、かれこれ5年以上ぐらいは横幅1920ピクセルの環境で作業をしています。左に横幅80文字ぐらいのemacs、右にGoogle Chromeという具合ですね。フォントサイズやChrome上の拡大/縮小などもありますが、メニューバーなどユーザインターフェース部分のサイズ感など、やっぱり横幅1920ピクセルが一番しっくりきます。Mac改宗当初など以前は標準で設定できる最大の1650x1050で使用している時期もあったのですが、いまでは1920x1200でないといまいちしっくりこないようになってしまいました。ただ次期macOS Catalinaではファイルシステムの保護方法なども変わるそうで(例えばこちらの記事など)引き続きこの設定ができるのかが気がかりです…。
参考サイト
脚注
- 会社の支給PCや個人PCなどなど ↩