Debian で EPUB ビューアの本文の箇所が真っ白

……と、検索画面の AI モードに聞いたら、ほんの 2,3のやり取りで以下の答に。以前ならこれにたどり着いて対処するまでにはかなり時間がかかっただろう。確かに便利にはなっている。

根本的な原因

  1. WebKitGTK の仕様変更:
    Debian 12 (Bookworm) 以降などで採用されている WebKitGTK 2.42 以降、パフォーマンス向上のために「DMA-BUF」という技術がデフォルトで有効になりました。
  2. ドライバとの相性:
    特に NVIDIA の独自ドライバ(Proprietary Driver)や、Intel/AMD の古いドライバ、または Wayland 環境下での実装の不備により、このデータ転送が正常に行われないバグが多くの Linux ディストリビューションで報告されています。

根本原因の詳細

NVIDIAのプロプライエタリ(独自)ドライバを使用している環境で、WebKitGTK(Foliateの描画エンジン)がGPUのメモリ管理機能(DMABUF)を正しくハンドリングできていないことが原因です。

X11環境下でも、WebKitGTK 2.42以降は「ハードウェア・アクセラレーション」を効率化しようとしますが、NVIDIAのドライバとの間で画像データの受け渡しが失敗し、中身がレンダリングされず(=真っ白)に終わってしまいます。

他のアプリで症状が出ないのは、ブラウザ(ChromeやFirefox)や多くのデスクトップアプリがWebKitGTKではなく、独自の描画エンジンや別のライブラリ(GTK3/4の標準描画など)を使っているためです。

今後の運用について

この問題は、WebKitGTK側かNVIDIAドライバ側のアップデートで修正されるまで続く可能性が高いです。そのため、以下のいずれかの方法で設定を固定しておくのが最も現実的です。

  1. システム全体に適用(確実)
    ~/.bashrc または ~/.profileexport WEBKIT_DISABLE_DMABUF_RENDERER=1 を追記する。
  2. Foliateのショートカットだけ修正
    /usr/share/applications/com.github.johnfactotum.Foliate.desktop をエディタで開き、Exec= の行を Exec=env WEBKIT_DISABLE_DMABUF_RENDERER=1 foliate %U に書き換える。(※アップデートで上書きされる可能性があります)