yazi: init keymap and openers
Some checks failed
fmt check / check (push) Waiting to run
flake check / check (push) Has been cancelled

This commit is contained in:
notohh 2024-01-17 14:40:02 -05:00
parent 6cac9efb08
commit 9018565460
Signed by: notohh
GPG key ID: BD47506D475EE86D
3 changed files with 344 additions and 17 deletions

View file

@ -4,8 +4,7 @@
...
}: {
xdg.configFile."yazi/init.lua".source = ./init.lua;
# imports = [./keymap.nix];
home.packages = [pkgs.exiftool];
imports = [./keymap.nix ./openers.nix];
programs.yazi = {
enable = true;
@ -26,21 +25,6 @@
max_height = 900;
max_width = 600;
};
open.rules = [
{
mime = "image/*";
use = ["image"];
}
];
opener = {
image = [
{
exec = ''imv "$@" '';
block = true;
for = "linux";
}
];
};
log.enable = false;
};
};

289
home/yazi/keymap.nix Normal file
View file

@ -0,0 +1,289 @@
_: {
programs.yazi.keymap = {
manager.keymap = [
{
on = ["<Esc>"];
exec = "escape";
desc = "Exit visual mode; clear selected; or cancel search";
}
{
on = ["q"];
exec = "quit";
desc = "Exit the process";
}
{
on = ["<C-q>"];
exec = "close";
desc = "Close the current tab; or quit if it is last tab";
}
# Navigation
{
on = ["<Up>"];
exec = "arrow -1";
desc = "Move cursor up";
}
{
on = ["<Down>"];
exec = "arrow 1";
desc = "Move cursor down";
}
{
on = ["<Left>"];
exec = "leave";
desc = "Go back to the parent directory";
}
{
on = ["<Right>"];
exec = "enter";
desc = "Enter the child directory";
}
{
on = ["g" "g"];
exec = "arrow -99999999";
desc = "Move cursor to the top";
}
{
on = ["G"];
exec = "arrow 99999999";
desc = "Move cursor to the bottom";
}
# Selection
{
on = ["<Space>"];
exec = ["select --state=none" "arrow 1"];
desc = "Toggle the current selection state";
}
{
on = ["i"];
exec = "visual_mode";
desc = "Enter visual mode (selection mode)";
}
{
on = ["I"];
exec = "visual_mode --unset";
desc = "Enter visual mode (unset mode)";
}
{
on = ["<C-a>"];
exec = "select_all --state=true";
desc = "Select all files";
}
{
on = ["<C-r>"];
exec = "select_all --state=none";
desc = "Inverse selection of all files";
}
# Operations
{
on = ["<Enter>"];
exec = "open";
desc = "Open selected file(s)";
}
{
on = ["y"];
exec = "yank";
desc = "Copy selected file(s)";
}
{
on = ["x"];
exec = "yank --cut";
desc = "Cut selected file(s)";
}
{
on = ["p"];
exec = "paste";
desc = "Paste the file(s)";
}
{
on = ["P"];
exec = "paste --force";
desc = "Paste the files (overwrite)";
}
{
on = ["d"];
exec = "remove --permanently";
desc = "Permanently delete the file(s)";
}
{
on = ["D"];
exec = "remove --permanently";
desc = "Permanently delete the files(s)";
}
{
on = ["a"];
exec = "create";
desc = "create a file or directory (ends with / for directories)";
}
{
on = ["r"];
exec = "rename";
desc = "rename a file or directory";
}
{
on = [":"];
exec = "shell --block";
desc = "run a blocking shell command";
}
{
on = ["."];
exec = "hidden toggle";
desc = "toggle hidden files";
}
{
on = ["z"];
exec = "jump zoxide";
desc = "jump to a directory using zoxide";
}
{
on = ["Z"];
exec = "jump fzf";
desc = "reveal files with fzf";
}
# Copy
{
on = ["c" "c"];
exec = "copy path";
desc = "copy the absolute path";
}
{
on = ["c" "d"];
exec = "copy dirname";
desc = "copy parent directory path";
}
{
on = ["c" "f"];
exec = "copy filename";
desc = "copy file name";
}
# Find
{
on = ["/"];
exec = "find";
}
{
on = ["?"];
exec = "find --previous";
}
{
on = ["n"];
exec = "find_arrow";
}
{
on = ["N"];
exec = "find_arrow --previous";
}
{
on = ["s"];
exec = "search fd";
}
{
on = ["S"];
exec = "search rg";
}
{
on = ["<C-s>"];
exec = "search none";
}
# Tabs
{
on = ["t"];
exec = "tab_create --current";
desc = "Create a new tab using the current path";
}
{
on = ["1"];
exec = "tab_switch 0";
desc = "Switch to the first tab";
}
{
on = ["2"];
exec = "tab_switch 1";
desc = "Switch to the second tab";
}
{
on = ["3"];
exec = "tab_switch 2";
desc = "Switch to the third tab";
}
{
on = ["4"];
exec = "tab_switch 3";
desc = "Switch to the fourth tab";
}
{
on = ["5"];
exec = "tab_switch 4";
desc = "Switch to the fifth tab";
}
{
on = ["6"];
exec = "tab_switch 5";
desc = "Switch to the sixth tab";
}
{
on = ["7"];
exec = "tab_switch 6";
desc = "Switch to the seventh tab";
}
{
on = ["8"];
exec = "tab_switch 7";
desc = "Switch to the eighth tab";
}
{
on = ["9"];
exec = "tab_switch 8";
desc = "Switch to the ninth tab";
}
{
on = ["["];
exec = "tab_switch -1 --relative";
desc = "Switch to the previous tab";
}
{
on = ["]"];
exec = "tab_switch 1 --relative";
desc = "Switch to the next tab";
}
{
on = ["{"];
exec = "tab_swap -1";
desc = "Swap the current tab with the previous tab";
}
{
on = ["}"];
exec = "tab_swap 1";
desc = "Swap the current tab with the next tab";
}
# Tasks
{
on = ["w"];
exec = "tasks_show";
desc = "Show the tasks manager";
}
# Help
{
on = ["~"];
exec = "help";
desc = "Open help";
}
];
};
}

54
home/yazi/openers.nix Normal file
View file

@ -0,0 +1,54 @@
{pkgs, ...}: {
programs.yazi.settings = {
open.rules = [
{
mime = "text/*";
use = ["edit" "reveal"];
}
{
mime = "image/*";
use = ["image" "reveal"];
}
{
mime = "video/*";
use = ["play" "reveal"];
}
{
mime = "application/json";
use = ["edit" "reveal"];
}
{
mime = "*";
use = ["edit" "open" "reveal"];
}
];
opener = {
text = [
{
exec = ''hx "$@"'';
for = "linux";
}
];
image = [
{
exec = ''imv "$@" '';
block = true;
for = "linux";
}
];
video = [
{
exec = ''mpv "$@"'';
block = true;
for = "linux";
}
];
reveal = [
{
exec = ''${pkgs.exiftool}/bin/exiftool "$1";'';
block = true;
}
];
};
};
}