Chrome ExtensionをSafariで使う
SafariにGyazo公式の拡張が無いので、ずっと欲しいと思っていた
自分で作るしかないか、と思ってSafari拡張の作り方を調べ始めたところ、Chrome ExtensionをSafari用にConvertできるらしいことがわかった
しかも別に自分で作った拡張である必要もない
試しにやってみたらちゃんと動いて最高になった
なおmacの話です
以下コマンドで変換できる
$ xcrun safari-web-extension-converter /path/to/extension
/path/to/extensionはChromeだったら~/Library/Application Support/Google Chrome/Default/Extensions/にある(らしい)
僕はChromeを入れておらずVivaldiを使っていたので以下のようなパスにあった
~/Library/Application\ Support/Vivaldi/Default/Extensions/ffdaeeijbbijklfcpahbghahojgfgebo/3.2.4_0
後半のffdae~以降は拡張のIDらしい。
多分Googleが振ってる拡張ごとのIDっぽいからGyazoの拡張はみんなこのIDだと思うけど、拡張機能の管理画面からそれぞれのIDは確認できるっぽい
ref. https://www.malwarefox.com/chrome-extensions-storage/
僕は適当に中身のmanifest.jsonとか画像を見て、Gyazoアイコンのやつを見つけた
というわけで僕が打ったコマンドとしては以下
$ xcrun safari-web-extension-converter ~/Library/Application\ Support/Vivaldi/Default/Extensions/ffdaeeijbbijklfcpahbghahojgfgebo/3.2.4_0
上のコマンドによってXcodeのプロジェクトに変換されてXcodeが立ち上がる
再生ボタン的なのをクリックしてビルドしよう
Gyazoの場合、iOSのExtensionとかも同じワークスペースにあるようで、そっちをRunしちゃうとiOSのシミュレーターが動き始めたりする。MacのやつをRunしよう。
というかmobile safariでも使えるのだろうかと思って後で試してみたけどこっちはよくわからんかった
実機に移すのは証明書周りでちょっと引っかかったのでシミュレーターでやってみて、インストールまではできたし権限も付与できたっぽいけど画像が選択できるわけでも範囲選択ができるわけでもなくうまくいかなかった
ちゃんとビルド成功してRunできるとこういうのが出てくる、これはQuit and~をクリックしてヨシ
https://gyazo.com/c511308004d1e72853600abc3a022ed6
Safariの「開発」メニューから「未署名の拡張機能を許可」してなかったら、する
なんならその前に「開発」メニューを表示してなかったら、する
拡張機能にGyazoがあるはずなので有効にする
ツールバーにGyazoアイコンがあるはずだが、権限が無い感じになってるので、クリックして良いように許可してやる
SafariからGyazo拡張が使えて最高になる
が、未署名のままだとSafariを立ち上げ直すたびに未署名の拡張機能を許可して設定からGyazo拡張を有効にしてあげる必要がある
XcodeのSigning & Capabilitiesで各TargetのTeamを自分のものにしてSigning CertificateをDevelopmentにすることで署名を変更できる
再度再生ボタンでビルドし、インストールし直すと最高の最高になる
ref.
https://developer.apple.com/documentation/safariservices/safari_web_extensions/converting_a_web_extension_for_safari
https://qiita.com/shikumiya_hata/items/d2d46543e51e8a9374e8
なんか更に↑だけだとできなくなってて、ChatGPTに聞きながら追加で以下もやった
$ pluginkit -a "/Users/zakuni/Library/Developer/Xcode/DerivedData/Gyazo_-_Share_new_screenshots._Instantly.-ebavxbcxgerhmzefykkunlpunapy/Build/Products/Debug/Gyazo - Share new screenshots. Instantly..app/Contents/PlugIns/Gyazo - Share new screenshots. Instantly. Extension.appex"
$ pluginkit -e use -i com.yourCompany.Gyazo---Share-new-screenshots--Instantly-.Extension