DashNix/modules/programs/yazi/yazi.nix
2024-11-09 16:19:50 +01:00

1002 lines
20 KiB
Nix

{
# don't ask....
enable = true;
settings = {
log = {
enabled = false;
};
opener = {
folder = [
{
run = ''open - R "$@"'';
orphan = true;
display_name = "Reveal in Finder";
}
{
run = ''$EDITOR "$@"'';
orphan = true;
}
];
archive = [
{
run = ''unar "$1"'';
display_name = "Extract here";
}
];
text = [
{
run = ''$EDITOR "$@"'';
orphan = true;
}
];
image = [
{
run = ''imv "$@"'';
orphan = true;
display_name = "Open";
}
{
run = ''exiftool "$1"; echo "Press enter to exit"; read'';
block = true;
display_name = "Show EXIF";
}
];
pdf = [
{
run = ''zathura "$@"'';
orphan = true;
display_name = "Open";
}
];
video = [
{
run = ''mpv "$@"'';
orphan = true;
}
{
run = ''mediainfo "$1"; echo "Press enter to exit"; read'';
block = true;
display_name = "Show media info";
}
];
audio = [
{
run = ''xdg-open "$@"'';
orphan = true;
}
{
run = ''mediainfo "$1"; echo "Press enter to exit"; read'';
block = true;
display_name = "Show media info";
}
];
fallback = [
{
run = ''xdg-open "$@"'';
orphan = true;
display_name = "Open";
}
{
run = ''xdg-open - R "$@"'';
orphan = true;
display_name = "Reveal in Finder";
}
];
};
plugin = {
prepend_previewers = [
{
name = "*.md";
run = "glow";
}
{
mime = "text/csv";
run = "miller";
}
];
};
};
keymap = {
manager.keymap = [
{
on = [ "<Esc>" ];
run = "escape";
desc = "Exit visual mode clear selected or cancel search";
}
{
on = [ "q" ];
run = "quit";
desc = "Exit the process";
}
{
on = [ "Q" ];
run = "quit --no-cwd-file";
desc = "Exit the process without writing cwd-file";
}
{
on = [ "<C-q>" ];
run = "close";
desc = "Close the current tab or quit if it is last tab";
}
{
on = [ "<C-z>" ];
run = "suspend";
desc = "Suspend the process";
}
# Navigation
{
on = [ "l" ];
run = "arrow -1";
desc = "Move cursor up";
}
{
on = [ "k" ];
run = "arrow 1";
desc = "Move cursor down";
}
{
on = [ "L" ];
run = "arrow -5";
desc = "Move cursor up 5 lines";
}
{
on = [ "K" ];
run = "arrow 5";
desc = "Move cursor down 5 lines";
}
{
on = [ "<C-u>" ];
run = "arrow -50%";
desc = "Move cursor up half page";
}
{
on = [ "<C-d>" ];
run = "arrow 50%";
desc = "Move cursor down half page";
}
{
on = [ "<C-b>" ];
run = "arrow -100%";
desc = "Move cursor up one page";
}
{
on = [ "<C-f>" ];
run = "arrow 100%";
desc = "Move cursor down one page";
}
{
on = [ "j" ];
run = "leave";
desc = "Go back to the parent directory";
}
{
on = [ ";" ];
run = "enter";
desc = "Enter the child directory";
}
{
on = [ "J" ];
run = "back";
desc = "Go back to the previous directory";
}
{
on = [ "P" ];
run = "forward";
desc = "Go forward to the next directory";
}
{
on = [ "<C-k>" ];
run = "peek -5";
desc = "Peek up 5 units in the preview";
}
{
on = [ "<C-j>" ];
run = "peek 5";
desc = "Peek down 5 units in the preview";
}
{
on = [ "<Up>" ];
run = "arrow -1";
desc = "Move cursor up";
}
{
on = [ "<Down>" ];
run = "arrow 1";
desc = "Move cursor down";
}
{
on = [ "<Left>" ];
run = "leave";
desc = "Go back to the parent directory";
}
{
on = [ "<Right>" ];
run = "enter";
desc = "Enter the child directory";
}
{
on = [
"g"
"g"
];
run = "arrow -99999999";
desc = "Move cursor to the top";
}
{
on = [ "G" ];
run = "arrow 99999999";
desc = "Move cursor to the bottom";
}
# Selection
{
on = [ "v" ];
run = "visual_mode";
desc = "Enter visual mode (selection mode)";
}
{
on = [ "V" ];
run = "visual_mode --unset";
desc = "Enter visual mode (unset mode)";
}
{
on = [ "<C-a>" ];
run = "select_all --state=true";
desc = "Select all files";
}
{
on = [ "<C-r>" ];
run = "select_all --state=none";
desc = "Inverse selection of all files";
}
# Operation
{
on = [ "o" ];
run = "open";
desc = "Open the selected files";
}
{
on = [ "O" ];
run = "open --interactive";
desc = "Open the selected files interactively";
}
{
on = [ "<Enter>" ];
run = "open";
desc = "Open the selected files";
}
{
on = [ "<C-Enter>" ];
run = "open --interactive";
desc = "Open the selected files interactively";
} # It's cool if you're using a terminal that supports CSI u
{
on = [ "y" ];
run = "yank";
desc = "Copy the selected files";
}
{
on = [ "x" ];
run = "yank --cut";
desc = "Cut the selected files";
}
{
on = [ "p" ];
run = "paste";
desc = "Paste the files";
}
{
on = [ "P" ];
run = "paste --force";
desc = "Paste the files (overwrite if the destination exists)";
}
{
on = [ "-" ];
run = "link";
desc = "Symlink the absolute path of files";
}
{
on = [ "_" ];
run = "link --relative";
desc = "Symlink the relative path of files";
}
{
on = [ "d" ];
run = "remove";
desc = "Move the files to the trash";
}
{
on = [ "D" ];
run = "remove --permanently";
desc = "Permanently delete the files";
}
{
on = [ "a" ];
run = "create";
desc = "Create a file or directory (ends with / for directories)";
}
{
on = [ "r" ];
run = "rename";
desc = "Rename a file or directory";
}
{
on = [ ";" ];
run = "shell";
desc = "Run a shell command";
}
{
on = [ ":" ];
run = "shell --block";
desc = "Run a shell command (block the UI until the command finishes)";
}
{
on = [ "." ];
run = "hidden toggle";
desc = "Toggle the visibility of hidden files";
}
{
on = [
"<Space>"
"f"
"g>"
];
run = "search fd";
desc = "Search files by name using fd";
}
{
on = [
"<Space>"
"f"
"G>"
];
run = "search rg";
desc = "Search files by content using ripgrep";
}
{
on = [ "<C-s>" ];
run = "search none";
desc = "Cancel the ongoing search";
}
{
on = [ "z" ];
run = "jump zoxide";
desc = "Jump to a directory using zoxide";
}
{
on = [ "Z" ];
run = "jump fzf";
desc = "Jump to a directory or reveal a file using fzf";
}
# Copy
{
on = [
"c"
"c"
];
run = "copy path";
desc = "Copy the absolute path";
}
{
on = [
"c"
"d"
];
run = "copy dirname";
desc = "Copy the path of the parent directory";
}
{
on = [
"c"
"f"
];
run = "copy filename";
desc = "Copy the name of the file";
}
{
on = [
"c"
"n"
];
run = "copy name_without_ext";
desc = "Copy the name of the file without the extension";
}
# Find
{
on = [ "/" ];
run = "find --smart";
}
{
on = [ "?" ];
run = "find --previous --smart";
}
{
on = [ "n" ];
run = "find_arrow";
}
{
on = [ "N" ];
run = "find_arrow --previous";
}
# Sorting
{
on = [
","
"a"
];
run = "sort alphabetical --dir_first";
desc = "Sort alphabetically";
}
{
on = [
","
"A"
];
run = "sort alphabetical --reverse --dir_first";
desc = "Sort alphabetically (reverse)";
}
{
on = [
","
"c"
];
run = "sort created --dir_first";
desc = "Sort by creation time";
}
{
on = [
","
"C"
];
run = "sort created --reverse --dir_first";
desc = "Sort by creation time (reverse)";
}
{
on = [
","
"m"
];
run = "sort modified --dir_first";
desc = "Sort by modified time";
}
{
on = [
","
"M"
];
run = "sort modified --reverse --dir_first";
desc = "Sort by modified time (reverse)";
}
{
on = [
","
"n"
];
run = "sort natural --dir_first";
desc = "Sort naturally";
}
{
on = [
","
"N"
];
run = "sort natural --reverse --dir_first";
desc = "Sort naturally (reverse)";
}
{
on = [
","
"s"
];
run = "sort size --dir_first";
desc = "Sort by size";
}
{
on = [
","
"S"
];
run = "sort size --reverse --dir_first";
desc = "Sort by size (reverse)";
}
# Tabs
{
on = [ "t" ];
run = "tab_create --current";
desc = "Create a new tab using the current path";
}
{
on = [ "1" ];
run = "tab_switch 0";
desc = "Switch to the first tab";
}
{
on = [ "2" ];
run = "tab_switch 1";
desc = "Switch to the second tab";
}
{
on = [ "3" ];
run = "tab_switch 2";
desc = "Switch to the third tab";
}
{
on = [ "4" ];
run = "tab_switch 3";
desc = "Switch to the fourth tab";
}
{
on = [ "5" ];
run = "tab_switch 4";
desc = "Switch to the fifth tab";
}
{
on = [ "6" ];
run = "tab_switch 5";
desc = "Switch to the sixth tab";
}
{
on = [ "7" ];
run = "tab_switch 6";
desc = "Switch to the seventh tab";
}
{
on = [ "8" ];
run = "tab_switch 7";
desc = "Switch to the eighth tab";
}
{
on = [ "9" ];
run = "tab_switch 8";
desc = "Switch to the ninth tab";
}
{
on = [ "[" ];
run = "tab_switch -1 --relative";
desc = "Switch to the previous tab";
}
{
on = [ "]" ];
run = "tab_switch 1 --relative";
desc = "Switch to the next tab";
}
{
on = [ "{" ];
run = "tab_swap -1";
desc = "Swap the current tab with the previous tab";
}
{
on = [ "}" ];
run = "tab_swap 1";
desc = "Swap the current tab with the next tab";
}
# Tasks
{
on = [ "w" ];
run = "tasks_show";
desc = "Show the tasks manager";
}
# Goto
{
on = [
"g"
"h"
];
run = "cd ~";
desc = "Go to the home directory";
}
{
on = [
"g"
"c"
];
run = "cd ~/.config";
desc = "Go to the config directory";
}
{
on = [
"g"
"d"
];
run = "cd ~/Downloads";
desc = "Go to the downloads directory";
}
{
on = [
"g"
"t"
];
run = "cd /tmp";
desc = "Go to the temporary directory";
}
{
on = [
"g"
"<Space>"
];
run = "cd --interactive";
desc = "Go to a directory interactively";
}
# Help
{
on = [ "~" ];
run = "help";
desc = "Open help";
}
];
tasks.keymap = [
{
on = [ "<Esc>" ];
run = "close";
desc = "Hide the task manager";
}
{
on = [ "<C-q>" ];
run = "close";
desc = "Hide the task manager";
}
{
on = [ "w" ];
run = "close";
desc = "Hide the task manager";
}
{
on = [ "k" ];
run = "arrow -1";
desc = "Move cursor up";
}
{
on = [ "j" ];
run = "arrow 1";
desc = "Move cursor down";
}
{
on = [ "<Up>" ];
run = "arrow -1";
desc = "Move cursor up";
}
{
on = [ "<Down>" ];
run = "arrow 1";
desc = "Move cursor down";
}
{
on = [ "<Enter>" ];
run = "inspect";
desc = "Inspect the task";
}
{
on = [ "x" ];
run = "cancel";
desc = "Cancel the task";
}
{
on = [ "~" ];
run = "help";
desc = "Open help";
}
];
select.keymap = [
{
on = [ "<C-q>" ];
run = "close";
desc = "Cancel selection";
}
{
on = [ "<Esc>" ];
run = "close";
desc = "Cancel selection";
}
{
on = [ "<Enter>" ];
run = "close --submit";
desc = "Submit the selection";
}
{
on = [ "k" ];
run = "arrow -1";
desc = "Move cursor up";
}
{
on = [ "j" ];
run = "arrow 1";
desc = "Move cursor down";
}
{
on = [ "K" ];
run = "arrow -5";
desc = "Move cursor up 5 lines";
}
{
on = [ "J" ];
run = "arrow 5";
desc = "Move cursor down 5 lines";
}
{
on = [ "<Up>" ];
run = "arrow -1";
desc = "Move cursor up";
}
{
on = [ "<Down>" ];
run = "arrow 1";
desc = "Move cursor down";
}
{
on = [ "~" ];
run = "help";
desc = "Open help";
}
];
input.keymap = [
{
on = [ "<C-q>" ];
run = "close";
desc = "Cancel input";
}
{
on = [ "<Enter>" ];
run = "close --submit";
desc = "Submit the input";
}
{
on = [ "<Esc>" ];
run = "escape";
desc = "Go back the normal mode or cancel input";
}
# Mode
{
on = [ "i" ];
run = "insert";
desc = "Enter insert mode";
}
{
on = [ "a" ];
run = "insert --append";
desc = "Enter append mode";
}
{
on = [ "v" ];
run = "visual";
desc = "Enter visual mode";
}
{
on = [ "V" ];
run = [
"move -999"
"visual"
"move 999"
];
desc = "Enter visual mode and select all";
}
# Navigation
{
on = [ "h" ];
run = "move -1";
desc = "Move cursor left";
}
{
on = [ "l" ];
run = "move 1";
desc = "Move cursor right";
}
{
on = [ "0" ];
run = "move -999";
desc = "Move to the BOL";
}
{
on = [ "$" ];
run = "move 999";
desc = "Move to the EOL";
}
{
on = [ "I" ];
run = [
"move -999"
"insert"
];
desc = "Move to the BOL and enter insert mode";
}
{
on = [ "A" ];
run = [
"move 999"
"insert --append"
];
desc = "Move to the EOL and enter append mode";
}
{
on = [ "<Left>" ];
run = "move -1";
desc = "Move cursor left";
}
{
on = [ "<Right>" ];
run = "move 1";
desc = "Move cursor right";
}
{
on = [ "b" ];
run = "backward";
desc = "Move to the beginning of the previous word";
}
{
on = [ "w" ];
run = "forward";
desc = "Move to the beginning of the next word";
}
{
on = [ "e" ];
run = "forward --end-of-word";
desc = "Move to the end of the next word";
}
# Deletion
{
on = [ "d" ];
run = "delete --cut";
desc = "Cut the selected characters";
}
{
on = [ "D" ];
run = [
"delete --cut"
"move 999"
];
desc = "Cut until the EOL";
}
{
on = [ "c" ];
run = "delete --cut --insert";
desc = "Cut the selected characters and enter insert mode";
}
{
on = [ "C" ];
run = [
"delete --cut --insert"
"move 999"
];
desc = "Cut until the EOL and enter insert mode";
}
{
on = [ "x" ];
run = [
"delete --cut"
"move 1 --in-operating"
];
desc = "Cut the current character";
}
# Yank/Paste
{
on = [ "y" ];
run = "yank";
desc = "Copy the selected characters";
}
{
on = [ "p" ];
run = "paste";
desc = "Paste the copied characters after the cursor";
}
{
on = [ "P" ];
run = "paste --before";
desc = "Paste the copied characters before the cursor";
}
# Undo/Redo
{
on = [ "u" ];
run = "undo";
desc = "Undo the last operation";
}
{
on = [ "<C-r>" ];
run = "redo";
desc = "Redo the last operation";
}
# Help
{
on = [ "~" ];
run = "help";
desc = "Open help";
}
];
help.keymap = [
{
on = [ "<Esc>" ];
run = "escape";
desc = "Clear the filter or hide the help";
}
{
on = [ "q" ];
run = "close";
desc = "Exit the process";
}
{
on = [ "<C-q>" ];
run = "close";
desc = "Hide the help";
}
# Navigation
{
on = [ "k" ];
run = "arrow -1";
desc = "Move cursor up";
}
{
on = [ "j" ];
run = "arrow 1";
desc = "Move cursor down";
}
{
on = [ "K" ];
run = "arrow -5";
desc = "Move cursor up 5 lines";
}
{
on = [ "J" ];
run = "arrow 5";
desc = "Move cursor down 5 lines";
}
{
on = [ "<Up>" ];
run = "arrow -1";
desc = "Move cursor up";
}
{
on = [ "<Down>" ];
run = "arrow 1";
desc = "Move cursor down";
}
# Filtering
{
on = [ "/" ];
run = "filter";
desc = "Apply a filter for the help items";
}
];
};
}