Compare commits
10 commits
fa3a6340cc
...
71ac4ef6b4
Author | SHA1 | Date | |
---|---|---|---|
71ac4ef6b4 | |||
b70d88c06f | |||
f02ef3f9ca | |||
589c03f4ec | |||
30666dca52 | |||
96d794798f | |||
04e857d96e | |||
ad286ec3f7 | |||
3dee11eca6 | |||
7ee19657e5 |
16 changed files with 1067 additions and 0 deletions
52
.config/dunst/dunstrc
Executable file
52
.config/dunst/dunstrc
Executable file
|
@ -0,0 +1,52 @@
|
||||||
|
[global]
|
||||||
|
follow = mouse
|
||||||
|
indicate_hidden = yes
|
||||||
|
offset = 10x10
|
||||||
|
notification_height = 0
|
||||||
|
|
||||||
|
separator_height = 2
|
||||||
|
|
||||||
|
padding = 8
|
||||||
|
horizontal_padding = 8
|
||||||
|
text_icon_padding = 0
|
||||||
|
frame_width = 2
|
||||||
|
|
||||||
|
frame_color = "#351c75"
|
||||||
|
separator_color = frame
|
||||||
|
|
||||||
|
sort = yes
|
||||||
|
idle_threshold = 120
|
||||||
|
font = monospace 10
|
||||||
|
line_height = 0
|
||||||
|
markup = full
|
||||||
|
alignment = left
|
||||||
|
vertical_alignment = center
|
||||||
|
show_age_threshold = 60
|
||||||
|
word_wrap = yes
|
||||||
|
stack_duplicates = true
|
||||||
|
hide_duplicate_count = false
|
||||||
|
|
||||||
|
show_indicators = yes
|
||||||
|
|
||||||
|
min_icon_size = 0
|
||||||
|
max_icon_size = 64
|
||||||
|
|
||||||
|
browser = /usr/bin/firefox --new-tab
|
||||||
|
|
||||||
|
title = Dunst
|
||||||
|
class = Dunst
|
||||||
|
|
||||||
|
corner_radius = 10
|
||||||
|
timeout = 5
|
||||||
|
[urgency_low]
|
||||||
|
background = "#1E1E2E"
|
||||||
|
foreground = "#CDD6F4"
|
||||||
|
|
||||||
|
[urgency_normal]
|
||||||
|
background = "#1E1E2E"
|
||||||
|
foreground = "#CDD6F4"
|
||||||
|
|
||||||
|
[urgency_critical]
|
||||||
|
background = "#1E1E2E"
|
||||||
|
foreground = "#CDD6F4"
|
||||||
|
frame_color = "#cc0000"
|
5
.config/mpv/input.conf
Normal file
5
.config/mpv/input.conf
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
# decrease the playback speed
|
||||||
|
s multiply speed 1/1.1
|
||||||
|
|
||||||
|
# increase the playback speed
|
||||||
|
d multiply speed 1.1
|
9
.config/mpv/mpv.conf
Normal file
9
.config/mpv/mpv.conf
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
alang=de,en,es,ja
|
||||||
|
|
||||||
|
auto-window-resize=no
|
||||||
|
autofit=100%
|
||||||
|
|
||||||
|
[youtube]
|
||||||
|
profile-cond=path:find('youtu%.?be')
|
||||||
|
speed=2.0
|
||||||
|
ytdl-format=bestvideo[height<=1440]+bestaudio/best
|
29
.config/mpv/scripts/hydra-auth.lua
Normal file
29
.config/mpv/scripts/hydra-auth.lua
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
local utils = require("mp.utils")
|
||||||
|
|
||||||
|
function getKey(table, key)
|
||||||
|
for _, item in ipairs(table) do
|
||||||
|
local k, v = item:match("([^=]+)=(.+)")
|
||||||
|
if k == key then
|
||||||
|
return v
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return nil -- Key not found
|
||||||
|
end
|
||||||
|
|
||||||
|
function auth()
|
||||||
|
local url = mp.get_property("stream-open-filename")
|
||||||
|
if url:find("files.hydrar.de") then
|
||||||
|
local env = utils.get_env_list()
|
||||||
|
local auth = getKey(env, "FILES_AUTH")
|
||||||
|
if auth == nil then
|
||||||
|
auth = mp.get_opt("FILES_AUTH")
|
||||||
|
end
|
||||||
|
if auth ~= nil then
|
||||||
|
mp.set_property("http-header-fields", "Authorization: Basic " .. auth)
|
||||||
|
else
|
||||||
|
print("Authorization value not found.")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
mp.register_event("start-file", auth)
|
58
.config/ripgrep-all/config.jsonc
Normal file
58
.config/ripgrep-all/config.jsonc
Normal file
|
@ -0,0 +1,58 @@
|
||||||
|
{
|
||||||
|
"custom_adapters": [
|
||||||
|
{
|
||||||
|
"name": "tesseract",
|
||||||
|
"version": 1,
|
||||||
|
"description": "Uses Tesseract OCR to recognize text in image files",
|
||||||
|
"extensions": [
|
||||||
|
"jpg",
|
||||||
|
"jpeg",
|
||||||
|
"jpe",
|
||||||
|
"png",
|
||||||
|
"webp",
|
||||||
|
"gif",
|
||||||
|
"tif",
|
||||||
|
"tiff",
|
||||||
|
"jp2",
|
||||||
|
"j2k",
|
||||||
|
"jpf",
|
||||||
|
"jpm",
|
||||||
|
"jpg2",
|
||||||
|
"jpg2000",
|
||||||
|
"jpeg2000",
|
||||||
|
"j2c",
|
||||||
|
"jpc",
|
||||||
|
"jpx",
|
||||||
|
"bmp",
|
||||||
|
"pnm"
|
||||||
|
],
|
||||||
|
"mimetypes": [
|
||||||
|
"image/jpeg",
|
||||||
|
"image/png",
|
||||||
|
"image/webp",
|
||||||
|
"image/gif",
|
||||||
|
"image/tiff",
|
||||||
|
"image/jp2",
|
||||||
|
"image/jpx",
|
||||||
|
"image/jpm",
|
||||||
|
"image/bmp",
|
||||||
|
"image/x-portable-anymap"
|
||||||
|
],
|
||||||
|
"binary": "tesseract",
|
||||||
|
"args": ["--psm", "1", "-", "-"],
|
||||||
|
"disabled_by_default": false,
|
||||||
|
"match_only_by_mime": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"args": [],
|
||||||
|
"binary": "gron",
|
||||||
|
"description": "Transform JSON into discrete JS assignments",
|
||||||
|
"disabled_by_default": false,
|
||||||
|
"extensions": ["json", "jsonc"],
|
||||||
|
"match_only_by_mime": false,
|
||||||
|
"mimetypes": ["application/json"],
|
||||||
|
"name": "gron",
|
||||||
|
"version": 1
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
77
.config/yazi/init.lua
Normal file
77
.config/yazi/init.lua
Normal file
|
@ -0,0 +1,77 @@
|
||||||
|
-- Full Border
|
||||||
|
|
||||||
|
function Manager:render(area)
|
||||||
|
local chunks = self:layout(area)
|
||||||
|
|
||||||
|
local bar = function(c, x, y)
|
||||||
|
x, y = math.max(0, x), math.max(0, y)
|
||||||
|
return ui.Bar(ui.Rect { x = x, y = y, w = ya.clamp(0, area.w - x, 1), h = math.min(1, area.h) }, ui.Bar.TOP):symbol(c)
|
||||||
|
end
|
||||||
|
|
||||||
|
return ya.flat {
|
||||||
|
-- Borders
|
||||||
|
ui.Border(area, ui.Border.ALL):type(ui.Border.ROUNDED),
|
||||||
|
ui.Bar(chunks[1], ui.Bar.RIGHT),
|
||||||
|
ui.Bar(chunks[3], ui.Bar.LEFT),
|
||||||
|
|
||||||
|
bar("┬", chunks[1].right - 1, chunks[1].y),
|
||||||
|
bar("┴", chunks[1].right - 1, chunks[1].bottom - 1),
|
||||||
|
bar("┬", chunks[2].right, chunks[2].y),
|
||||||
|
bar("┴", chunks[2].right, chunks[1].bottom - 1),
|
||||||
|
|
||||||
|
-- Parent
|
||||||
|
Parent:render(chunks[1]:padding(ui.Padding.xy(1))),
|
||||||
|
-- Current
|
||||||
|
Current:render(chunks[2]:padding(ui.Padding.y(1))),
|
||||||
|
-- Preview
|
||||||
|
Preview:render(chunks[3]:padding(ui.Padding.xy(1))),
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Show owner in status bar
|
||||||
|
|
||||||
|
function Status:owner()
|
||||||
|
local h = cx.active.current.hovered
|
||||||
|
if h == nil or ya.target_family() ~= "unix" then
|
||||||
|
return ui.Line {}
|
||||||
|
end
|
||||||
|
|
||||||
|
return ui.Line {
|
||||||
|
ui.Span(ya.user_name(h.cha.uid) or tostring(h.cha.uid)):fg("magenta"),
|
||||||
|
ui.Span(":"),
|
||||||
|
ui.Span(ya.group_name(h.cha.gid) or tostring(h.cha.gid)):fg("magenta"),
|
||||||
|
ui.Span(" "),
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
function Status:render(area)
|
||||||
|
self.area = area
|
||||||
|
|
||||||
|
local left = ui.Line { self:mode(), self:size(), self:name() }
|
||||||
|
local right = ui.Line { self:owner(), self:permissions(), self:percentage(), self:position() }
|
||||||
|
return {
|
||||||
|
ui.Paragraph(area, { left }),
|
||||||
|
ui.Paragraph(area, { right }):align(ui.Paragraph.RIGHT),
|
||||||
|
table.unpack(Progress:render(area, right:width())),
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Show hostname in header
|
||||||
|
|
||||||
|
function Header:host()
|
||||||
|
if ya.target_family() ~= "unix" then
|
||||||
|
return ui.Line {}
|
||||||
|
end
|
||||||
|
return ui.Span(ya.user_name() .. "@" .. ya.host_name() .. ":"):fg("blue")
|
||||||
|
end
|
||||||
|
|
||||||
|
function Header:render(area)
|
||||||
|
self.area = area
|
||||||
|
|
||||||
|
local right = ui.Line { self:count(), self:tabs() }
|
||||||
|
local left = ui.Line { self:host(), self:cwd(math.max(0, area.w - right:width())) }
|
||||||
|
return {
|
||||||
|
ui.Paragraph(area, { left }),
|
||||||
|
ui.Paragraph(area, { right }):align(ui.Paragraph.RIGHT),
|
||||||
|
}
|
||||||
|
end
|
19
.config/yazi/keymap.toml
Normal file
19
.config/yazi/keymap.toml
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
[[input.prepend_keymap]]
|
||||||
|
on = [ "<Esc>" ]
|
||||||
|
run = "close"
|
||||||
|
desc = "Cancel input"
|
||||||
|
|
||||||
|
[[manager.prepend_keymap]]
|
||||||
|
on = [ "<C-s>" ]
|
||||||
|
run = 'shell "$SHELL" --block --confirm'
|
||||||
|
desc = "Open shell here"
|
||||||
|
|
||||||
|
[[manager.prepend_keymap]]
|
||||||
|
on = [ "l" ]
|
||||||
|
run = "plugin --sync smart-enter"
|
||||||
|
desc = "Enter the child directory, or open the file"
|
||||||
|
|
||||||
|
[[manager.prepend_keymap]]
|
||||||
|
on = [ "<Enter>" ]
|
||||||
|
run = "plugin --sync smart-enter"
|
||||||
|
desc = "Enter the child directory, or open the file"
|
64
.config/yazi/plugins/7z.yazi/init.lua
Normal file
64
.config/yazi/plugins/7z.yazi/init.lua
Normal file
|
@ -0,0 +1,64 @@
|
||||||
|
local M = {}
|
||||||
|
|
||||||
|
function M:peek()
|
||||||
|
local child = Command("7z")
|
||||||
|
:args({
|
||||||
|
"l",
|
||||||
|
"-ba",
|
||||||
|
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
|
66
.config/yazi/plugins/glow.yazi/init.lua
Normal file
66
.config/yazi/plugins/glow.yazi/init.lua
Normal file
|
@ -0,0 +1,66 @@
|
||||||
|
local M = {}
|
||||||
|
|
||||||
|
function M:peek()
|
||||||
|
local child = Command("glow")
|
||||||
|
:args({
|
||||||
|
"--style",
|
||||||
|
"dark",
|
||||||
|
"--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
|
57
.config/yazi/plugins/hexyl.yazi/init.lua
Normal file
57
.config/yazi/plugins/hexyl.yazi/init.lua
Normal file
|
@ -0,0 +1,57 @@
|
||||||
|
local M = {}
|
||||||
|
|
||||||
|
function M:peek()
|
||||||
|
local child = Command("hexyl")
|
||||||
|
:args({
|
||||||
|
"--border",
|
||||||
|
"none",
|
||||||
|
"-n",
|
||||||
|
"4092",
|
||||||
|
"--terminal-width",
|
||||||
|
tostring(self.area.w),
|
||||||
|
tostring(self.file.url),
|
||||||
|
})
|
||||||
|
:stdout(Command.PIPED)
|
||||||
|
:stderr(Command.PIPED)
|
||||||
|
:spawn()
|
||||||
|
|
||||||
|
local limit = self.area.h
|
||||||
|
local i, lines = 0, ""
|
||||||
|
repeat
|
||||||
|
local next, event = child:read_line()
|
||||||
|
if event == 1 then
|
||||||
|
ya.err(tostring(event))
|
||||||
|
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
|
||||||
|
|
||||||
|
return M
|
67
.config/yazi/plugins/imdl.yazi/init.lua
Normal file
67
.config/yazi/plugins/imdl.yazi/init.lua
Normal file
|
@ -0,0 +1,67 @@
|
||||||
|
local M = {}
|
||||||
|
|
||||||
|
function M:peek()
|
||||||
|
local child = Command("imdl")
|
||||||
|
:args({
|
||||||
|
"--color",
|
||||||
|
"always",
|
||||||
|
"-t",
|
||||||
|
"torrent",
|
||||||
|
"show",
|
||||||
|
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
|
63
.config/yazi/plugins/pdf2text.yazi/init.lua
Normal file
63
.config/yazi/plugins/pdf2text.yazi/init.lua
Normal file
|
@ -0,0 +1,63 @@
|
||||||
|
local M = {}
|
||||||
|
|
||||||
|
function M:peek()
|
||||||
|
local child = Command("pdftotext")
|
||||||
|
:args({
|
||||||
|
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
|
6
.config/yazi/plugins/smart-enter.yazi/init.lua
Normal file
6
.config/yazi/plugins/smart-enter.yazi/init.lua
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
return {
|
||||||
|
entry = function()
|
||||||
|
local h = cx.active.current.hovered
|
||||||
|
ya.manager_emit(h and h.cha.is_dir and "enter" or "open", {})
|
||||||
|
end,
|
||||||
|
}
|
64
.config/yazi/plugins/viu.yazi/init.lua
Normal file
64
.config/yazi/plugins/viu.yazi/init.lua
Normal file
|
@ -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
|
307
.config/yazi/theme.toml
Normal file
307
.config/yazi/theme.toml
Normal file
|
@ -0,0 +1,307 @@
|
||||||
|
[manager]
|
||||||
|
cwd = { fg = "cyan" }
|
||||||
|
|
||||||
|
# Hovered
|
||||||
|
hovered = { fg = "black", bg = "lightblue" }
|
||||||
|
preview_hovered = { underline = true }
|
||||||
|
|
||||||
|
# Find
|
||||||
|
find_keyword = { fg = "yellow", italic = true }
|
||||||
|
find_position = { fg = "magenta", bg = "reset", italic = true }
|
||||||
|
|
||||||
|
# Marker
|
||||||
|
marker_selected = { fg = "lightgreen", bg = "lightgreen" }
|
||||||
|
marker_copied = { fg = "lightyellow", bg = "lightyellow" }
|
||||||
|
marker_cut = { fg = "lightred", bg = "lightred" }
|
||||||
|
|
||||||
|
# Tab
|
||||||
|
tab_active = { fg = "black", bg = "lightblue" }
|
||||||
|
tab_inactive = { fg = "white", bg = "darkgray" }
|
||||||
|
tab_width = 1
|
||||||
|
|
||||||
|
# Border
|
||||||
|
border_symbol = "│"
|
||||||
|
border_style = { fg = "gray" }
|
||||||
|
|
||||||
|
# Highlighting
|
||||||
|
syntect_theme = ""
|
||||||
|
|
||||||
|
# : }}}
|
||||||
|
|
||||||
|
|
||||||
|
# : Status {{{
|
||||||
|
|
||||||
|
[status]
|
||||||
|
separator_open = ""
|
||||||
|
separator_close = ""
|
||||||
|
separator_style = { fg = "darkgray", bg = "darkgray" }
|
||||||
|
|
||||||
|
# Mode
|
||||||
|
mode_normal = { fg = "black", bg = "lightblue", bold = true }
|
||||||
|
mode_select = { fg = "black", bg = "lightgreen", bold = true }
|
||||||
|
mode_unset = { fg = "black", bg = "lightmagenta", bold = true }
|
||||||
|
|
||||||
|
# Progress
|
||||||
|
progress_label = { bold = true }
|
||||||
|
progress_normal = { fg = "blue", bg = "black" }
|
||||||
|
progress_error = { fg = "red", bg = "black" }
|
||||||
|
|
||||||
|
# Permissions
|
||||||
|
permissions_t = { fg = "lightgreen" }
|
||||||
|
permissions_r = { fg = "lightyellow" }
|
||||||
|
permissions_w = { fg = "lightred" }
|
||||||
|
permissions_x = { fg = "lightcyan" }
|
||||||
|
permissions_s = { fg = "darkgray" }
|
||||||
|
|
||||||
|
# : }}}
|
||||||
|
|
||||||
|
|
||||||
|
# : Select {{{
|
||||||
|
|
||||||
|
[select]
|
||||||
|
border = { fg = "blue" }
|
||||||
|
active = { fg = "magenta" }
|
||||||
|
inactive = {}
|
||||||
|
|
||||||
|
# : }}}
|
||||||
|
|
||||||
|
|
||||||
|
# : Input {{{
|
||||||
|
|
||||||
|
[input]
|
||||||
|
border = { fg = "blue" }
|
||||||
|
title = {}
|
||||||
|
value = {}
|
||||||
|
selected = { reversed = true }
|
||||||
|
|
||||||
|
# : }}}
|
||||||
|
|
||||||
|
|
||||||
|
# : Completion {{{
|
||||||
|
|
||||||
|
[completion]
|
||||||
|
border = { fg = "blue" }
|
||||||
|
active = { bg = "darkgray" }
|
||||||
|
inactive = {}
|
||||||
|
|
||||||
|
# Icons
|
||||||
|
icon_file = ""
|
||||||
|
icon_folder = ""
|
||||||
|
icon_command = ""
|
||||||
|
|
||||||
|
# : }}}
|
||||||
|
|
||||||
|
|
||||||
|
# : Tasks {{{
|
||||||
|
|
||||||
|
[tasks]
|
||||||
|
border = { fg = "blue" }
|
||||||
|
title = {}
|
||||||
|
hovered = { underline = true }
|
||||||
|
|
||||||
|
# : }}}
|
||||||
|
|
||||||
|
|
||||||
|
# : Which {{{
|
||||||
|
|
||||||
|
[which]
|
||||||
|
cols = 3
|
||||||
|
mask = { bg = "black" }
|
||||||
|
cand = { fg = "lightcyan" }
|
||||||
|
rest = { fg = "darkgray" }
|
||||||
|
desc = { fg = "magenta" }
|
||||||
|
separator = " "
|
||||||
|
separator_style = { fg = "darkgray" }
|
||||||
|
|
||||||
|
# : }}}
|
||||||
|
|
||||||
|
|
||||||
|
# : Help {{{
|
||||||
|
|
||||||
|
[help]
|
||||||
|
on = { fg = "magenta" }
|
||||||
|
exec = { fg = "cyan" }
|
||||||
|
desc = { fg = "gray" }
|
||||||
|
hovered = { bg = "darkgray", bold = true }
|
||||||
|
footer = { fg = "black", bg = "white" }
|
||||||
|
|
||||||
|
# : }}}
|
||||||
|
|
||||||
|
|
||||||
|
# : File-specific styles {{{
|
||||||
|
|
||||||
|
[filetype]
|
||||||
|
|
||||||
|
rules = [
|
||||||
|
# Images
|
||||||
|
{ mime = "image/*", fg = "cyan" },
|
||||||
|
|
||||||
|
# Videos
|
||||||
|
{ mime = "video/*", fg = "yellow" },
|
||||||
|
{ mime = "audio/*", fg = "yellow" },
|
||||||
|
|
||||||
|
# Archives
|
||||||
|
{ mime = "application/zip", fg = "magenta" },
|
||||||
|
{ mime = "application/gzip", fg = "magenta" },
|
||||||
|
{ mime = "application/x-tar", fg = "magenta" },
|
||||||
|
{ mime = "application/x-bzip", fg = "magenta" },
|
||||||
|
{ mime = "application/x-bzip2", fg = "magenta" },
|
||||||
|
{ mime = "application/x-7z-compressed", fg = "magenta" },
|
||||||
|
{ mime = "application/x-rar", fg = "magenta" },
|
||||||
|
{ mime = "application/xz", fg = "magenta" },
|
||||||
|
|
||||||
|
# Documents
|
||||||
|
{ mime = "application/doc", fg = "green" },
|
||||||
|
{ mime = "application/pdf", fg = "green" },
|
||||||
|
{ mime = "application/rtf", fg = "green" },
|
||||||
|
{ mime = "application/vnd.*", fg = "green" },
|
||||||
|
|
||||||
|
# Fallback
|
||||||
|
# { name = "*", fg = "white" },
|
||||||
|
{ name = "*/", fg = "blue" }
|
||||||
|
]
|
||||||
|
|
||||||
|
[icon]
|
||||||
|
|
||||||
|
rules = [
|
||||||
|
# Programming
|
||||||
|
{ name = "*.c" , text = "" },
|
||||||
|
{ name = "*.cpp" , text = "" },
|
||||||
|
{ name = "*.css" , text = "" },
|
||||||
|
{ name = "*.fish" , text = "" },
|
||||||
|
{ name = "*.go" , text = "" },
|
||||||
|
{ name = "*.h" , text = "" },
|
||||||
|
{ name = "*.hpp" , text = "" },
|
||||||
|
{ name = "*.html" , text = "" },
|
||||||
|
{ name = "*.java" , text = "" },
|
||||||
|
{ name = "*.js" , text = "" },
|
||||||
|
{ name = "*.jsx" , text = "" },
|
||||||
|
{ name = "*.lua" , text = "" },
|
||||||
|
{ name = "*.nix" , text = "" },
|
||||||
|
{ name = "*.php" , text = "" },
|
||||||
|
{ name = "*.py" , text = "" },
|
||||||
|
{ name = "*.rb" , text = "" },
|
||||||
|
{ name = "*.rs" , text = "" },
|
||||||
|
{ name = "*.scss" , text = "" },
|
||||||
|
{ name = "*.sh" , text = "" },
|
||||||
|
{ name = "*.swift", text = "" },
|
||||||
|
{ name = "*.ts" , text = "" },
|
||||||
|
{ name = "*.tsx" , text = "" },
|
||||||
|
{ name = "*.vim" , text = "" },
|
||||||
|
{ name = "*.vue" , text = "" },
|
||||||
|
|
||||||
|
# Text
|
||||||
|
{ name = "*.conf", text = "" },
|
||||||
|
{ name = "*.ini" , text = "" },
|
||||||
|
{ name = "*.json", text = "" },
|
||||||
|
{ name = "*.md" , text = "" },
|
||||||
|
{ name = "*.toml", text = "" },
|
||||||
|
{ name = "*.txt", text = "" },
|
||||||
|
{ name = "*.yaml", text = "" },
|
||||||
|
{ name = "*.yml" , text = "" },
|
||||||
|
|
||||||
|
# Archives
|
||||||
|
{ name = "*.7z" , text = "" },
|
||||||
|
{ name = "*.bz2", text = "" },
|
||||||
|
{ name = "*.gz" , text = "" },
|
||||||
|
{ name = "*.rar", text = "" },
|
||||||
|
{ name = "*.tar", text = "" },
|
||||||
|
{ name = "*.xz" , text = "" },
|
||||||
|
{ name = "*.zip", text = "" },
|
||||||
|
|
||||||
|
# Images
|
||||||
|
{ name = "*.HEIC", text = "" },
|
||||||
|
{ name = "*.avif", text = "" },
|
||||||
|
{ name = "*.bmp" , text = "" },
|
||||||
|
{ name = "*.gif" , text = "" },
|
||||||
|
{ name = "*.ico" , text = "" },
|
||||||
|
{ name = "*.jpeg", text = "" },
|
||||||
|
{ name = "*.jpg" , text = "" },
|
||||||
|
{ name = "*.png" , text = "" },
|
||||||
|
{ name = "*.svg" , text = "" },
|
||||||
|
{ name = "*.webp", text = "" },
|
||||||
|
|
||||||
|
# Movies
|
||||||
|
{ name = "*.avi" , text = "" },
|
||||||
|
{ name = "*.mkv" , text = "" },
|
||||||
|
{ name = "*.mov" , text = "" },
|
||||||
|
{ name = "*.mp4" , text = "" },
|
||||||
|
{ name = "*.webm", text = "" },
|
||||||
|
|
||||||
|
# Audio
|
||||||
|
{ name = "*.aac" , text = "" },
|
||||||
|
{ name = "*.flac", text = "" },
|
||||||
|
{ name = "*.m4a" , text = "" },
|
||||||
|
{ name = "*.mp3" , text = "" },
|
||||||
|
{ name = "*.ogg" , text = "" },
|
||||||
|
{ name = "*.wav" , text = "" },
|
||||||
|
|
||||||
|
# Documents
|
||||||
|
{ name = "*.csv" , text = "" },
|
||||||
|
{ name = "*.doc" , text = "" },
|
||||||
|
{ name = "*.doct", text = "" },
|
||||||
|
{ name = "*.docx", text = "" },
|
||||||
|
{ name = "*.dot" , text = "" },
|
||||||
|
{ name = "*.ods" , text = "" },
|
||||||
|
{ name = "*.ots" , text = "" },
|
||||||
|
{ name = "*.pdf" , text = "" },
|
||||||
|
{ name = "*.pom" , text = "" },
|
||||||
|
{ name = "*.pot" , text = "" },
|
||||||
|
{ name = "*.potx", text = "" },
|
||||||
|
{ name = "*.ppm" , text = "" },
|
||||||
|
{ name = "*.ppmx", text = "" },
|
||||||
|
{ name = "*.pps" , text = "" },
|
||||||
|
{ name = "*.ppsx", text = "" },
|
||||||
|
{ name = "*.ppt" , text = "" },
|
||||||
|
{ name = "*.pptx", text = "" },
|
||||||
|
{ name = "*.xlc" , text = "" },
|
||||||
|
{ name = "*.xlm" , text = "" },
|
||||||
|
{ name = "*.xls" , text = "" },
|
||||||
|
{ name = "*.xlsm", text = "" },
|
||||||
|
{ name = "*.xlsx", text = "" },
|
||||||
|
{ name = "*.xlt" , text = "" },
|
||||||
|
|
||||||
|
# Lockfiles
|
||||||
|
{ name = "*.lock", text = "" },
|
||||||
|
|
||||||
|
# Misc
|
||||||
|
{ name = "*.bin", text = "" },
|
||||||
|
{ name = "*.exe", text = "" },
|
||||||
|
{ name = "*.pkg", text = "" },
|
||||||
|
|
||||||
|
# Dotfiles
|
||||||
|
{ name = ".DS_Store" , text = "" },
|
||||||
|
{ name = ".bashprofile" , text = "" },
|
||||||
|
{ name = ".bashrc" , text = "" },
|
||||||
|
{ name = ".gitattributes", text = "" },
|
||||||
|
{ name = ".gitignore" , text = "" },
|
||||||
|
{ name = ".gitmodules" , text = "" },
|
||||||
|
{ name = ".vimrc" , text = "" },
|
||||||
|
{ name = ".zprofile" , text = "" },
|
||||||
|
{ name = ".zshenv" , text = "" },
|
||||||
|
{ name = ".zshrc" , text = "" },
|
||||||
|
|
||||||
|
# Named files
|
||||||
|
{ name = "COPYING" , text = "" },
|
||||||
|
{ name = "Containerfile", text = "" },
|
||||||
|
{ name = "Dockerfile" , text = "" },
|
||||||
|
{ name = "LICENSE" , text = "" },
|
||||||
|
|
||||||
|
# Directories
|
||||||
|
{ name = ".config/" , text = "" },
|
||||||
|
{ name = ".git/" , text = "" },
|
||||||
|
{ name = "Desktop/" , text = "" },
|
||||||
|
{ name = "Development/", text = "" },
|
||||||
|
{ name = "Documents/" , text = "" },
|
||||||
|
{ name = "Downloads/" , text = "" },
|
||||||
|
{ name = "Library/" , text = "" },
|
||||||
|
{ name = "Movies/" , text = "" },
|
||||||
|
{ name = "Music/" , text = "" },
|
||||||
|
{ name = "Pictures/" , text = "" },
|
||||||
|
{ name = "Public/" , text = "" },
|
||||||
|
{ name = "Videos/" , text = "" },
|
||||||
|
|
||||||
|
# Default
|
||||||
|
{ name = "*" , text = "" },
|
||||||
|
{ name = "*/", text = "" },
|
||||||
|
]
|
124
.config/yazi/yazi.toml
Normal file
124
.config/yazi/yazi.toml
Normal file
|
@ -0,0 +1,124 @@
|
||||||
|
[manager]
|
||||||
|
ratio = [1, 4, 3]
|
||||||
|
sort_by = "natural"
|
||||||
|
sort_sensitive=false
|
||||||
|
|
||||||
|
#sort_dir_first=true
|
||||||
|
sort_dir_first=false
|
||||||
|
|
||||||
|
#linemode="mtime"
|
||||||
|
linemode="size"
|
||||||
|
|
||||||
|
show_hidden=false
|
||||||
|
show_symlink=true
|
||||||
|
|
||||||
|
[opener]
|
||||||
|
edit = [
|
||||||
|
{ run = '$EDITOR "$@"', block = true, desc="Edit", for = "unix" },
|
||||||
|
]
|
||||||
|
open = [
|
||||||
|
{ run = 'xdg-open "$@"', desc = "Open", for = "linux" },
|
||||||
|
{ run = 'open "$@"', desc = "Open", for = "macos" },
|
||||||
|
{ run = 'start "" "%1"', orphan = true, desc = "Open", for = "windows" }
|
||||||
|
]
|
||||||
|
extract = [
|
||||||
|
{ run = '7z x "$1"', desc = "Extract here", for = "unix" },
|
||||||
|
]
|
||||||
|
play = [
|
||||||
|
{ run = 'mpv "$@"', orphan = true, desc = "Play", for = "unix" },
|
||||||
|
{ run = 'mpv "%1"', orphan = true, desc = "Play", for = "windows" },
|
||||||
|
]
|
||||||
|
info = [
|
||||||
|
{ run = '''ffprobe -hide_banner "$1"; echo "Press enter to exit"; read''', block = true, desc = "Show ffprobe info", for = "unix" },
|
||||||
|
{ run = '''printf "'${1##*/}' Duration: ";ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 "$1"; echo "Press enter to exit"; read''', block = true, desc = "Show duration", for = "unix"}
|
||||||
|
]
|
||||||
|
|
||||||
|
[open]
|
||||||
|
rules = [
|
||||||
|
{ name = "*/", use = [ "edit", "open" ] },
|
||||||
|
|
||||||
|
{ mime = "text/*", use = [ "edit" ] },
|
||||||
|
{ mime = "image/*", use = [ "open" ] },
|
||||||
|
{ mime = "video/*", use = [ "play", "info" ] },
|
||||||
|
{ mime = "audio/*", use = [ "play", "info" ] },
|
||||||
|
{ mime = "inode/x-empty", use = [ "edit" ] },
|
||||||
|
|
||||||
|
{ mime = "application/json", use = [ "edit" ] },
|
||||||
|
{ mime = "*/javascript", use = [ "edit" ] },
|
||||||
|
|
||||||
|
{ mime = "application/zip", use = [ "extract" ] },
|
||||||
|
{ mime = "application/gzip", use = [ "extract" ] },
|
||||||
|
{ mime = "application/x-tar", use = [ "extract" ] },
|
||||||
|
{ mime = "application/x-bzip", use = [ "extract" ] },
|
||||||
|
{ mime = "application/x-bzip2", use = [ "extract" ] },
|
||||||
|
{ mime = "application/x-7z-compressed", use = [ "extract" ] },
|
||||||
|
{ mime = "application/x-rar", use = [ "extract" ] },
|
||||||
|
{ mime = "application/xz", use = [ "extract" ] },
|
||||||
|
|
||||||
|
{ mime = "*", use = [ "open" ] },
|
||||||
|
]
|
||||||
|
|
||||||
|
[tasks]
|
||||||
|
micro_workers = 10
|
||||||
|
macro_workers = 25
|
||||||
|
bizarre_retry = 5
|
||||||
|
image_alloc = 536870912 # 512MB
|
||||||
|
image_bound = [ 0, 0 ]
|
||||||
|
suppress_preload = false
|
||||||
|
|
||||||
|
[plugin]
|
||||||
|
prepend_previewers = [
|
||||||
|
{ name = "*.md", run = "glow" },
|
||||||
|
]
|
||||||
|
|
||||||
|
preloaders = [
|
||||||
|
{ name = "*", cond = "!mime", run = "mime", multi = true, prio = "high" },
|
||||||
|
# Image
|
||||||
|
{ mime = "image/vnd.djvu", run = "noop" },
|
||||||
|
{ mime = "image/*", run = "image" },
|
||||||
|
# Video
|
||||||
|
{ mime = "video/*", run = "video" },
|
||||||
|
# PDF
|
||||||
|
{ mime = "application/pdf", run = "pdf" },
|
||||||
|
]
|
||||||
|
previewers = [
|
||||||
|
{ name = "*/", run = "folder", sync = true },
|
||||||
|
# Code
|
||||||
|
{ mime = "text/*", run = "code" },
|
||||||
|
{ mime = "*/xml", run = "code" },
|
||||||
|
{ mime = "*/javascript", run = "code" },
|
||||||
|
{ mime = "*/x-wine-extension-ini", run = "code" },
|
||||||
|
# JSON
|
||||||
|
{ mime = "application/json", run = "json" },
|
||||||
|
# Image
|
||||||
|
{ mime = "image/vnd.djvu", run = "noop" },
|
||||||
|
{ mime = "image/*", run = "viu" },
|
||||||
|
# Video
|
||||||
|
{ mime = "video/*", run = "video" },
|
||||||
|
# PDF
|
||||||
|
{ mime = "application/pdf", run = "pdf2text" },
|
||||||
|
# Archive
|
||||||
|
{ mime = "application/zip", run = "7z" },
|
||||||
|
{ mime = "application/gzip", run = "7z" },
|
||||||
|
{ mime = "application/x-tar", run = "7z" },
|
||||||
|
{ mime = "application/x-bzip", run = "7z" },
|
||||||
|
{ mime = "application/x-bzip2", run = "7z" },
|
||||||
|
{ mime = "application/x-7z-compressed", run = "7z" },
|
||||||
|
{ mime = "application/x-rar", run = "7z" },
|
||||||
|
{ mime = "application/xz", run = "7z" },
|
||||||
|
{ mime = "application/x-bittorrent;", run = "imdl" },
|
||||||
|
{ name = "*.torrent", run = "imdl" },
|
||||||
|
|
||||||
|
# File Ext
|
||||||
|
# Switch ROM
|
||||||
|
{ name = "*.nsp", run = "file" },
|
||||||
|
|
||||||
|
# Fallback
|
||||||
|
{ mime = "application/octet-stream", run = "hexyl" },
|
||||||
|
{ name = "*", run = "file" },
|
||||||
|
]
|
||||||
|
|
||||||
|
[select]
|
||||||
|
open_title = "Open with:"
|
||||||
|
open_origin = "hovered"
|
||||||
|
open_offset = [ 0, 1, 50, 7 ]
|
Loading…
Add table
Add a link
Reference in a new issue