😺
スクリーンショットの設定
shift
+cmd
+4
などでスクリーンショットを撮るときの設定です。
2画面構成のとき
shift
+cmd
+3
で画面全体のスクリーンショットを撮るとファイルが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
screencapture
コマンドには-m
オプションがあるので制御できそうですが、defaults write com.apple.screencapture
でデフォルト値を設定するときの方法がまだわかりません。