TabsFS でブラウザのタブをファイルシステムのように扱う

2 min read読了の目安(約2200字

こんにちは。

今回は、ちょっと面白いものを発見したのでそちらを紹介したいと思います。

その名も TabFS.

これ、まぁタイトルにも書いてありますがブラウザのタブをファイルシステムかのように扱うことができるようになる chrome/firefox の extension です。

いまいちピンときていないと思いますが、ファイルシステムのように扱えるということは、ディレクトリをいじるターミナルコマンドや script を同じように適用できる、ということです。

例えば、今開いてる全てのタブの名前を確認したり、

Stack Overflow とつくタブだけ全消ししたり、

まぁ、ターミナルでできるファイル処理は全て通用するので、できることは無限大でしょう。

特に便利なのは、ブラウザ extension を開発している際、 extension に変更を加える度リロードする必要があるのですが、こいつを使えば shell script で自動化可能なので、変更したら script を叩くだけ、と超効率的に開発ができるみたいですね。

しかも、開いているタブのテキストはそれぞれのファイルの中の text.txt に全て入っているので、全タブの全テキストを摘出して別ファイルに吐き出すことだってできちゃいます。

ちなみに、インストールなどをする前にこれは実験的なものであり(ファイルシステムとブラウザのコミュニケーションを可能にする荒技)、セキュリティー面とかは保証できないらしいので、やるなら自己責任で。

インストール方法

1. git clone https://github.com/osnr/TabFS.git

2. ブラウザに extension をインストール

  • chrome の場合
    developer mode をオンにして、extensions/ ディレクトリを load unpacked する。ここで ID をメモしておく

  • firefox の場合
    temporary extension としてインストールして、 Load Temporary Add-on...manifest.json を指定する

3. C filesystem のインストール

まず、 FUSE と FUSE headers がインストールされているのを確認。 Linux の場合は sudo apt install libfuse-dev、 macOS なら FUSE for macOS をインストールしよう。

4. C filesystem のコンパイル

$ cd TabFS/fs
$ mkdir mnt
$ make

なんか自分はこのまま make をすると

ld: library not found for -losxfuse

というエラーが出て、 makefile の

ifeq ($(shell uname -s),Darwin)
	CFLAGS = -I$(OSXFUSE_ROOT)/include/osxfuse/fuse -L$(OSXFUSE_ROOT)/lib -D_DARWIN_USE_64_BIT_INODE $(CFLAGS_EXTRA)
	LIBS = -losxfuse
endif

include/osxfuse/fuse -losxfuse を調べたら無くて代わりに fuse があったので osx を両方から消したら通りました

ルートディレクトリの ./install.sh を実行

先ほどメモった extension ID をこんな風に

./install.sh chrome jimpolemfaeckpjijgapgkmolankohgj

# or

./install.sh chromium jimpolemfaeckpjijgapgkmolankohgj

# firefox

./install.sh firefox

これで終わりです。あとは extensions 画面で TabsFS をリロードすると、あなたのブラウザのタブは fs/mnt にファイルとして置いてあるはずです。

なんかブラウザとコンピュータの壁が壊された感あってワクワクですね!また良い使い道があれば記事にしたいと思います!