macOSで利用できる擬似解像度を追加する
MacではRetina Displayの搭載されたモデルで適切な表示を行うために、擬似的な解像度でレンダリングを行ってから実際のディスプレイ解像度にスケールする機能があります。
標準で選べるのは5種類ですが、キーボードのOption(Alt)を押しながら「変更」に切り替えることでより多くの解像度を選ぶことができます。
また、以下のようなサードパーティーのアプリを利用することで更に多くの解像度に変更できます。
Easily set Mac Retina display to higher unsupported resolutions - avibrazil/RDM
ただし、それでも欲しい擬似解像度が必ずあるとは限りません。そこで、利用できる擬似解像度の追加をします。
※ 2020/12/8 macOS Big Sur用に書き換えました
環境
今回、自宅のiMacをMacbook Airから遠隔操作しやすいよう、iMacで1680x1050(HiDPI)の擬似解像度を使えるようにします。
- モデル
- iMac (Retina 5K, 27-inch, 2019)
- OS
- macOS Big Sur 11.0.1
- 追加する解像度
- 1680x1050(HiDPI) = 3360x2100
この記事ではiMacの内蔵Retinaディスプレイを例に説明しますが、同様の方法でMacbookや外部ディスプレイでもできるはずです。
SIP・システムボリュームの扱い
Catalinaではシステムディレクトリ内のディスプレイ定義ファイルを書き換えて解像度を追加していました。ところがBig Surではシステムファイルを書き換えることができなくなり困っていたところ、どうやらライブラリディレクトリに配置すればいいみたいで、システムディレクトリを書き換える必要がなくなったので、SIPの無効化やシステムボリュームのリマウントは必要ありません。
ディスプレイファイルの編集
編集するファイルを探す
解像度の一覧が定義されているファイルは/System/Library/Displays/Contents/Resources/Overrides/
以下にあるのですが、Vendor IDとProduct IDでファイルが分かれています。
Vendor IDとProduct IDはシステム環境設定
→ディスプレイ
→カラー
→[変更したいディスプレイのプロファイル]
→プロファイルを開く
→mmod
と辿っていくと分かります。
これをもとに編集するべきファイルを探してください。
今回のiMac 5K 2019では/System/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-610/DisplayProductID-ae27
を編集すればいいことが分かります。
ファイルをコピーする
システムファイルは直接編集できないのですが、ディスプレイファイルに関しては/Library
以下の同じパスに配置すれば読み込んでくれるみたいなので、そちらにコピーして編集します。
編集したいファイルが/System/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-610/DisplayProductID-ae27
ならば/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-610/DisplayProductID-ae27
にコピーして編集すればいいということです。
sudo mkdir -p /Library/Displays/Contents/Resources/Overrides/DisplayVendorID-610
sudo cp /System/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-610/DisplayProductID-ae27 /Library/Displays/Contents/Resources/Overrides/DisplayVendorID-610
sudo nano /Library/Displays/Contents/Resources/Overrides/DisplayVendorID-610/DisplayProductID-ae27
なので、上記のようなコマンドでコピー・編集します。
解像度を追加する
<key>scale-resolutions</key>
という記載のすぐ下に<data>AAAPAAAACHAAAAABACAAAA==</data>
というようなデータが並んでいると思います。
この<data> ~ </data>
ひとつひとつが定義されている解像度であり、この末尾に目的の解像度を追加すればOK。
目的の解像度のデータが何なのかってのは以下のディスプレイファイルを生成するツールを使えば分かります。
少しややこしいのですが、入力する解像度はポイントではなくピクセル単位になります。つまり、1680x1050(HiDPI)の解像度にしたかったら、倍の3360x2100を入力してHiDPIにチェックを入れるということ。HiDPIでないならそのまま入力すればいいのですが、そうじゃなければ注意してください。
これを<data> ~ </data>
の最後に追加するとこんな感じになるはず。
あとは保存して再起動してください。そうすればRDMから選べるようになってるはずです。
うまくいかない時は
テキストエディタやFinderがファイルに拡張属性を追加してしまうと認識しなくなります。ls -l@
で拡張属性がついていないか確認し、もし拡張属性がついているならxattr
コマンドで削除してください。
まとめ
今までiMacで設定できる16:10の解像度が低解像度の1920x1200のみで、Macbook Airから画面共有で繋ぐ時はこれを使っていたのですが、今回擬似解像度を追加したので画面共有でもMacbook AirのRetinaディスプレイを活用できるようになり、みやすくなりました。 ちょっとハードル高めで面倒ですが、困ってたら試してみる価値はあると思います。
参考
Contribute to bbhardin/A-Guide-to-MacOS-Scaled-Resolutions development by creating an account on GitHub.
コメント