実行するコマンド
terminal
screencapture -l$(osascript -e 'tell app "App名" to id of window 1') ~/Desktop/image.png
例
iTerm2のスクリーンショットを撮る場合
screencapture -l$(osascript -e 'tell app "iTerm" to id of window 1') image.png
解説
ざっくり解説していきます。
screencapture
macOSには、screencapture
コマンドが標準機能として提供されています。
これはcmd + shift + 3
など、ショートカットでスクリーンショットを撮った時に実行されるコマンドで、ショートカット以外でもコマンドライン上から実行することが可能です。
screencaptureにはいくつかのオプションがあり、今回は特定のwindowIDのウィンドウをキャプチャする-l
オプションを使用しました。
これまでcmd + shift + 4
で領域選択でキャプチャを撮っていましたが、このコマンドを知っておくとと結構便利かも
$ man screencapture
...中略
-l <windowid> Captures the window with windowid.
...
特定のアプリケーションからWindowIDを取得する方法
起動しているアプリケーションからWindowIDを取得するには、AppleScriptから実行する必要があります。
そこで、osascript
コマンドをターミナルから実行します。osascript
は、コマンドラインからAppleScriptが実行できるコマンドです。
注意
Chrome・LINE・メッセージなど、一部、撮影できないアプリもありました。
原因はまだしっかり把握できていないので、ご存知の方はご教示いただけると幸いです