はじめに
macOS で決まった範囲のスクリーンショットを撮りたい場合、「Cmd + Shift + 5」でスクリーンショット.app を起動してマウスで範囲選択します。
この範囲は次に起動したときも同じ範囲が選択状態になっているため、どこかに記憶されているはずです。その値を取得すれば、screencapture
コマンドを使って自動化できるかもしれません。テストの自動化など、応用が広がります。
記憶されている場所
記憶されているのは ~/Library/Preferences/com.apple.screencapture.plist
です。
シェルで取得してみる
下記のシェルで取得できました。screencapture
コマンドに渡しやすい順番にカンマ区切りで表示しています。
#!/usr/bin/php <?php // 最後にスクリーンショットを撮った矩形範囲を取得する $top = `/usr/libexec/PlistBuddy -c "print :last-selection:Y" ~/Library/Preferences/com.apple.screencapture.plist` * 1.0; $left = `/usr/libexec/PlistBuddy -c "print :last-selection:X" ~/Library/Preferences/com.apple.screencapture.plist` * 1.0; $width = `/usr/libexec/PlistBuddy -c "print :last-selection:Width" ~/Library/Preferences/com.apple.screencapture.plist` * 1.0; $height = `/usr/libexec/PlistBuddy -c "print :last-selection:Height" ~/Library/Preferences/com.apple.screencapture.plist` * 1.0; $range = [trim($left), trim($top), trim($width), trim($height)]; // 表示する echo implode(',', $range) . "\n";
環境
以下の環境で動作確認しました。
ProductName: Mac OS X ProductVersion: 10.15.7 BuildVersion: 19H1713 PHP 7.3.29 (cli) (built: Aug 15 2021 23:10:16) ( NTS )