feat(shell): setup yazi file manager.
This commit is contained in:
parent
cd3e60e3cc
commit
b9413da4b9
3 changed files with 65 additions and 0 deletions
|
|
@ -141,5 +141,51 @@
|
|||
filter_mode = "directory";
|
||||
};
|
||||
};
|
||||
|
||||
# Install and setup yazi
|
||||
programs.yazi = {
|
||||
enable = true;
|
||||
enableZshIntegration = true;
|
||||
shellWrapperName = "y";
|
||||
settings = {
|
||||
mgr = {
|
||||
ratio = [0 4 4];
|
||||
sort_by = "natural";
|
||||
show_hidden = true;
|
||||
show_symlink = false;
|
||||
};
|
||||
};
|
||||
plugins = {
|
||||
full-border = pkgs.yaziPlugins.full-border;
|
||||
smart-enter = pkgs.yaziPlugins.smart-enter;
|
||||
smart-tab = ./yazi/smart-tab;
|
||||
folder-rules = ./yazi/folder-rules;
|
||||
};
|
||||
initLua = ''
|
||||
require("full-border"):setup({
|
||||
type = ui.Border.ROUNDED,
|
||||
})
|
||||
|
||||
require("smart-enter"):setup({
|
||||
open_multi = true,
|
||||
})
|
||||
|
||||
require("folder-rules"):setup()
|
||||
'';
|
||||
keymap = {
|
||||
mgr.prepend_keymap = [
|
||||
{
|
||||
on = "l";
|
||||
run = "plugin smart-enter";
|
||||
desc = "Enter the child directory, or open the file";
|
||||
}
|
||||
{
|
||||
on = "t";
|
||||
run = "plugin smart-tab";
|
||||
desc = "Create a tab and enter the howered directory";
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,12 @@
|
|||
local function setup()
|
||||
ps.sub("cd", function()
|
||||
local cwd = cx.active.current.cwd
|
||||
if cwd:ends_with("downs") then
|
||||
ya.emit("sort", { "mtime", reverse = true, dir_first = false })
|
||||
else
|
||||
ya.emit("sort", { "natural", reverse = false, dir_first = true })
|
||||
end
|
||||
end)
|
||||
end
|
||||
|
||||
return { setup = setup }
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
--- @sync entry
|
||||
return {
|
||||
entry = function()
|
||||
local h = cx.active.current.hovered
|
||||
ya.emit("tab_create", h and h.cha.is_dir and { h.url } or { current = true })
|
||||
end,
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue