コンソールでモダンなウェブが閲覧できる Browsh を試す

最近HTML5, CSS3, JS, videoなども閲覧可能な端末上でブラウジング出来るBrowshというものを知りました．

Browsh

BrowshのバックエンドはFirefoxで，その画面を変換して表示しているようです．キーボード，マウスで操作できます．

Firefox -> VNC -> Browsh -> Termina/http

各種環境の単一のバイナリ(別途Firefoxが必要)や，docker imageが提供されています．arm版も用意されていますが，Firefox 57移行が必要なのでRaspberry PiのRaspbianではひと工夫要りそうです．

Downloads – Browsh
※checksumは何も書かれていないけどsha256でした．

また，sshで体験できるようにもなっています．まずはこれで体験してみるのがお手軽で良いと思います．

$ ssh brow.sh

しかし，今日試したところ混んでいるようで繋がりませんでした(◞‸◟)

All of Browsh's servers are currently busy. Please try again soon.

Shared connection to brow.sh closed.

導入

手元で試してみます．今回は Linux Static: x64 を試しました．ちなみにv1.2.3の時はうまく動作しませんでしたが，現在のv1.3.3では動作するようになりました :)

Panic runtime error invalid memory address or nil pointer [Debian x64] · Issue #73 · browsh-org/browsh

BroushにはFOrefox 57以降が必要です．もし導入していない場合はFirefoxを導入します．そして対応バイナリを入手してchecksumを確認，実行権を付与します．

$ sudo apt install firefox

$ wget https://github.com/browsh-org/browsh/releases/download/v1.3.3/browsh_1.3.3_linux_amd64 https://github.com/browsh-org/browsh/releases/download/v1.3.3/browsh_1.3.3_checksums.txt

$ sha256sum -c browsh_1.3.3_checksums.txt 2>/dev/null | grep -v 'FAILED open or read'

browsh_1.3.3_linux_amd64: OK

$ chmod u+x browsh_1.3.3_linux_amd64

実行(TTY)

端末上で実行します．ヘッドレスでFirefoxが起動してからBrowshが利用できるようになります．

$ ./browsh_1.3.3_linux_amd64

以下のショートカットとマウス操作が可能です．

キーボード・ショートカット
F1 : ドキュメント( https://www.brow.sh/docs/introduction/ )の表示
カーソルキー，PgUp/PgDn : 画面スクロール
CTRL+q : Browshの終了
CTRL+l : URLバーにフォーカス
BACKSPACE : 前の画面に移動
CTRL+r : ページ再読込
CTRL+t : 新しいタブ
CTRL+w : タブを閉じる
CTRL+TAB : 次のタブに移動
ALT+SHIFT+p : スクリーンショットの取得(動作しない?)
ALT+m : モノクロモードトルグ
ALT+u : ユーザエージェントデスクトップ，モバイル切り替え

マウス操作はリンククリックだけだと思います．リンククリックもキーボードで出来ると良いのですが今のところ出来ません．issueで上がっているので出来るようになるかもしれません，

Vim mode · Issue #31 · browsh-org/browsh

Feature request: link hinting · Issue #85 · browsh-org/browsh

escape key to open menu bar and some links-compatible key commands · Issue #119 · browsh-org/browsh

以下は手元で動かした時の表示例です．表示が崩れる場合は端末ソフトを変えるとましになったりします．
手元ではsakuraはしましまになってしまいました．以下のスクリーンショットはgnome-terminalのものです．

残念ながら現在日本語などのワイド文字には未対応です．Issueに上がっているのでそのうち直ると思います．

UTF-8 characters input broken · Issue #93 · browsh-org/browsh

Wide characters need to be CSS rendered as wide characters · Issue #25 · browsh-org/browsh

Many Chinese characters are not rendered, or appear with blurred background · Issue #24 · browsh-org/browsh

http-server機能を使う

-http-server オプションを使うとBrowshをhttp proxyのように他のウェブブラウザで表示結果を利用できます．この場合多少崩れますが日本語も表示できます．細い回線だけでなく古い機械のウェブブラウザや，性能の低いマシンでアクセスするのにも良さそうです．

$ ./browsh_1.3.3_linux_amd64 --help 2>&1 | grep http-server$ -A1

-http-server

Run as an HTTP service

$ ./browsh_1.3.3_linux_amd64 -http-server -http-server-bind 127.0.0.1

既定値では，4333ポートで利用できます．
http://127.0.0.1:4333/
任意のURLを開く場合はこのURLの後ろにアクセスしたいURLを付与します．
http://127.0.0.1:4333/https://duckduckgo.com/

Chromeでアクセス

w3mでアクセス

2011年発売のAndroid端末のAndroidブラウザでアクセス

ちょっと崩れるけどいい感じです :)
ただ，何故かGoogle+にアクセスするとBrowshのページになってしまいます(TTYだとOK)

テキストブラウザはelinksやw3mなどありますが，最近のリッチな環境には追従できていません(JavaScript機能の入ったw3mは以前あった)．フューチャーフォン時代はそちらのページを利用したりしていましたが最近はスマートフォン対応でそういったページも無くなってきています．ということでBroushのこれからに期待です．

余録

仕組みなどがやはり端末でリモートデスクトップが利用できるtexttopに似ているなと思ってGitHubにアクセスしてみるとBroushに転送されました．同じ人が作ったもので途中からBrowshに変わったようです．

tombh/texttop: A fully interactive X Linux desktop rendered in TTY and streamable over SSH

tombh/texttop – Docker Hub

Change ‘texttop’ refs to ‘browsh’ · browsh-org/browsh@ba373e9

環境

Browsh : Linux Static: x64 v1.3.3

$ lsb_release -d

Description:    Debian GNU/Linux unstable (sid)

$ uname -m

x86_64

$ dpkg-query -W firefox

firefox    61.0-2