DashNix/modules/programs/yazi/yazi.nix
DashieTM 2a2ea5cd28
Some checks failed
Docs / Build (push) Failing after 3s
chore(images): Swap to eog
2025-12-23 12:41:54 +01:00

1016 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 = ''eog "$@"'';
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 = "*.tar";
run = ''piper --format=url -- tar tf "$1"'';
}
{
name = "*.md";
run = ''piper -- CLICOLOR_FORCE=1 glow -w=$w -s=dark "$1"'';
}
{
mime = "text/csv";
run = ''piper -- bat -p --color=always "$1"'';
}
];
};
};
keymap = {
mgr.keymap = [
{
on = "<Backspace>";
run = "backspace";
desc = "Delete the character before the cursor";
}
{
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 = "plugin zoxide";
desc = "Jump to a directory using zoxide";
}
{
on = ["z"];
run = "plugin 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 = "<Backspace>";
run = "backspace";
desc = "Delete the character before the cursor";
}
{
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";
}
];
};
}