version: v0.5.0 general: show_hidden: false read_only: false initial_sorting: - sorter: ByCanonicalIsDir reverse: true - sorter: ByIRelativePath reverse: false prompt: format: "> " cursor: format: █ logs: info: format: "INFO" style: fg: LightBlue success: format: "SUCCESS" style: fg: Green error: format: "ERROR" style: fg: Red table: header: cols: - format: ' index' style: fg: null bg: null add_modifier: bits: 0 sub_modifier: bits: 0 - format: '╭─ path' - format: size - format: type style: fg: null bg: null add_modifier: bits: 1 sub_modifier: bits: 0 height: 1 row: cols: - format: '{{#if isBeforeFocus}}-{{else}} {{/if}}{{{relativeIndex}}}│{{{index}}}' - format: > {{{tree}}}{{{prefix}}}{{{meta.icon}}}{{#if (ne meta.icon "")}} {{/if}}{{{relativePath}}}{{#if isDir}}/{{/if}}{{{suffix}}} {{#if isSymlink}}-> {{#if isBroken}}×{{else}}{{{symlink.absolutePath}}}{{/if}}{{#if symlink.isDir}}/{{/if}}{{/if}} style: fg: null bg: null add_modifier: bits: 0 sub_modifier: bits: 0 - format: '{{humansize size}}' - format: '{{#if isSymlink}}{{{symlink.mimeEssence}}}{{else}}{{{mimeEssence}}}{{/if}}' style: fg: null bg: null add_modifier: bits: 0 sub_modifier: bits: 0 height: 0 style: fg: null bg: null add_modifier: bits: 0 sub_modifier: bits: 0 tree: - format: ├─ style: fg: null bg: null add_modifier: bits: 0 sub_modifier: bits: 0 - format: ├─ - format: ╰─ col_spacing: 3 col_widths: - percentage: 10 - percentage: 50 - percentage: 20 - percentage: 20 default_ui: prefix: ' ' suffix: '' style: fg: null bg: null add_modifier: bits: 0 sub_modifier: bits: 0 focus_ui: prefix: ▸[ suffix: ']' style: fg: Blue bg: null add_modifier: bits: 1 sub_modifier: bits: 0 selection_ui: prefix: ' {' suffix: '}' style: fg: LightGreen bg: null add_modifier: bits: 1 sub_modifier: bits: 0 sort_and_filter_ui: separator: format: " › " sort_direction_identifiers: forward: format: "↓" reverse: format: "↑" sorter_identifiers: ByRelativePath: format: "rel" ByIRelativePath: format: "[i]rel" ByExtension: format: "ext" ByIsDir: format: "dir" ByIsFile: format: "file" ByIsSymlink: format: "sym" ByIsBroken: format: "⨯" ByIsReadonly: format: "ro" ByMimeEssence: format: "mime" BySize: format: "size" ByCanonicalAbsolutePath: format: "[c]abs" ByICanonicalAbsolutePath: format: "[ci]abs" ByCanonicalExtension: format: "[c]ext" ByCanonicalIsDir: format: "[c]dir" ByCanonicalIsFile: format: "[c]file" ByCanonicalIsReadonly: format: "[c]ro" ByCanonicalMimeEssence: format: "[c]mime" ByCanonicalSize: format: "[c]size" BySymlinkAbsolutePath: format: "[s]abs" ByISymlinkAbsolutePath: format: "[si]abs" BySymlinkExtension: format: "[s]ext" BySymlinkIsDir: format: "[s]dir" BySymlinkIsFile: format: "[s]file" BySymlinkIsReadonly: format: "[s]ro" BySymlinkMimeEssence: format: "[s]mime" BySymlinkSize: format: "[s]size" filter_identifiers: RelativePathIs: format: "rel==" IRelativePathIs: format: "[i]rel==" RelativePathIsNot: format: "rel!=" IRelativePathIsNot: format: "[i]rel!=" RelativePathDoesStartWith: format: "rel=^" IRelativePathDoesStartWith: format: "[i]rel=^" RelativePathDoesNotStartWith: format: "rel!^" IRelativePathDoesNotStartWith: format: "[i]rel!^" RelativePathDoesContain: format: "rel=~" IRelativePathDoesContain: format: "[i]rel=~" RelativePathDoesNotContain: format: "rel!~" IRelativePathDoesNotContain: format: "[i]rel!~" RelativePathDoesEndWith: format: "rel=$" IRelativePathDoesEndWith: format: "[i]rel=$" RelativePathDoesNotEndWith: format: "rel!$" IRelativePathDoesNotEndWith: format: "[i]rel!$" AbsolutePathIs: format: "abs==" IAbsolutePathIs: format: "[i]abs==" AbsolutePathIsNot: format: "abs!=" IAbsolutePathIsNot: format: "[i]abs!=" AbsolutePathDoesStartWith: format: "abs=^" IAbsolutePathDoesStartWith: format: "[i]abs=^" AbsolutePathDoesNotStartWith: format: "abs!^" IAbsolutePathDoesNotStartWith: format: "[i]abs!^" AbsolutePathDoesContain: format: "abs=~" IAbsolutePathDoesContain: format: "[i]abs=~" AbsolutePathDoesNotContain: format: "abs!~" IAbsolutePathDoesNotContain: format: "[i]abs!~" AbsolutePathDoesEndWith: format: "abs=$" IAbsolutePathDoesEndWith: format: "[i]abs=$" AbsolutePathDoesNotEndWith: format: "abs!$" IAbsolutePathDoesNotEndWith: format: "[i]abs!$" node_types: directory: style: fg: Cyan bg: null add_modifier: bits: 1 sub_modifier: bits: 0 meta: icon: ð file: style: fg: null bg: null add_modifier: bits: 0 sub_modifier: bits: 0 meta: icon: ƒ symlink: style: fg: Magenta bg: null add_modifier: bits: 4 sub_modifier: bits: 0 meta: icon: § mime_essence: {} extension: {} special: {} modes: builtin: selection_ops: name: selection ops help: null extra_help: null key_bindings: remaps: {} on_key: c: help: copy here messages: - BashExec: | (while IFS= read -r line; do if cp -vr "${line:?}" ./; then echo "LogSuccess: $line copied to $PWD" >> "${XPLR_PIPE_MSG_IN:?}" else echo "LogError: Failed to copy $line to $PWD" >> "${XPLR_PIPE_MSG_IN:?}" fi done < "${XPLR_PIPE_SELECTION_OUT:?}") echo Explore >> "${XPLR_PIPE_MSG_IN:?}" echo ClearSelection >> "${XPLR_PIPE_MSG_IN:?}" read -p "[enter to continue]" - SwitchMode: default m: help: move here messages: - BashExec: | (while IFS= read -r line; do if mv -v "${line:?}" ./; then echo "LogSuccess: $line moved to $PWD" >> "${XPLR_PIPE_MSG_IN:?}" else echo "LogError: Failed to move $line to $PWD" >> "${XPLR_PIPE_MSG_IN:?}" fi done < "${XPLR_PIPE_SELECTION_OUT:?}") echo Explore >> "${XPLR_PIPE_MSG_IN:?}" read -p "[enter to continue]" - SwitchMode: default ctrl-c: help: terminate messages: - Terminate default: messages: - SwitchMode: default create_file: name: create file help: null extra_help: null key_bindings: remaps: {} on_key: enter: help: create file messages: - BashExecSilently: | PTH="${XPLR_INPUT_BUFFER:?}" if touch "${PTH:?}"; then echo Explore >> "${XPLR_PIPE_MSG_IN:?}" echo "LogSuccess: $PTH created" >> "${XPLR_PIPE_MSG_IN:?}" echo "FocusPath: $PTH" >> "${XPLR_PIPE_MSG_IN:?}" else echo "LogError: Failed to create $PTH" >> "${XPLR_PIPE_MSG_IN:?}" echo Refresh >> "${XPLR_PIPE_MSG_IN:?}" fi - SwitchMode: default backspace: help: remove last character messages: - RemoveInputBufferLastCharacter ctrl-w: help: remove last word messages: - RemoveInputBufferLastWord ctrl-u: help: remove line messages: - SetInputBuffer: "" esc: help: cancel messages: - SwitchMode: default ctrl-c: help: terminate messages: - Terminate default: messages: - BufferInputFromKey create_directory: name: create directory help: null extra_help: null key_bindings: remaps: {} on_key: enter: help: create directory messages: - BashExecSilently: | PTH="${XPLR_INPUT_BUFFER:?}" if mkdir -p "${PTH:?}"; then echo Explore >> "${XPLR_PIPE_MSG_IN:?}" echo "LogSuccess: $PTH created" >> "${XPLR_PIPE_MSG_IN:?}" echo "FocusPath: $PTH" >> "${XPLR_PIPE_MSG_IN:?}" else echo "LogError: Failed to create $PTH" >> "${XPLR_PIPE_MSG_IN:?}" echo Refresh >> "${XPLR_PIPE_MSG_IN:?}" fi - SwitchMode: default backspace: help: remove last character messages: - RemoveInputBufferLastCharacter ctrl-w: help: remove last word messages: - RemoveInputBufferLastWord ctrl-u: help: remove line messages: - SetInputBuffer: "" esc: help: cancel messages: - SwitchMode: default ctrl-c: help: terminate messages: - Terminate default: messages: - BufferInputFromKey create: name: create help: null extra_help: null key_bindings: remaps: {} on_key: ctrl-c: help: terminate messages: - Terminate d: help: create directory messages: - SwitchMode: create directory - SetInputBuffer: '' esc: help: cancel messages: - SwitchMode: default f: help: create file messages: - SwitchMode: create file - SetInputBuffer: '' on_alphabet: null on_number: null on_special_character: null default: help: null messages: - SwitchMode: default rename: name: rename help: null extra_help: null key_bindings: remaps: {} on_key: enter: help: rename messages: - BashExecSilently: | SRC="${XPLR_FOCUS_PATH:?}" TARGET="${XPLR_INPUT_BUFFER:?}" if mv -v "${SRC:?}" "${TARGET:?}"; then echo Explore >> "${XPLR_PIPE_MSG_IN:?}" echo "LogSuccess: $SRC renamed to $TARGET" >> "${XPLR_PIPE_MSG_IN:?}" echo "FocusPath: $TARGET" >> "${XPLR_PIPE_MSG_IN:?}" else echo "LogError: Failed to rename $SRC to $TARGET" >> "${XPLR_PIPE_MSG_IN:?}" fi - SwitchMode: default backspace: help: remove last character messages: - RemoveInputBufferLastCharacter ctrl-w: help: remove last word messages: - RemoveInputBufferLastWord ctrl-u: help: remove line messages: - SetInputBuffer: "" esc: help: cancel messages: - SwitchMode: default ctrl-c: help: terminate messages: - Terminate default: messages: - BufferInputFromKey filter: name: filter key_bindings: on_key: ctrl-x: help: remove last filter messages: - RemoveLastNodeFilter - SetInputBuffer: "" - Explore backspace: help: remove last character messages: - RemoveNodeFilterFromInput: IRelativePathDoesContain - RemoveInputBufferLastCharacter - AddNodeFilterFromInput: IRelativePathDoesContain - Explore ctrl-w: help: remove last word messages: - RemoveNodeFilterFromInput: IRelativePathDoesContain - RemoveInputBufferLastWord - AddNodeFilterFromInput: IRelativePathDoesContain - Explore ctrl-u: help: remove line messages: - RemoveNodeFilterFromInput: IRelativePathDoesContain - SetInputBuffer: "" - AddNodeFilterFromInput: IRelativePathDoesContain - Explore ctrl-r: help: reset filters messages: - SetInputBuffer: "" - ResetNodeFilters - Explore ctrl-l: help: clear filters messages: - SetInputBuffer: "" - ClearNodeFilters - Explore enter: help: apply filter messages: - SwitchMode: default esc: help: cancel messages: - RemoveNodeFilterFromInput: IRelativePathDoesContain - SwitchMode: default - Explore ctrl-c: help: terminate messages: - Terminate default: help: null messages: - RemoveNodeFilterFromInput: IRelativePathDoesContain - BufferInputFromKey - AddNodeFilterFromInput: IRelativePathDoesContain - Explore sort: name: sort help: null extra_help: null key_bindings: remaps: {} on_key: backspace: help: remove last sorter messages: - RemoveLastNodeSorter - Explore '!': help: reverse sorters messages: - ReverseNodeSorters - Explore ctrl-r: help: reset sorters messages: - ResetNodeSorters - Explore ctrl-l: help: clear sorters messages: - ClearNodeSorters - Explore r: help: by relative path messages: - AddNodeSorter: sorter: ByIRelativePath - Explore R: help: by relative path reverse messages: - AddNodeSorter: sorter: ByIRelativePath reverse: true - Explore e: help: by canonical extension messages: - AddNodeSorter: sorter: ByCanonicalExtension - Explore E: help: by canonical extension reverse messages: - AddNodeSorter: sorter: ByCanonicalExtension reverse: true - Explore n: help: by node type messages: - AddNodeSorter: sorter: ByCanonicalIsDir - AddNodeSorter: sorter: ByCanonicalIsFile - AddNodeSorter: sorter: ByIsSymlink - Explore N: help: by node type reverse messages: - AddNodeSorter: sorter: ByCanonicalIsDir reverse: true - AddNodeSorter: sorter: ByCanonicalIsFile reverse: true - AddNodeSorter: sorter: ByIsSymlink reverse: true - Explore m: help: by canonical mime essence messages: - AddNodeSorter: sorter: ByCanonicalMimeEssence - Explore M: help: by canonical mime essence reverse messages: - AddNodeSorter: sorter: ByCanonicalMimeEssence reverse: true - Explore s: help: by size messages: - AddNodeSorter: sorter: BySize - Explore S: help: by size reverse messages: - AddNodeSorter: sorter: BySize reverse: true - Explore ctrl-c: help: terminate messages: - Terminate default: messages: - SwitchMode: default default: name: default help: null extra_help: null key_bindings: remaps: /: ctrl-f h: left j: down k: up l: right v: space V: ctrl-a tab: ctrl-i on_key: '#': help: null messages: - PrintAppStateAndQuit s: help: sort messages: - SwitchMode: sort f: help: filter messages: - SwitchMode: filter - SetInputBuffer: '' - Explore .: help: show hidden messages: - ToggleNodeFilter: filter: RelativePathDoesNotStartWith input: . - Explore ':': help: action messages: - SwitchMode: action '?': help: global help menu messages: - BashExec: | ${PAGER:-less} "${XPLR_PIPE_GLOBAL_HELP_MENU_OUT}" '~': help: go home messages: - BashExecSilently: | echo "ChangeDirectory: ${HOME:?}" >> "${XPLR_PIPE_MSG_IN:?}" G: help: go to bottom messages: - FocusLast ctrl-c: help: terminate messages: - Terminate ctrl-f: help: search messages: - SwitchMode: search - SetInputBuffer: '' - Explore d: help: delete messages: - SwitchMode: delete down: help: down messages: - FocusNext enter: help: quit with result messages: - PrintResultAndQuit g: help: go to messages: - SwitchMode: go to left: help: back messages: - Back r: help: rename messages: - SwitchMode: rename - BashExecSilently: | echo "SetInputBuffer: $(basename ${XPLR_FOCUS_PATH})" >> "${XPLR_PIPE_MSG_IN:?}" right: help: enter messages: - Enter space: help: toggle selection messages: - ToggleSelection - FocusNext ctrl-a: help: select all messages: - ToggleSelectAll up: help: up messages: - FocusPrevious ctrl-o: help: last visited path messages: - LastVisitedPath ctrl-i: # Actually means tab help: next visited path messages: - NextVisitedPath ctrl-l: help: clear selection messages: - ClearSelection ctrl-r: help: refresh screen messages: - ClearScreen - Refresh q: help: quit messages: - Quit on_alphabet: null on_number: help: input messages: - ResetInputBuffer - SwitchMode: number - BufferInputFromKey on_special_character: null default: help: null messages: - SwitchMode: default go_to: name: go to help: null extra_help: null key_bindings: remaps: {} on_key: ctrl-c: help: terminate messages: - Terminate g: help: top messages: - FocusFirst - SwitchMode: default x: help: open in gui messages: - BashExecSilently: | OPENER="$(which xdg-open)" ${OPENER:-open} "${XPLR_FOCUS_PATH:?}" &> /dev/null - SwitchMode: default on_alphabet: null on_number: null on_special_character: null default: help: null messages: - SwitchMode: default number: name: number help: null extra_help: null key_bindings: remaps: j: down k: up on_key: backspace: help: remove last character messages: - RemoveInputBufferLastCharacter ctrl-w: help: remove last word messages: - RemoveInputBufferLastWord ctrl-u: help: remove line messages: - SetInputBuffer: "" ctrl-c: help: terminate messages: - Terminate down: help: to down messages: - FocusNextByRelativeIndexFromInput - SwitchMode: default enter: help: to index messages: - FocusByIndexFromInput - SwitchMode: default up: help: to up messages: - FocusPreviousByRelativeIndexFromInput - SwitchMode: default on_alphabet: null on_number: help: input messages: - BufferInputFromKey on_special_character: null default: help: null messages: - SwitchMode: default delete: name: delete help: null extra_help: null key_bindings: remaps: {} on_key: d: help: delete messages: - BashExec: | (while IFS= read -r line; do if [ -d "$line" ]; then if rmdir -v "${line:?}"; then echo "LogSuccess: $line deleted" >> "${XPLR_PIPE_MSG_IN:?}" else echo "LogError: Failed to delete $line" >> "${XPLR_PIPE_MSG_IN:?}" fi else if rm -v "${line:?}"; then echo "FocusNext" >> "${XPLR_PIPE_MSG_IN:?}" echo "LogSuccess: $line deleted" >> "${XPLR_PIPE_MSG_IN:?}" else echo "LogError: Failed to delete $line" >> "${XPLR_PIPE_MSG_IN:?}" fi fi done < "${XPLR_PIPE_RESULT_OUT:?}") echo Explore >> "${XPLR_PIPE_MSG_IN:?}" read -p "[enter to continue]" - SwitchMode: default D: help: force delete messages: - BashExec: | (while IFS= read -r line; do if rm -rfv "${line:?}"; then echo "FocusNext" >> "${XPLR_PIPE_MSG_IN:?}" echo "LogSuccess: $line deleted" >> "${XPLR_PIPE_MSG_IN:?}" else echo "LogError: Failed to delete $line" >> "${XPLR_PIPE_MSG_IN:?}" fi done < "${XPLR_PIPE_RESULT_OUT:?}") echo Explore >> "${XPLR_PIPE_MSG_IN:?}" read -p "[enter to continue]" - SwitchMode: default - Explore ctrl-c: help: terminate messages: - Terminate default: messages: - SwitchMode: default action: name: action to help: null extra_help: null key_bindings: remaps: {} on_number: help: go to index messages: - ResetInputBuffer - SwitchMode: number - BufferInputFromKey on_key: "!": help: shell messages: - Call: command: bash - Explore - SwitchMode: default c: help: create messages: - SwitchMode: create e: help: open in editor messages: - BashExec: | ${EDITOR:-vi} "${XPLR_FOCUS_PATH:?}" - SwitchMode: default s: help: selection operations messages: - SwitchMode: selection ops l: help: logs messages: - BashExec: | cat "${XPLR_PIPE_LOGS_OUT}" read -p "[enter to continue]" - SwitchMode: default ctrl-c: help: terminate messages: - Terminate default: messages: - SwitchMode: default search: name: search help: null extra_help: null key_bindings: remaps: {} on_key: backspace: help: remove last character messages: - RemoveNodeFilterFromInput: IRelativePathDoesContain - RemoveInputBufferLastCharacter - AddNodeFilterFromInput: IRelativePathDoesContain - Explore ctrl-w: help: remove last word messages: - RemoveNodeFilterFromInput: IRelativePathDoesContain - RemoveInputBufferLastWord - AddNodeFilterFromInput: IRelativePathDoesContain - Explore ctrl-u: help: remove line messages: - RemoveNodeFilterFromInput: IRelativePathDoesContain - SetInputBuffer: "" - AddNodeFilterFromInput: IRelativePathDoesContain - Explore ctrl-c: help: terminate messages: - Terminate down: help: down messages: - FocusNext enter: help: focus messages: - RemoveNodeFilterFromInput: IRelativePathDoesContain - SwitchMode: default - Explore esc: help: cancel messages: - RemoveNodeFilterFromInput: IRelativePathDoesContain - SwitchMode: default - Explore left: help: back messages: - RemoveNodeFilterFromInput: IRelativePathDoesContain - Back - SetInputBuffer: '' - Explore right: help: enter messages: - RemoveNodeFilterFromInput: IRelativePathDoesContain - Enter - SetInputBuffer: '' - Explore up: help: up messages: - FocusPrevious on_alphabet: null on_number: null on_special_character: null default: help: null messages: - RemoveNodeFilterFromInput: IRelativePathDoesContain - BufferInputFromKey - AddNodeFilterFromInput: IRelativePathDoesContain - Explore custom: {}