💻

macのスクリーンショット体験を改善するためにやったこと。

2022/03/11に公開1

不満

スクショをクリップボードにコピーしたいし、ファイルとしても保存してほしい!

  • クリップボードのユースケース
    • スクショとったあと、すぐさまどこかに貼り付けたい。
    • こちらが普段の使い方。
  • ファイル保存のユースケース
    • 過去のスクショ画像を遡ることができる。(昔スクショとったような...っていうのは結構ある。)
    • クリップボードの内容は数・時間の制限により、残らない。

基本的にはクリップボードへのコピーとファイル保存のどちらか一方しか選ぶことができない。。
両方一度に、なるべく簡単な設定でやっちゃいましょう、という趣旨です。

細かい不満

  • ファイル保存する場合に、数秒待たされるのが不満。
  • 保存されるファイル名が不満。
  • jpgで保存してほしい。

これらも簡単に対応します。

望んだスクショ体験

  1. スクショとる。
  2. タイムラグなくクリップボードにコピーされる。
  3. 所定のディレクトリにスクショ内容がファイル保存される。

やったこと

スクリーンショットのファイル保存先フォルダを指定する

デフォルト設定はデスクトップになってたと思います。
これを修正するのはとても簡単。
cmd + shift + 5スクリーンショットと収録のオプションを表示し、保存先->その他から保存先を任意のフォルダに変更できます。
(ここのオプション画面はスクリーンショットが取れなかった😓

スクショファイルが保存されたら内容をクリップボードにコピーさせる

Automatorという機能を使います。
mac osにプリインストールされているアプリケーションで、様々な作業の自動化を実現するために利用されます。
使ったことがなかったのですが、本当にいろんなことができそうですね。

Automatorを起動して、フォルダアクションで新規作成します。

フォルダアクションは、フォルダにファイルが保存された場合に自動実行される処理を定義できます。

まずはじめに、スクリーンショットが保存されるように設定したフォルダを選択します。(今回の例ではscreenshotというフォルダを選択しました。)

次に、フォルダに保存されるファイルに対して自動実行されるアクションを設定します。
アクションのカラムには自動実行されるアクションの候補が列挙されています。
この中からAppleScriptを実行を右側のカラムにドラッグ&ドロップします。

AppleScriptはmac osを操作するためのプログラム言語です。
デフォルトの内容を以下の内容に書き直します。

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

↑このフォルダに保存されたファイルのパスを取得し、その内容をTIFF形式で読み出してクリップボードにコピーする、という内容です。

書き直したら、cmd + sで保存して完了です。

動作確認してみましょう。
クリップボードにもフォルダにもスクリーンショットが保存されていれば成功です。

↓ クリップボードにコピーされた履歴を表示しています。
clipyやAlfredのClipboard History機能を使えば複数のスクリーンショット履歴を利用できるのでとても便利です。(私はAlfredを使っています。)

細かい設定

ファイル保存時の待ち時間を減らす。

スクリーンショットをファイル保存すると、画面右下に小さな画像が表示され、数秒後にサッと消えていきます。
これはフローティングサムネールというものらしく、うざったいことに表示が消えるまでファイル保存されません。

なのでフローティングサムネールを表示しないようにします。

cmd + shift + 5スクリーンショットと収録のオプションを表示し、フローティングサムネールを表示するを押下し、チェックを外します。

これでタイムラグほぼ無しでファイル保存されます。

保存されるファイル名とファイル形式の変更

ファイル名にスクリーンショットという全角文字が出てくるのが気に食わないので消します。ついでに形式も変えます。
これはいろんなところで紹介記事でてるので詳しく知りたい場合はググってください。

ターミナルで以下を実行。

// ファイル名の"スクリーンショット"を空文字列に変更
defaults write com.apple.screencapture name ""

// ファイル形式をjpgに変更
defaults write com.apple.screencapture type jpg

おわり

スクショのクリップボードコピーとファイル保存、両方やりたいだけなのにAutomater, AppleScriptを使うことになるとは思いませんでした。
比較的かんたんな方法で実現できたと思ってますが、普通にシステム設定で指定できるようになってたらいいのにね、と感じます。
もっとシンプルな方法があったら教えてください。

Discussion