ターミナルグラフィックウェブブラウザのterminal-browser

先日，ターミナルグラフィックウェブブラウザのBrow6elを知って試しています．

ターミナルグラフックウェブブラウザのbrow6el – matoken’s blog

グラフックターミナルウェブブラウザのBrow6elをリモートVPSで実行 – matoken’s blog

このとき似ているterminal-browserも知ったのですが，macOS専用でした．

terminal-browser

zenbu-labs/terminal-browser: A browser inside your terminal

その後，v0.5.0でLinuxにも対応したので試してみました．

Release v0.5.0 · zenbu-labs/terminal-browser

Adds support for linux

導入

公式ではcurl | bash が紹介されていますが，これは嫌いなので手動で導入します．
現時点ではmacOS arm64，Linux adm64, Linux arm64のバイナリアーカイブが用意されています．これをダウンロードして展開します．

ダウンロード

$ wget -c https://github.com/zenbu-labs/terminal-browser/releases/latest/download/terminal-browser-linux-x64.tar.gz

ハッシュとファイルサイズの確認

$ sha256sum terminal-browser-linux-x64.tar.gz (1)
7c2375593623a12109615eca94ceaeece6a6193c4cc955ba159215f0f6c09ff7 terminal-browser-linux-x64.tar.gz
$ wc -c terminal-browser-linux-x64.tar.gz (2)
137362872 terminal-browser-linux-x64.tar.gz
$ curl -s https://terminal-browser.sh/install | grep terminal-browser-linux-x64.tar.gz (3)
linux-x64 https://terminal-browser.sh/install/dl/stable/v0.6.0/terminal-browser-linux-x64.tar.gz 7c2375593623a12109615eca94ceaeece6a6193c4cc955ba159215f0f6c09ff7 137362872"

sha256sumの確認

ファイルサイズの確認

sha256sumとファイルサイズはinstall scriptの上の方にある

アーカイブの展開

$ fuse-archive terminal-browser-linux-x64.tar.gz
fuse-archive: Created mount point 'terminal-browser-linux-x64'

terminal-browserの実行環境

terminal-browserはSixelに対応しておらず，Kittyに対応しています．Kittyに対応したターミナルエミュレータを使う必要があります．
今回はKitty Graphicの元となっているKittyを選びました．

kitty

Tip

Kitty terminalで日本語入力を行いたい場合環境変数 GLFW_IM_MODULE=ibus が必要です．これは Fcitx 5 を利用する場合でも ibus と設定するようです．

ちなみにKittyグラフックプロトコル非対応な端末でterminal-browserを実行するとGhosttyをお薦めされます．こだわりなどなければGhosttyが無難かもしれません．

This terminal cannot show images, which terminal-browser needs.

We recommend Ghostty:
https://ghostty.org/download

Note: any terminal that supports the kitty graphics protocol is supported

terminal-browserの実行

引数なしで起動したり，

$ ./terminal-browser-linux-x64/terminal-browser/bin/terminal-browser

urlを指定して開いたりいくつかのコマンドラインオプションやコマンドもあります．

$ ~/Downloads/terminal-browser-linux-x64/terminal-browser/bin/terminal-browser --help
Usage: terminal-browser [url] [options]
terminal-browser <command> [args]

open Open the browser in a terminal pane
ls List running browsers and their tabs
setup Configure installed terminals so terminal-browser works best
upgrade Upgrade to the latest release
new-tab Open a tab here, and a browser too if there is none
shutdown Stop the daemon
action Use the open browser through the agent-browser CLI

terminal-browser <command> --help for one command's options
terminal-browser --version prints the installed version

操作はショートカットキーが用意されていたりしますがほぼマウス操作で済む感じです．

Note

この記事を書いていて気づきましたが，タブ上のタイトルやアドレスバーのサジェストなどの日本語が豆腐になってしまいますね……．以下のissueによると中国語は本文も豆腐になるようです．

Can’t display Chinese characters · Issue #69 · zenbu-labs/terminal-browser

ssh経由でリモート起動

VPSにもterminal-browserをダウンロードしてssh経由で利用してみます．

$ ssh ${user}@${remote}
$ wget -c https://github.com/zenbu-labs/terminal-browser/releases/latest/download/terminal-browser-linux-x64.tar.gz
$ wc -c terminal-browser-linux-x64.tar.gz
137362872 terminal-browser-linux-x64.tar.gz
$ sha256sum terminal-browser-linux-x64.tar.gz
7264ca86fd0b5f5ad597e0fe5517da7a67e7079633151067c51f13238ee0cc45 terminal-browser-linux-x64.tar.gz
$ tar tvzf terminal-browser-linux-x64.tar.gz
$ tar xzf terminal-browser-linux-x64.tar.gz
$ ./terminal-browser/bin/terminal-browser

v0.5.0時点では動作が妙に重くなったりすることがありましたが，現在の最新版のv0.6.0では問題なく動いていそうです．

sshモード

v0.6.0 でsshモードが付きました．
このsshモードはssh経由でリモートサーバーに接続して利用するのですが，Chromiumはローカルで動作してChromiumが要求した通信をリモートから取得します．
--ssh ${user}@${remote} のように指定しますが， ~/.ssh/config を見てくれるようなので助かります．ポートや鍵を指定したい場合はこれで設定すれば良さそうです．

$ ~/terminal-browser-linux-x64/terminal-browser/bin/terminal-browser --ssh ${user}@${remote}

ローカルからリモートにデータを取りに行くのでローカルで動かすのと同じくらいの通信速度です．(fast.comではupが数倍に見える?)
使いどころがあまり思いつきませんが，VPN的な使い方がいいのかな?

Note

VS Codeをターミナルで利用するterminal-codeというツールがあるのですが，このツールも同時にsshモードに対応して既視感があるなと思ってよく見ると同じ作者でした．ちなみにこのツールはterminal-browser内蔵でjsを呼んでいるようです．試してみようと思いましたがpathが固定で面倒で諦めちゃいました．

zenbu-labs/terminal-code: VS Code in the terminal

Zellij経由での利用

先週あたりにリリースされたターミナルワークスペースのZellij v0.45.0でちょうどKitty Graphics Protocolに対応していたのでちょっと試してみます．

Release Release v0.45.0 · zellij-org/zellij

うまく表示されることもあれば動かないことも?kitten icatでの画像表示でも同様．挙動がまだよくわかりません．ZellijはKittyに対応したばかりなのでバグかも?

Brow6elとの比較

Brow6elはAppImageがあったりSixel/Kitty両対応，カスタマイズもしやすい感じです．
対してterminal-browserはChromiumを使っているのでWeb互換性が高く操作もマウスで大体okなので学習コストも低く感じます．

用途により使い分けでしょうか．

環境

$ ./terminal-browser-linux-x64/terminal-browser/bin/terminal-browser --version
terminal-browser v0.6.0
$ dpkg-query -W kitty
kitty 0.48.2-1
$ lsb_release -dr
Description: Debian GNU/Linux forky/sid
Release: n/a
$ arch
x86_64