軽量ウェブブラウザの Raphael を試す

最近のウェブブラウザはとてもリソース食いです．特にメモリ．いくらあっても足りません><

軽量ウェブブラウザもありますが，機能が足りず動かないサイトが多いです．

Dillo (最近reboot)

NetSurf

Midori(WebKit版)

:

Midori はWebKit版の頃は軽量だけど大抵のsite は動いていた記憶があります．しかしその後 Electron(Blink)ベース(Midori 10)，Firefox(Gekko)ベースの Floorp ベース(Midori 11) となり重量級に．
今回 Midori WebKit版時代からのフォークのRaphael を知ったので試してみました．

MidnightBSD/raphael: Raphael Web Browser

Raphael はデスクトップ向けBSD のMidnightBSD がメンテしているようです．

— MidnightBSD

Debian bookworm amd64 / Raspberry Pi OS bookworm armhf で build

とりあえず，手元の Debian bookworm amd64 / Raspberry Pi OS bookworm armhf で build しました．依存パッケージを入れたらさくっと通りました．

$ sudo apt install cmake valac libwebkit2gtk-4.0-dev libgcr-3-dev libpeas-dev \
libsqlite3-dev libjson-glib-dev libarchive-dev intltool libxml2-utils
$ wget -c https://github.com/MidnightBSD/raphael/archive/refs/tags/9.1.tar.gz
$ tar xf 9.1.tar.gz
$ cd raphael-9.1
$ mkdir _build && cd _build
$ cmake -DCMAKE_INSTALL_PREFIX=/usr/local ..
$ make
$ sudo make install

起動

普通に起動．

日本語も問題ありません

動画も再生できます

SNS なんかも

その他，いろいろなウェブサービスを試しましたがだいたい問題なかったです．しかし Zoom.us では「オーディオに接続中」のメッセージから進まず参加できませんでした．

メモリ消費量

Raphael くらいしか動かしてないのに RAM 減ってるなと htop 見ると WebKit* なプロセスが居ます．Raphael から 呼んでいるようです．

$ pstree -pTZ `pgrep raphael` | awk -F\( '{print $2}'| awk -F, '{print $1}' | xargs -I{} grep VmHWM /proc/{}/status | awk '{a+=$2} END{print a;}'
888836

WebKitは最近のウェブブラウザと違いタブ毎にプロセスが起動しないと思っていたのですが，WebKit 2.26 からタブ毎にプロセスが起動するようになったようです．
ちなみに環境変数 WEBKIT_USE_SINGLE_WEB_PROCESS=1 でプロセス増えないように出来ました．

For 2.26 you can set the env var WEBKIT_USE_SINGLE_WEB_PROCESS=1. This
is a temporary solution, only available in 2.26, to give apps more time
to adapt to the multiprocess model.

— Re: [webkit-gtk Deprecation of shared-secondary-process mode]

Add WEBKIT_USE_SINGLE_WEB_PROCESS environment variable to force single process model in all WebKitWebContext. This is a temporary solution for applications still depending on the single process mode behavior. It will be only available in 2.26 series.

— WebKitGTK 2.25.92 released! – The WebKitGTK Project

Webkit process limit

Since Webkit 2.26, the webkit engine used in luakit is creating a new process for each tab. This has the benefit that a webkit webview crash will only crash one tab. The downside is lower performance and increased memory use.

If you value speed over stability, you can ask webkit to use one process for all tabs by setting WEBKIT_USE_SINGLE_WEB_PROCESS before starting luakit:

$ export WEBKIT_USE_SINGLE_WEB_PROCESS=1

— Webkit process limit
luakit/README.md at develop · luakit/luakit

WEBKIT_USE_SINGLE_WEB_PROCESS=1 で昔のようにプロセス増えないようにできましたが1タブしか開いてなくても 800MB〜1GB くらいは消費してしまう感じです．思ったより消費します……．

拡張機能

Raphael にはいくつかの拡張機能が組み込まれていて，設定から確認ができます．

いつも Firefox や Chromium で沢山の拡張機能を使っていると足りなく感じます．拡張機能を追加するにはちゃんと調べていませんが恐らくビルド時に組み込まないといけなさそう?
パスワードマネージャがほしいとこです．

ちなみに Raphael の拡張機能はVala で書かれているようです．

類似ウェブブラウザ

WebKitベースの類似ウェブブラウザです．

Luakit Web Browser

qutebrowser | qutebrowser

どちらもDebian packageがあるのでこれらのほうがお手軽に試せるのでいいかもしれません．