🎃

yaziでepubをプレビューする

に公開

rangerが私の環境には重かったのでyaziに乗り換えた。
Google Driveをrcloneで、nfsでRaspbery Piをマウントしているのだけど、ストレスがない。

ただ、epubのプレビューができないのが私にはちょっと。
ということで作った。
ほぼGemini任せだけど。

https://github.com/t4k44/epr-preview.yazi

プレビュー領域にセットするのは ya.preview_widget(job, text:area(job.area):wrap(ui.Wrap.YES)) がポイントだった。
これを探し当てるまでに何時間かけたか....

YAZI_LOG=debug yazi で実行すると、 ya.dbg() の出力が ~/.local/state/yazi/yazi.log へ書き込まれる。

以下、最小限の実装サンプル。

main.lua
local M = {}

function M:peek(job)
    local output = Command("epr")
        :arg("-d")
        :arg(tostring(job.file.url))
        :stdout(Command.PIPED)
        :stderr(Command.PIPED)
        :output()

    if not output or not output.status.success then return end

    local text = ui.Text.parse(tostring(output.stdout))
    ya.preview_widget(job, text:area(job.area):wrap(ui.Wrap.YES))
end

function M:seek(job) end

return M

上記githubのは、これにページ送りや高速化が適用されてる。

eprとは

cliのepubリーダー

https://github.com/wustho/epr

目次がうまく表示されなかったりはするものの、ターミナルでepubをちょっと確認したいときなどに便利。上のyaziプラグインで使用しているように -d オプションでダンプ(平文出力)してくれる。

インストールは例のごとく uv tool install epr-reader で行けると思うのだけど、私は導入時期にはまだuvを使用していなかったので pipx install epr-reader でインストールしていた。

Discussion