WQHD(2560x1440)ディスプレイを使っていると、画面共有時に文字が小さくなってしまい読めないことが多々あるので、画面共有するときは都度解像度を下げていた。 変更し忘れたり、変更するのにもたついたりする時間があるため、ディスプレイの解像度の変更を簡単にできないかを調べた。
ゴール
- Raycastで解像度を変更できるようにする
Raycastから実行するAppleScriptを作成
引数つきで実行もできる
AppleScriptの中身を書く
AppleScriptにはあまり詳しくないのでもっといい書き方があるかもしれないですが悪しからず
mac - Is it possible to change display resolution with a keyboard shortcut? - Ask Different によるとOSのバージョンによってUIが異なるのでスクリプトを変えないといけないみたい
Monterey(12.6) の場合
解説
on run argv
引数つきで実行する
set resolution_index to ( item 1 of argv )
1つめの引数を代入する
tell application "System Preferences"
...
tell window "Displays" of application process "System Preferences"
click button "Display Settings…"
System Preferencesを開いて、ボタンクリックなどの画面操作をする
tell sheet 1
select row 2 of outline 1 of scroll area 1
click radio button "Scaled" of radio group 1
tell scroll area 2
tell table 1
select row (resolution_index as integer)
end tell
end tell
end tell
Display Settingsの画面で、
- 2番目のモニターを選択
- ラジオボタンScaledをクリックして解像度のリストを開く
- 解像度のリストから引数で指定したインデックスを選択する
以降は画面を閉じたりアプリケーションを終了したりを行うパート
所感
- 操作対象のUIを特定するために
log every UI element
で一覧出力するのが便利だった - UIを番号で指定しているのが、簡単に壊れそうで嫌だな
- 解像度の指定もインデックスでやっているがわかりにくいな
参考
AppleScript to change Display Resolution - Apple Community mac - Is it possible to change display resolution with a keyboard shortcut? - Ask Different macbook pro - a single keyboard shortcut that toggles between 2 resolutions on MacOS 12.6 - Ask Different Change screen resolution AppleScript