$shibayu36->blog;

クラスター株式会社のソフトウェアエンジニアです。エンジニアリングや読書などについて書いています。

Macでコマンド一発で特定のアプリケーションのウインドウを指定サイズにする

cluster.mu

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のスクリプトが以下。

resize-window

#!/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で特定アプリケーションウインドウを指定サイズにするのは意外と難しい。今回のやり方が誰かの役に立てば嬉しい。