ブラウザのタブをファイルシステムとして扱えるChrome・Firefox拡張機能「TabFS」レビュー
ブラウザのタブをファイルシステム上で扱えるようにするChrome・Firefox拡張機能が「TabFS」です。TabFSを使うと、ディレクトリを消去することでブラウザのタブを閉じたり、ページのDOMを操作したりすることが可能とのことなので、実際に使ってどんな感じでタブを操作できるのかを確かめてみました。
TabFS
https://omar.website/tabfs/
GitHub - osnr/TabFS: Mount your browser tabs as a filesystem.
https://github.com/osnr/TabFS
TabFSはmacOSとLinuxで利用することが可能。今回はUbuntu 20.04でTabFSを試してみます。まずはChromeで「chrome://extensions」にアクセスし、「デベロッパーモード」がオンになっていることを確認しておきます。
ターミナルで以下のコマンドを実行し、TabFSのビルドに必要なライブラリをインストールしておきます。
sudo apt install libfuse-dev
続いて以下のコマンドで、TabFSのソースコードをダウンロード。
git clone https://github.com/osnr/TabFS.git
ダウンロードしたソースコードのディレクトリをファイラーで開き、「extensions」ディレクトリをChromeの画面にドラッグ&ドロップして、拡張機能をインストールします。
拡張機能のインストール後、「ID」の部分に表示されている文字列を控えておきます。
以後の作業は再びターミナル上で行います。タブをファイルシステムとしてマウントするディレクトリを作成し、TabFSをビルド。
cd fs mkdir mnt make
引数に「ブラウザ名」と「ID」を指定し、インストールスクリプトを実行します。
./install.sh chrome 先ほど控えたID
Chromeの拡張機能画面で「更新」をクリックすると……
「mnt」ディレクトリ配下にファイルシステムがマウントされます。
画像のようにChromeでタブを開いてみると……
「mnt/by-titles」配下に、タブのタイトル名とIDを名称に持つシンボリックリンクが作成されていました。シンボリックリンクのリンク先は「mnt/by-id」配下のタブIDを名称に持つディレクトリとなっています。また、日本語タイトルのタブは名称が正しく表示されず「_」に変換されてしまっています。
ディレクトリ内の「url.txt」にはURLが、「title.txt」にはタブのタイトル名が、「text.txt」にはページの内容が記録されています。
「タブをファイルシステム上で扱う」を実感するため、「mnt/by-id/ID」配下の「title.txt」をすべてのタブを対象にcatコマンドで表示してみるとこんな感じ。
「『YouTube』をタイトル名に持つタブをすべて閉じたい場合は、以下のようにタブのディレクトリを削除してしまえばOK。
rm ./by-title/*YouTube*
こんな感じで「YouTube」タブを閉じることができました。「mnt/by-id」配下のディレクトリを消しても同様の結果を得られます。
タブに相当するディレクトリ内の「control」ファイルに「reload」という文字列を出力すれば、タブをリロードすることができます。また「remove」という文字列を出力すると、タブを閉じることが可能です。
echo reload | tee ./by-title/TabFS*/control
TabFSでは、タブに相当するディレクトリ内の「execute-script」にJavaScriptのコードを出力し、DOMの要素を操作することもできます。例えば画像のようなHTMLを用意して……
以下のコマンドを実行。
echo 'document.querySelector("h1").style.backgroundColor="red"' > ./タグID/execute-script
見出しの背景色が青色から赤色に変わりました。
他にもJSONなどのデータ読み込みやYouTubeで再生している曲のタイトル取得などもできるとのことです。
・関連記事
ウェブサイトの情報を自動で取得する「ウェブスクレイピング」をJavaScriptで行う方法 - GIGAZINE
ウェブサイトが表示されるまでにブラウザはどういった仕事を行っているのか? - GIGAZINE
ブラウザはどのようにコンテンツをレンダリングしているのか? - GIGAZINE
Linuxのファイルシステム「Btrfs」を5年間使用した記録 - GIGAZINE
JavaScriptでGPUを簡単に扱えるライブラリ「GPU.js」レビュー、並列処理で多次元の演算が爆速に - GIGAZINE
ブラウザ上で動画生成や変換ができるWebAssembly版FFmpeg「ffmpeg.wasm」レビュー - GIGAZINE
・関連コンテンツ