Carpe Diem

備忘録

スクリーンショットをYoinkに直接送る

背景

以前以下の対応を行いましたが、

christina04.hatenablog.com

最後に書いてあるようにある程度ファイルは小さくなったもののクリップボード経由だとまだまだ大きく、結局スクリーンショットを保存したディレクトリから貼り付ける習慣になってしまいました。

しかしその場合以下の課題がありました。

  • 保存ディレクトリから貼り付けるのが手間
    • Dockに保存ディレクトリを常駐させているが、ファイルが増えると見えなくなる
  • 複数ファイルになるとDockから直接D&Dできない

そこで

を使って上記の課題を解決しました。

環境

  • Yoink v3.6.83
  • Alfred v5.0.3
  • Irvel/screenshot-to-yoink

方法

前提

前提として以下があります。

  • Yoinkを購入している
  • AlfredのPowerpackを購入してworkflowが利用できる

デフォルトのスクリーンショットを切っておく

システム設定>キーボード>ショートカット

で既存のショートカットを外しておきます。

Alfred Workflow

以下のworkflowをインストールします。

GitHub - Irvel/screenshot-to-yoink: Alfred workflow for capturing screenshots into the Yoink app

環境変数を設定

このWorkflowでスクリーンショットを保存する際の環境変数を設定します。

変数 説明
base_name スクリーンショット名のprefix
date_format スクリーンショット名のsuffixにつける日付
extension 拡張子
screenshot_alt_dir 保存先
yoink_path Yoinkのインストール先

設定例

ショートカットの設定

次にショートカットを設定します。

先程OFFにしたショートカットを割り当てます。
※あらかじめOFFにしておかないと、入力してもスクリーンショットを撮ろうとしてしまいます

動作確認

先程設定したショートカットからスクリーンショットを撮ると、即座にYoinkのシェルフスペースに置かれます。

これまで通りディレクトリにも保存されます。なのでもしもう一度使いたい場合はそこから利用します。

その他

PNGで保存されている?

imagemagicのidentifyで確認すると中身がPNGだったりします。

# identify xxx.jpg
xxx.jpg PNG 1114x440 1114x440+0+0 8-bit sRGB 71678B 0.000u 0:00.002

そのせいなのか最近slackにアップロードすると実際の画像と拡張子の整合性が合わず以下のようにプレビューが表示されなくなりました。

この場合シェルスクリプトscreencaptureにオプション-t jpgを追加すると解決できます。

# Take the actual screenshot
-capture_output = $(screencapture "${screencapture_flags}" "${screenshot_path}")
+capture_output = $(screencapture "${screencapture_flags}" -t jpg "${screenshot_path}")

https://github.com/Irvel/screenshot-to-yoink/blob/0bac25e9d39d9799477ecdc716d3960eb0f257ba/screenshot-to-yoink.sh#L33-L34

まとめ

Yoinkを連携することでスクリーンショットのファイルサイズを小さくしたまま、各所への貼り付けが容易になり格段に使いやすくなりました。