From 589c03f4ecd2b3d515308c140fdd38e7eeea7752 Mon Sep 17 00:00:00 2001 From: JMARyA Date: Wed, 13 Mar 2024 16:21:09 +0100 Subject: [PATCH] add viu --- .config/yazi/plugins/viu.yazi/init.lua | 64 ++++++++++++++++++++++++++ .config/yazi/yazi.toml | 2 +- 2 files changed, 65 insertions(+), 1 deletion(-) create mode 100644 .config/yazi/plugins/viu.yazi/init.lua diff --git a/.config/yazi/plugins/viu.yazi/init.lua b/.config/yazi/plugins/viu.yazi/init.lua new file mode 100644 index 0000000..bf46f9e --- /dev/null +++ b/.config/yazi/plugins/viu.yazi/init.lua @@ -0,0 +1,64 @@ +local M = {} + +function M:peek() + local child = Command("viu") + :args({ + "--width", + tostring(self.area.w), + tostring(self.file.url), + }) + :stdout(Command.PIPED) + :stderr(Command.PIPED) + :spawn() + + if not child then + return self:fallback_to_builtin() + end + + local limit = self.area.h + local i, lines = 0, "" + repeat + local next, event = child:read_line() + if event == 1 then + return self:fallback_to_builtin() + elseif event ~= 0 then + break + end + + i = i + 1 + if i > self.skip then + lines = lines .. next + end + until i >= self.skip + limit + + child:start_kill() + if self.skip > 0 and i < self.skip + limit then + ya.manager_emit( + "peek", + { tostring(math.max(0, i - limit)), only_if = tostring(self.file.url), upper_bound = "" } + ) + else + lines = lines:gsub("\t", string.rep(" ", PREVIEW.tab_size)) + ya.preview_widgets(self, { ui.Paragraph.parse(self.area, lines) }) + end +end + +function M:seek(units) + local h = cx.active.current.hovered + if h and h.url == self.file.url then + local step = math.floor(units * self.area.h / 10) + ya.manager_emit("peek", { + tostring(math.max(0, cx.active.preview.skip + step)), + only_if = tostring(self.file.url), + }) + end +end + +function M:fallback_to_builtin() + local _, bound = ya.preview_code(self) + if bound then + ya.manager_emit("peek", { tostring(bound), only_if = tostring(self.file.url), upper_bound = "" }) + end +end + +return M \ No newline at end of file diff --git a/.config/yazi/yazi.toml b/.config/yazi/yazi.toml index 654ac03..d360236 100644 --- a/.config/yazi/yazi.toml +++ b/.config/yazi/yazi.toml @@ -92,7 +92,7 @@ previewers = [ { mime = "application/json", exec = "json" }, # Image { mime = "image/vnd.djvu", exec = "noop" }, - { mime = "image/*", exec = "image" }, + { mime = "image/*", exec = "viu" }, # Video { mime = "video/*", exec = "video" }, # PDF