実行するコマンド
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・メッセージなど、一部、撮影できないアプリもありました。
原因はまだしっかり把握できていないので、ご存知の方はご教示いただけると幸いです ![]()
