will and way

ただの自分用メモを人に伝える形式で書くことでわかりやすくまとめてるはずのブログ

Macでスクリーンショットの保存先の変更と古いスクショの自動削除

デスクトップがスクショの嵐・・・!

f:id:matsuokah:20171102013640p:plain

こんなデスクトップになった経験はないでしょうか。 スクリーンショットの保存先はデスクトップなので、スクショを撮ってるうちにいつの間にかデスクトップがスクショで埋め尽くされることがあります。

精神衛生上よくない!!!

デスクトップは常にきれいでありたいものです。本当作業中で一時的なファイルを置くだけにしたい。

割れ窓理論があるように、デスクトップが心の余裕の無さや秩序を保とうとしているかを表してるんじゃないかという観念に狩られ るんですよね。もはやこれは健やかな精神なのかしるためのバロメータでもあるといえようッッ!!

ということで、整理される環境を整えたいと思います。

結論

2つの工夫で解決できます

1. ターミナルで保存先の変更

$ mkdir -p ~/Pictures/ScreenShots &&  defaults write com.apple.screencapture location ~/Pictures/ScreenShots

f:id:matsuokah:20171102012746g:plain

2. Automator + Calendarで自動的に古いスクリーンショットをゴミ箱に移動する

ターミナルで保存先の変更はDefaultsで解決!

blog.matsuokah.jp

約2年前の記事でも言及してますがdefaults-write.comでいろんな設定値をコマンドラインから設定することが可能です。

defaultsは、設定アプリで設定不可能な項目にアプローチできるので痒かった設定を自分好みに設定することでよりMacを使いやすくすることができます。

任意のディレクトリを作成し、そこに保存する設定を書き込みましょう。
私の場合は、写真フォルダの下にスクリーンショット用のフォルダを作成して、そこを保存先として扱うようにしました。

ターミナルで下記のコマンド2つを実行するのみです

$ mkdir -p ~/Pictures/ScreenShots
$ defaults write com.apple.screencapture location ~/Pictures/ScreenShots

~/Pictures/ScreenShotsをFinderのサイドバーに登録しておくと便利です。

自動削除にはAutomator!!

次は自動削除です。デスクトップに保存しなくなった分、スクショが棚卸しされなくなりそうです。
いつの間にか凄まじい数のスクショになっているかもしれません。
スクショは往々にしてインスタントなデータなので作成日から1ヶ月過ぎたら消されてもほぼ問題無いと思います。

ということで、1ヶ月以上前のスクショを自動的に削除する仕組みを作っていきます。

Automatorを使います。スクリプトを書かない選択をしてみました。

f:id:matsuokah:20171102024333p:plain

こいつです。癖さえわかれば作業・業務を自動化できるので楽しくなります。
エンジニアなら自動化のスクリプトを組むのは日常茶飯事ですがそれがGUIベースでできるイメージです。
アプリケーションベースのアクションが定義されていてその結果を次の操作に繋いでいくイメージでしょうか。

アプリケーションベースのアクションとは
例えば、Finderだったら

  • フォルダを取得する
  • フォルダの名前を変更する

のような単位です。

立ち上げると

f:id:matsuokah:20171102025033p:plain

こんなウィンドウが立ち上がるので左のカラムに並んでいるアクションを、右のエリアにドラッグしてワークフローを作っていきます。

今回やりたいことは「30日以上前に作成したスクリーンショットの削除」

Automatorで扱えるフローに分解すると

  1. スクリーンショットが保存されているディレクトリのパスを取得する
  2. スクリーンショットをリストする
  3. スクリーンショットが作成された日を30日以上前のものにフィルタする
  4. ゴミ箱に移動する

これをAutomatorのフローに当てはめると

  1. Get Specified Finder Items
  2. Get Folder Contents
  3. Filter Finder Items
  4. Move Finder Items to Trash

f:id:matsuokah:20171102030054p:plain

ということでできました。

これで実行するとスクショフォルダ内にある作成日が31日以上前のファイルが一括でゴミ箱に移動されます。

Calendarアプリで定期実行に組み込む

実はCalendarアプリでアプリケーションの定期実行をすることができます。

手順としては

  1. ワークフロー実行用のカレンダーを作成
  2. 上記で作成したカレンダーにスクリーンショット削除の予定をカレンダーに追加
  3. 全日 or 0時などで 毎日繰り返し予定に
  4. カスタムアラートでその時間になったらファイルを開くを選択

こんな感じです

f:id:matsuokah:20171102031142p:plain
予定の追加

ワークフロー実行用のカレンダーを作成

なぜ、ワークフロー実行用のカレンダーを追加したかというと、毎日定期実行の予定がカレンダーを埋め尽くすことになるからです。 カレンダーは分けておいて、ワークフロー実行用のカレンダーを普段は非表示にしておくことをおすすめします。

まとめ

  • defaultsでスクショの保存先を変えてDesktopにスクショがたまらないようにしよう!
  • Automatorとカレンダーでスクショの棚卸しはPCにやらせよう!