MacBookで画面を高解像度にする

2022-02-05

MacBookで、画面を広くしてとにかくたくさんの情報を表示させたい主義の人向け。

アップルメニューの「システム環境設定>ディスプレイ>サイズ調整」から画面をどのくらいのサイズで表示するかを選べるが、 最高を選んでも擬似解像度が 1680x1050 などとなっている。 フォント表示が綺麗でいいんだけどノートPCの画面領域は限られてるので、もっと高密度にして画面を広く使いたい。

そんなことを思っていたら解答を見つけた: macbook pro - Changing display resolution on Retina machines while in Command Line Mode - Ask Different

以下のソースを “setgetscreenres.m” というファイル名で保存:

して、コンパイル:

$ c++ setgetscreenres.m -framework ApplicationServices -o setgetscreenres
setgetscreenres.m:35:16: warning: 'CGDisplayBestModeForParameters' is deprecated: first deprecated in macOS 10.6 - No longer supported [-Wdeprecated-declarations]
switchMode = CGDisplayBestModeForParameters(mainDisplay, 32, h, v, NULL);
^
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/CoreGraphics.framework/Headers/CGDirectDisplay.h:474:38: note: 'CGDisplayBestModeForParameters' has been explicitly marked deprecated here
CG_EXTERN CFDictionaryRef __nullable CGDisplayBestModeForParameters(
^
setgetscreenres.m:49:5: warning: 'CGConfigureDisplayMode' is deprecated: first deprecated in macOS 10.6 - No longer supported [-Wdeprecated-declarations]
CGConfigureDisplayMode(config, display, mode);
^
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/CoreGraphics.framework/Headers/CGDisplayConfiguration.h:408:19: note: 'CGConfigureDisplayMode' has been explicitly marked deprecated here
CG_EXTERN CGError CGConfigureDisplayMode(CGDisplayConfigRef __nullable config,
^
2 warnings generated.

APIがdeprecatedになってしまったようでワーニングは出るが、一応成功する。 生成される実行ファイルに望みの解像度を渡すと、サポートする近い解像度に変更できる:

$ setgetscreenres 2560 1600

起動時に自動的に設定されるようにする

OSを再起動するたびに手動で指定するのは面倒なので、自動的に実行させたい。 その場合の手順:

  • Automator で実行コマンドを作成する
    • 「アプリケーション>Automator」を起動
    • 書類の種類に「アプリケーション」を選択する
    • 「シェルスクリプトを実行」をダブルクリック
    • 置いたパス/setgetscreenres [X解像度] [Y解像度] と記述して任意の名前で保存する
  • 「システム環境設定>ユーザとグループ」で自分のユーザの「ログイン項目」に追加する

以上で起動後に自動的に望みの解像度に変更される。