MacBook Airで主ディスプレイと拡張ディスプレイを切り替えるスクリプト (OS 13 Ventura)
MacBook AirのOSをアップデートしてVentureにしたところ、Montereyの時に作った外付けディスプレイがある場合にそれを拡張ディスプレイ↔主ディスプレイに切り替えるためのAppleScriptが動かなくなりました。
ボタンを指定して押させるようなスクリプトなので、画面の構成が変わると動かなくなるのですが、今回のVentureでは「システム設定」がiOS風にガッツリ変わっているので、全然 動きません。
相変わらず主ディスプレイと拡張ディスプレイの切り替えは、キーショートカットではできなさそうなので、今回のアップデートでもスクリプトを直しました。
…年に一度しかAppleScriptは触らないので、書き方を忘れてます。
そのスクリプトが以下です。
tell application "System Settings" activate end tell delay 1 tell application "System Events" tell process "System Settings" select row 22 of outline 1 of scroll area 1 of group 1 of splitter group 1 of group 1 of window 1 delay 1 --内蔵ディスプレイのポップアップを選択 tell group 1 of scroll area 2 of group 1 of group 2 of splitter group 1 of group 1 of window 1 click pop up button 1 -- pop up buttonの判定 if (value of pop up button 1) = "拡張ディスプレイ" then click menu item "主ディスプレイ" of menu 1 of pop up button 1 else click menu item "拡張ディスプレイ" of menu 1 of pop up button 1 end if end tell end tell end tell delay 1 tell application "System Settings" quit end tell
このスクリプトでやっていることは、
- システム設定を開く
- システム設定内の「ディスプレイ」を選択
- 「ディスプレイ」内の「使用形態」ラベルの右端にあるポップアップを開いて
- 「主ディスプレイ」のときは「拡張ディスプレイ」を選択
- 「拡張ディスプレイ」のときは「主ディスプレイ」を選択
- システム設定を終了する
上記の内容になっています。
とまあ、スクリプトはこれで良いのですが、スクリプトをアプリケーションとして出力して実行した際に問題が発生。
アプリを実行した際に、初回にアクセス制御についてOSが聞いてきて、システム設定の「プライバシーとセキュリティ」の「オートメーション」の設定を促されるのですが、その中でMontereyではできた「システム設定」のアクセス制御が設定できない。
上はMontereyの時に追加したスクリプト、下はVenturaで追加したスクリプト |
この状態で実行すると、「System Eventsでエラーが起きました: 主ディスプレイ切り替えmacOS13には補助アクセスは許可されません。(-1719)」とアラートが出て実行できない。
(この補助アクセスのアラートが、上記のセキュリティ設定に関連するものかはっきりはわからないですけどね。)
このままだと「クリックだけで実行する」というスクリプトにした意味がなくなってしまうので、以下のようなosascriptコマンドでスクリプトを実行するバッチファイルを作って、そのバッチファイルをダブルクリックして実行することでやり過ごしています。
#!/bin/bash osascript /〜/主ディスプレイ切り替えmacOS13.scpt
上記を「切り替え.command」と言ったcommand拡張子で保存。
セキュリティの件、OSのアップデートで直してくれるかなぁ。