😺

スクリーンショットの設定

2023/08/12に公開1

shift+cmd+4などでスクリーンショットを撮るときの設定です。

2画面構成のとき

shift+cmd+で画面全体のスクリーンショットを撮るとファイルが2つ作成されますが、Automatorの起動は一度のようで、片方のファイルのリネームがうまく動きませんでした。個人的に利用頻度が低いので対応は見送りました。

ターミナルでコマンドを実行する

defaults write com.apple.screencapture

設定例

defaults write com.apple.screencapture disable-shadow -boolean true
defaults write com.apple.screencapture include-date -bool false
defaults write com.apple.screencapture location ~/Screenshot/automator-work
defaults write com.apple.screencapture name "ss"
defaults write com.apple.screencapture show-thumbnail -boolean false
defaults write com.apple.screencapture type jpeg

内容は上から順に以下のとおり

  • 影や余白をつけない
  • 日時を付けない
  • ファイルの出力先
  • ファイル名を "ss" にする
  • サムネイルを表示しない
  • jpeg形式で保存する

設定の確認

defaults read com.apple.screencapture

気になる点

  • ファイル出力とクリップボードの両方に保存できいない
    defaults write com.apple.screencapture target clipboard と同時指定は無理みたい

  • ファイル名にスペースが入る
    日時を付けると"ss 2023-08-12 5.22.45.jpeg"となり、日時がスペースで区切られる。
    日時を付けないと、同一名があるとき"ss.jpeg" "ss 1.jpeg" "ss 2.jpeg"となり、通番がスペースで区切られる。

Automatorで対応

事前に設定の調整が必要な項目

defaults write com.apple.screencapture include-date -bool false
defaults write com.apple.screencapture location ~/Screenshot/automator-work
defaults write com.apple.screencapture name "ss"
defaults write com.apple.screencapture show-thumbnail -boolean false
  • 日時を付けない
  • 出力先を指定
  • ファイル名を指定
  • サムネイルを表示しない(表示しても動くがファイル作成が遅くなる)

Automatorのライブラリを使う例

クリップボードへのコピーは「AppleScriptを実行」で行う

AppleScript
on run {input, parameters}
	set the clipboard to (read (item 1 of input) as TIFF picture)
	return input
end run

シェルを使う例


すべて「シェルスクリプトを実行」の中で行う

zsh
osascript -e "set the clipboard to (read \"$1\" as TIFF picture)"

f=${1##*/}
d=${1%/*/*}
mv -f $1 $d/${f%.*}-$(date "+%Y%m%d-%H%M%S").${f##*.}
${1##*/} みたいなのを使うと文字列の前後をお手軽に切り取れます

  • ${変数##パターン} 変数の先頭からパターンが最も長くマッチした部分を取り除く
  • ${変数%パターン} 変数の末尾からパターンが最も短くマッチした部分を取り除く

記号の意味

最短 最長
先頭 # ##
末尾 % %%

Discussion

yukipyukip

screencapture コマンドには -m オプションがあるので制御できそうですが、defaults write com.apple.screencaptureでデフォルト値を設定するときの方法がまだわかりません。