clusterでこちらのイベントスタッフをやることになり、そこでYouTube用のアーカイブ動画を撮る役割を担うことになった。うまくYouTubeにアップロードするために、OBSを使ってclusterをYouTubeに適切な16:9サイズ + ヘッダー無しで録画したいと考えた。
ただ意外とMacで指定のウインドウサイズに変更することが難しかったので、やってみたことをメモする。
ターミナルでコマンド一発で変更する方式
osascriptコマンドでAppleScriptを実行することでウインドウサイズを変更できる。同じ手法がhttps://dev.classmethod.jp/articles/mac-app-resize/で紹介されているが、最近のmacOSのプライバシー周りの変更などでうまく動かなくなっていたので調整した。
まずAppleScript的には以下のようにすると、clusterのウインドウサイズを1920x1080に変更できる。
set theSize to {1920, 1080} -- user set as desired tell application "System Events" tell process "cluster" set size of every window to theSize end tell end tell
これをターミナルで柔軟に実行できるようにしたbashのスクリプトが以下。
#!/bin/bash APP_NAME=$1 WIDTH=$2 HEIGHT=$3 osascript \ -e "set theSize to {$WIDTH, $HEIGHT}" \ -e 'tell application "System Events"' \ -e " tell process \"$APP_NAME\"" \ -e ' set size of every window to theSize' \ -e ' end tell' \ -e 'end tell'
このスクリプトをresize-windowという名前で保存しておけば、ターミナルでこのようにアプリケーション名、幅、高さを指定して実行できる。
$ resize-window cluster 1920 1080
ちなみにこのコマンドを実行するターミナルアプリケーションにはプライバシーとセキュリティ > アクセシビリティの権限を与えておく必要があるので注意。
ショートカットアプリを使う方式
同僚に教えてもらったが、ショートカットアプリを使う方式もあるようだ。たとえば以下のように設定する。
このようにしてショートカットを実行するとclusterアプリケーションのウインドウサイズを16:9に変更できる。高さの指定が1080+28になっているのは、後からOBSでヘッダー領域をクロップしたときに16:9になるように調整したものだ。
まとめ
Macで特定アプリケーションウインドウを指定サイズにするのは意外と難しい。今回のやり方が誰かの役に立てば嬉しい。