Scrapbox を ブラウザで開いていてから「このページ sbe で開きたいなあ」ということがよくあります。
もともと sbe には URL をペーストして新規タブでページを開く機能はありますが、やはり手動はめんどくさいものです。
Electron にはシステムの URL Scheme で開かれるアプリとして自分自身を指定できる機能があります。
この機能と bookmarklet などを組み合わせるとやりたいことが実現できそうです。
アプリの main プロセスで、sbe:// の形式での URL が発行されたときに呼び出されるよう setAsDefaultProtocolClient("sbe")
のように指定した上で、open-url
イベントを受け取り URL を取り出してrenderer プロセスに通知する処理を追加。
: app.setAsDefaultProtocolClient("sbe"); : app.on("open-url", (event, url) => { mainWindow.webContents.send("openUrlScheme", url.replace("sbe://", "")); });
renderer プロセスでは指定 URL でページのタブを作成する処理を追加すれば良いはずです。
: ipcRenderer.on("openUrlScheme", (event, url) => { tabGroup.openUrl(url); }); :
ブラウザで URL の先頭に sbe://
を付けると確認ダイアログが出ます。
sbe.app を開く
を選択すると無事に sbe 側のタブが開きました。
Windows の場合は、アプリへのコマンドライン引数として入ってきますので、main プロセスで引数の解析をして sbe://
とマッチするパターンから URL を取り出すようにします。
ブラウザに、今見ているページを sbe で開くための下記のような bookmarklet を追加してみました。
javascript:(function(){location.href=`sbe://${window.top.location.href}`})();
一応、期待通りの動作をします。bookmarklet だとマウス操作が必要になってしまうので、ショートカットキーも登録できる Surfingkeys などの拡張を使うと便利です。
ということで、URL Scheme 対応版をリリース。このバージョンから配布形式がインストーラーになってます。