PopClip でリンクタグ作成
![](https://mac-ra.com/wp-content/uploads/2019/02/popclip_title.png)
昨日の Typora の記事において、web ページを markdown でペーストするいい方法、ほかにもっとないものか考えていた。
そしたらあった。
PopClip を使うのだ。
![](https://mac-ra.com/wp-content/uploads/2019/02/popClip_icon.png)
テキストや URL を選択すると小さなポップアップが出てきて、コピーできたり、カットできたり、Google で検索できたりするユーティリティである。
PopClip はさまざまな機能拡張を配布している。
そこに markdown でコピーする機能もあるのだった。
画像の URL もコピーできて万々歳である。
![](https://mac-ra.com/wp-content/uploads/2019/02/popclip_image02.png)
PopClip エクステンションは自作できる
PopClip は Mac ユーザならおなじみのアプリで、AppStore で 1,200 円で販売されている。少々お高く思えるものの、お値段以上の価値があるかもしれない。
PopClip は機能拡張を自作できるのである。
動かせるアクションは、
- サービスメニュー項目
- アップルスクリプト
- シェルスクリプト
- URL
- キー操作
という具合。サービスメニューにアクセスできるなら、Automator で作ったクイックアクションが使えるかもしれない。いろいろ夢が広がる。
ためしに、URL を選択した時に、その URL へのリンクタグを生成する PopClip エクステンションを作ってみたい。
makeLink エクステンション
Safari ツールバーの URL が表示される窓を、「スマート検索フィールド」というらしい。ここで URL を選択してリンクタグを作る、という使用法を想定する。
PopClip エクステンションを自作するにあたって、まずすべきことは、下記のページに飛んでサンプルを眺めることである。
🔗 GitHub – pilotmoon/PopClip-Extensions: Documentation and source code PopClip extensions.
(Google Chrome で翻訳したほうが楽かもしれない)
「General Overview」の 「Types of Actions」というところに Example が例示されている。
どうやら PopClip エクステンションは二つ三つのファイルを必要とするらしい。
- Config.plist (一番肝になるファイル。必ず必要)
- 実行ファイル(シェルスクリプトのファイルなど)
- アイコン(一辺が 256 px 正方形の png 画像)
シェルスクリプトを使うので、「Say」という文章読み上げの機能拡張を参考にする。
Say の plist をコピペして書き直すのが早そうだ。
Config.plist の編集
Say の plist は以下の通りだ。
📝 Say Config.plist(PopClip-Extensions/Config.plist at master · pilotmoon/PopClip-Extensions · GitHub)<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Actions</key>
<array>
<dict>
<key>Image File</key>
<string>speechicon.png</string>
<key>Shell Script File</key>
<string>say.sh</string>
<key>Stoppable</key>
<true/>
<key>Title</key>
<string>Say</string>
</dict>
</array>
<key>Extension Description</key>
<string>Speak the selected text aloud, using the system default voice. To change the voice, go to "Speech" in System Preferences.</string>
<key>Extension Identifier</key>
<string>com.pilotmoon.popclip.extension.say</string>
<key>Extension Name</key>
<dict>
<key>en</key>
<string>Say</string>
<key>fr</key>
<string>Lire</string>
</dict>
<key>Required Software Version</key>
<integer>693</integer>
</dict>
</plist>
plist──プロパティリストというのは xml で記述される。
<key></key>
で囲まれた部分は、手を加えない。
その下に対になっている <string>
や <integer>
タグの部分を、自分用に書き換える。
「Image File」はアイコンのファイルである。下の「speechicon.png」を、「makeLink.png」と書き換えた。
makeLink.png は後で作ればいい。
「Shell Script File」はシェルスクリプトファイルを指示するものである。
string を「makeLink.sh」と書き換えた。
その次の「Stoppable」というのはよくわからない。多分、いらないだろうと見て、次の行の <true/>
とともに削除した。
「Title」は「makeLink」と書き換える。
「Extension Description」は、この機能拡張の概要である。「URLでリンクタグを作成」としておいた。
「Extension Identifier」はなんらかの署名であるらしい。ここでは「com.pilotmoon.popclip.extension.say」を「com.mac-ra.extension.makeLink」とした。com.mac-ra の部分は、なにか適当な名前、com.tekitou とかでもいいと思う。
「Extension Name」は「en」のほうを「Say」から「makeLink」にし、「fr」とその次の行の「Lire」を削除した。
「Required Software Version」は、PopClip のバージョンが、いくつ以上で使用可能という制限をかけるためのものだ。特に変更しなくていいと思われる。
シェルスクリプトとアイコンの作成
サンプルの「say.sh」は以下のようになっている。
echo $POPCLIP_TEXT | say
どうやら、POPCLIP_TEXT という名前で選択したテキストを受けとっているようだ。
シェルスクリプトが引き取る変数は、以下のページ、「Script Fields」で解説されている。
🔗 GitHub – pilotmoon/PopClip-Extensions: Documentation and source code PopClip extensions.
makeLink エクステンションの場合は、「POPCLIP_URLS」というのを引き取るのが良さそうだ。さらに、「POPCLIP_BROWSER_TITLE」というのもある。ページのタイトルが入っているらしい。
シェルスクリプトは以下のようにした。
echo '<a href="'$POPCLIP_URLS'" target="_blank">'$POPCLIP_BROWSER_TITLE'</a>' | pbcopy
作ったリンクタグは、「pbcopy」でクリップボードにコピーするのだ。
続いてアイコン。
PopClip のアイコンは 256px X 256px で作る png ファイルである。背景は透明で、使える色は黒のみ。ただし、透明度を変更することで灰色が表現できる。
こんなふうにしてみた。
![](https://mac-ra.com/wp-content/uploads/2019/02/popclip_makelink_icon.png)
これに「makeLink.png」と名前をつけて保存した。
実行してみる
以上の三つのファイル Config.plist、makeLink.sh、makeLink.png を、ひとつのフォルダに集める。フォルダの名前は「makeLink」とする。
![](https://mac-ra.com/wp-content/uploads/2019/02/makelink_folder.png)
このフォルダの名前に「.popclipext」という拡張子を追加する。
システムから確認を求められて OK すると、ようやく PopClip エクステンションの完成だ。
![](https://mac-ra.com/wp-content/uploads/2019/02/extension_quicklook.png)
これをダブルクリックすると、「符号なしの拡張子」というダイアログが出る。
![](https://mac-ra.com/wp-content/uploads/2019/02/popclip_keikoku-1024x453.png)
めげずに「インストールする」を選ぶと、可愛い音が鳴り、メニューバーの PopClip に機能拡張が追加された。
PopClip エクステンションを修正する
さっそく使ってみると、うまいこと動いてくれる。
![](https://mac-ra.com/wp-content/uploads/2019/02/makeLink_image01.png)
しかし、どうも様子がおかしい。URL 以外のテキストを選択した時も makeLink が図々しく出てきてしまう。
これは修正の必要があるだろう。
インストールされた PopClip エクステンションは、「~/Library/Application Support/PopClip/Extensions/」のなかに置かれる。PopClip を使用しているなら、このパスを選択すれば、フォルダのマークが出てきて Finder で開けるのではないかと思う。
popclipext ファイルは右クリックメニューの「パッケージの内容を表示」で中身を見られる。
![](https://mac-ra.com/wp-content/uploads/2019/02/extension_rightclick.png)
さっそく Config.plist を修正する。
Actions 内で「Requirements keys」という、条件を決める項目を指定できるようだ。「選択したテキストに URL が含まれることを要求する」という、おあつらえむきの httpurl なるものがある。
Requirements keys は Array のなかに収める。
最終的に、makeLink の Config.plist は以下のようになった。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Actions</key>
<array>
<dict>
<key>Image File</key>
<string>makeLink.png</string>
<key>Shell Script File</key>
<string>makeLink.sh</string>
<key>Title</key>
<string>makeLink</string>
<key>Requirements</key>
<array>
<string>httpurl</string>
</array>
</dict>
</array>
<key>Extension Description</key>
<string>URLでリンクタグを作成</string>
<key>Extension Identifier</key>
<string>com.mac-ra.extension.makeLink</string>
<key>Extension Name</key>
<dict>
<key>en</key>
<string>makeLink</string>
</dict>
<key>Required Software Version</key>
<integer>693</integer>
</dict>
</plist>
これを保存して、PopClip を再起動すると、今度は URL のみに反応してくれるようになった。
まだ微妙に間違えているかもしれないが、それにしても意外に手軽に作れた。
アイディア次第で使い方は広がっていくのではないかと思う。
最近のコメント