複数ディスプレイの設定がスリープ後に崩れるのを一瞬で元に戻す【Mac】

2021年10月20日水曜日

Mac

t f B! P L

m1 mac miniに2台のディスプレイを繋いで使っているのだが
スリープから復帰したタイミングで

「解像度が変わっている」
「ミラーリングになっている」
「メインディスプレイが変わっている」

という状態になることがたびたびある。

そのたびに手動で設定を元通りにするのは面倒なので、
「dpr」(ディスプレイリセットの意)とターミナルに入力するだけで
設定が元通りになるようにした。

dpr(自作シェルスクリプト)の中身は以下の通り。

display_manager.py mirror disable
cscreen -i 2 -p
cscreen -i 1 -d 32 -x 1920 -y 1080 -r 120
/Applications/app2/DisableMonitor.app/Contents/MacOS/DisableMonitor -d 1

1行目から順に

「ミラーリングをオフ」
「2番ディスプレイ(我が家ではAOC)をメインディスプレイに」
「1番ディスプレイ(我が家では大画面テレビ)の解像度を2Kに」
「1番ディスプレイに表示されている項目を2番ディスプレイに移動」(本来はディスプレイへの信号を切る命令だが、うちの環境ではうまく動作せず、デスクトップで作業中のウィンドウをメインディスプレイに移動させるだけの動作になる)

という命令になっている。

これで画面表示がおかしいときには「dpr」と打ち込むだけで元通りにできるので便利になった。
だが、そもそも毎回コマンドを入力するのも面倒だ。
そこで、スリープが解除されたときに「dpr」が毎回自動で実行されるように設定することにした。
くわしくは次の記事(スリープが解除されたときに自動でコマンドを実行する【Mac】)で。

QooQ