{ lib, config, ... }: { # 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 = [ "" ]; 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 = [ "" ]; run = "close"; desc = "Close the current tab or quit if it is last tab"; } { on = [ "" ]; 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 = [ "" ]; run = "arrow -50%"; desc = "Move cursor up half page"; } { on = [ "" ]; run = "arrow 50%"; desc = "Move cursor down half page"; } { on = [ "" ]; run = "arrow -100%"; desc = "Move cursor up one page"; } { on = [ "" ]; 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 = [ "" ]; run = "peek -5"; desc = "Peek up 5 units in the preview"; } { on = [ "" ]; run = "peek 5"; desc = "Peek down 5 units in the preview"; } { on = [ "" ]; run = "arrow -1"; desc = "Move cursor up"; } { on = [ "" ]; run = "arrow 1"; desc = "Move cursor down"; } { on = [ "" ]; run = "leave"; desc = "Go back to the parent directory"; } { on = [ "" ]; 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 = [ "" ]; run = "select_all --state=true"; desc = "Select all files"; } { on = [ "" ]; 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 = [ "" ]; run = "open"; desc = "Open the selected files"; } { on = [ "" ]; 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 = [ "" "f" "g>" ]; run = "search fd"; desc = "Search files by name using fd"; } { on = [ "" "f" "G>" ]; run = "search rg"; desc = "Search files by content using ripgrep"; } { on = [ "" ]; 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" "" ]; run = "cd --interactive"; desc = "Go to a directory interactively"; } # Help { on = [ "~" ]; run = "help"; desc = "Open help"; } ]; tasks.keymap = [ { on = [ "" ]; run = "close"; desc = "Hide the task manager"; } { on = [ "" ]; 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 = [ "" ]; run = "arrow -1"; desc = "Move cursor up"; } { on = [ "" ]; run = "arrow 1"; desc = "Move cursor down"; } { on = [ "" ]; run = "inspect"; desc = "Inspect the task"; } { on = [ "x" ]; run = "cancel"; desc = "Cancel the task"; } { on = [ "~" ]; run = "help"; desc = "Open help"; } ]; select.keymap = [ { on = [ "" ]; run = "close"; desc = "Cancel selection"; } { on = [ "" ]; run = "close"; desc = "Cancel selection"; } { on = [ "" ]; 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 = [ "" ]; run = "arrow -1"; desc = "Move cursor up"; } { on = [ "" ]; run = "arrow 1"; desc = "Move cursor down"; } { on = [ "~" ]; run = "help"; desc = "Open help"; } ]; input.keymap = [ { on = [ "" ]; run = "close"; desc = "Cancel input"; } { on = [ "" ]; run = "close --submit"; desc = "Submit the input"; } { on = [ "" ]; 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 = [ "" ]; run = "move -1"; desc = "Move cursor left"; } { on = [ "" ]; 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 = [ "" ]; run = "redo"; desc = "Redo the last operation"; } # Help { on = [ "~" ]; run = "help"; desc = "Open help"; } ]; help.keymap = [ { on = [ "" ]; run = "escape"; desc = "Clear the filter or hide the help"; } { on = [ "q" ]; run = "close"; desc = "Exit the process"; } { on = [ "" ]; 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 = [ "" ]; run = "arrow -1"; desc = "Move cursor up"; } { on = [ "" ]; run = "arrow 1"; desc = "Move cursor down"; } # Filtering { on = [ "/" ]; run = "filter"; desc = "Apply a filter for the help items"; } ]; }; }