version: v0.9.0 layouts: custom: {} builtin: default: Horizontal: config: horizontal_margin: 0 vertical_margin: 0 constraints: - Percentage: 70 - Percentage: 30 splits: - Vertical: config: margin: 0 constraints: - Length: 3 - Min: 1 - Length: 3 splits: - SortAndFilter: ~ - Table: ~ - InputAndLogs: ~ - Vertical: config: constraints: - Percentage: 50 - Percentage: 50 splits: - Selection: ~ - HelpMenu: ~ no_help: Horizontal: config: constraints: - Percentage: 70 - Percentage: 30 splits: - Vertical: config: constraints: - Length: 3 - Min: 1 - Length: 3 splits: - SortAndFilter: ~ - Table: ~ - InputAndLogs: ~ - Selection: ~ no_selection: Horizontal: config: constraints: - Percentage: 70 - Percentage: 30 splits: - Vertical: config: constraints: - Length: 3 - Min: 1 - Length: 3 splits: - SortAndFilter: ~ - Table: ~ - InputAndLogs: ~ - HelpMenu: ~ no_help_no_selection: Vertical: config: constraints: - Length: 3 - Min: 1 - Length: 3 splits: - SortAndFilter: ~ - Table: ~ - InputAndLogs: ~ general: show_hidden: false read_only: false initial_layout: default initial_mode: default 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 warning: format: "WARNING" style: fg: Yellow error: format: "ERROR" style: fg: Red table: header: cols: - format: ' index' style: fg: null bg: null add_modifiers: null sub_modifiers: null - format: '╭──── path' - format: size - format: type style: add_modifiers: [Bold] 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}} - format: '{{#unless isDir}}{{humansize size}}{{/unless}}' - format: '{{#if isSymlink}}{{{symlink.mimeEssence}}}{{else}}{{{mimeEssence}}}{{/if}}' height: 0 tree: - format: ├─ - format: ├─ - format: ╰─ col_spacing: 0 col_widths: - Percentage: 10 - Percentage: 50 - Percentage: 20 - Percentage: 20 default_ui: prefix: ' ' suffix: '' focus_ui: prefix: ▸[ suffix: ']' style: fg: Blue add_modifiers: [Bold] selection_ui: prefix: ' {' suffix: '}' style: fg: LightGreen add_modifiers: [Bold] panel_ui: default: borders: [Top, Right, Bottom, Left] sort_and_filter_ui: separator: format: " › " style: add_modifiers: [Dim] default_identifier: style: add_modifiers: [Bold] 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 add_modifiers: [Bold] meta: icon: ð file: meta: icon: ƒ symlink: style: fg: Magenta add_modifiers: [Italic] 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 ExplorePwdAsync >> "${XPLR_PIPE_MSG_IN:?}" echo ClearSelection >> "${XPLR_PIPE_MSG_IN:?}" read -p "[enter to continue]" - PopMode - Refresh 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 ExplorePwdAsync >> "${XPLR_PIPE_MSG_IN:?}" read -p "[enter to continue]" - PopMode - Refresh ctrl-c: help: terminate messages: - Terminate esc: help: cancel messages: - PopMode - Refresh 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:?}" touch -- "${PTH:?}" \ && echo LogSuccess: $PTH created >> "${XPLR_PIPE_MSG_IN:?}" \ && echo ExplorePwd >> "${XPLR_PIPE_MSG_IN:?}" \ && echo FocusByFileName: "'"$PTH"'" >> "${XPLR_PIPE_MSG_IN:?}" - SetInputBuffer: "" 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: - PopMode - Refresh 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:?}" mkdir -p -- "${PTH:?}" \ && echo ExplorePwd >> "${XPLR_PIPE_MSG_IN:?}" \ && echo LogSuccess: $PTH created >> "${XPLR_PIPE_MSG_IN:?}" \ && echo FocusByFileName: "'"$PTH"'" >> "${XPLR_PIPE_MSG_IN:?}" - SetInputBuffer: "" 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: - PopMode - Refresh 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: - PopMode - SwitchModeBuiltin: create directory - SetInputBuffer: '' f: help: create file messages: - PopMode - SwitchModeBuiltin: create file - SetInputBuffer: '' esc: help: cancel messages: - PopMode - Refresh 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:?}" mv -- "${SRC:?}" "${TARGET:?}" \ && echo ExplorePwd >> "${XPLR_PIPE_MSG_IN:?}" \ && echo FocusByFileName: "'"$TARGET"'" >> "${XPLR_PIPE_MSG_IN:?}" \ && echo LogSuccess: $SRC renamed to $TARGET >> "${XPLR_PIPE_MSG_IN:?}" - PopMode - Refresh 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: - PopMode - Refresh ctrl-c: help: terminate messages: - Terminate default: messages: - BufferInputFromKey relative_path_does_not_contain: name: relative path does not contain key_bindings: on_key: backspace: help: remove last character messages: - RemoveNodeFilterFromInput: IRelativePathDoesNotContain - RemoveInputBufferLastCharacter - AddNodeFilterFromInput: IRelativePathDoesNotContain - ExplorePwdAsync ctrl-w: help: remove last word messages: - RemoveNodeFilterFromInput: IRelativePathDoesNotContain - RemoveInputBufferLastWord - AddNodeFilterFromInput: IRelativePathDoesNotContain - ExplorePwdAsync ctrl-u: help: remove line messages: - RemoveNodeFilterFromInput: IRelativePathDoesNotContain - SetInputBuffer: "" - AddNodeFilterFromInput: IRelativePathDoesNotContain - ExplorePwdAsync enter: help: apply filter messages: - PopMode - Refresh esc: help: cancel messages: - RemoveNodeFilterFromInput: IRelativePathDoesNotContain - PopMode - ExplorePwdAsync ctrl-c: help: terminate messages: - Terminate default: messages: - RemoveNodeFilterFromInput: IRelativePathDoesNotContain - BufferInputFromKey - AddNodeFilterFromInput: IRelativePathDoesNotContain - ExplorePwdAsync relative_path_does_contain: name: relative path does contain key_bindings: on_key: backspace: help: remove last character messages: - RemoveNodeFilterFromInput: IRelativePathDoesContain - RemoveInputBufferLastCharacter - AddNodeFilterFromInput: IRelativePathDoesContain - ExplorePwdAsync ctrl-w: help: remove last word messages: - RemoveNodeFilterFromInput: IRelativePathDoesContain - RemoveInputBufferLastWord - AddNodeFilterFromInput: IRelativePathDoesContain - ExplorePwdAsync ctrl-u: help: remove line messages: - RemoveNodeFilterFromInput: IRelativePathDoesContain - SetInputBuffer: "" - AddNodeFilterFromInput: IRelativePathDoesContain - ExplorePwdAsync enter: help: apply filter messages: - PopMode - Refresh esc: help: cancel messages: - RemoveNodeFilterFromInput: IRelativePathDoesContain - PopMode - ExplorePwdAsync - Refresh ctrl-c: help: terminate messages: - Terminate default: help: null messages: - RemoveNodeFilterFromInput: IRelativePathDoesContain - BufferInputFromKey - AddNodeFilterFromInput: IRelativePathDoesContain - ExplorePwdAsync filter: name: filter key_bindings: remaps: esc: enter on_key: backspace: help: remove last filter messages: - RemoveLastNodeFilter - ExplorePwdAsync r: help: relative does contain messages: - SwitchModeBuiltin: relative_path_does_contain - SetInputBuffer: "" - AddNodeFilterFromInput: IRelativePathDoesContain - ExplorePwdAsync R: help: relative does not contain messages: - SwitchModeBuiltin: relative_path_does_not_contain - SetInputBuffer: "" - AddNodeFilterFromInput: IRelativePathDoesNotContain - ExplorePwdAsync ctrl-r: help: reset filters messages: - ResetNodeFilters - ExplorePwdAsync ctrl-u: help: clear filters messages: - ClearNodeFilters - ExplorePwdAsync ctrl-c: help: terminate messages: - Terminate enter: help: done messages: - PopMode - Refresh sort: name: sort help: null extra_help: null key_bindings: remaps: esc: enter on_key: backspace: help: remove last sorter messages: - RemoveLastNodeSorter - ExplorePwdAsync '!': help: reverse sorters messages: - ReverseNodeSorters - ExplorePwdAsync ctrl-r: help: reset sorters messages: - ResetNodeSorters - ExplorePwdAsync ctrl-u: help: clear sorters messages: - ClearNodeSorters - ExplorePwdAsync r: help: by relative path messages: - AddNodeSorter: sorter: ByIRelativePath - ExplorePwdAsync R: help: by relative path reverse messages: - AddNodeSorter: sorter: ByIRelativePath reverse: true - ExplorePwdAsync e: help: by canonical extension messages: - AddNodeSorter: sorter: ByCanonicalExtension - ExplorePwdAsync E: help: by canonical extension reverse messages: - AddNodeSorter: sorter: ByCanonicalExtension reverse: true - ExplorePwdAsync n: help: by node type messages: - AddNodeSorter: sorter: ByCanonicalIsDir - AddNodeSorter: sorter: ByCanonicalIsFile - AddNodeSorter: sorter: ByIsSymlink - ExplorePwdAsync N: help: by node type reverse messages: - AddNodeSorter: sorter: ByCanonicalIsDir reverse: true - AddNodeSorter: sorter: ByCanonicalIsFile reverse: true - AddNodeSorter: sorter: ByIsSymlink reverse: true - ExplorePwdAsync m: help: by canonical mime essence messages: - AddNodeSorter: sorter: ByCanonicalMimeEssence - ExplorePwdAsync M: help: by canonical mime essence reverse messages: - AddNodeSorter: sorter: ByCanonicalMimeEssence reverse: true - ExplorePwdAsync s: help: by size messages: - AddNodeSorter: sorter: BySize - ExplorePwdAsync S: help: by size reverse messages: - AddNodeSorter: sorter: BySize reverse: true - ExplorePwdAsync ctrl-c: help: terminate messages: - Terminate enter: help: done messages: - PopMode - Refresh 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: - PopMode - SwitchModeBuiltin: sort - Refresh f: help: filter messages: - PopMode - SwitchModeBuiltin: filter - Refresh .: help: show hidden messages: - ToggleNodeFilter: filter: RelativePathDoesNotStartWith input: . - ExplorePwdAsync ':': help: action messages: - PopMode - SwitchModeBuiltin: action - Refresh '?': help: global help menu messages: - BashExec: | cat -- "${XPLR_PIPE_GLOBAL_HELP_MENU_OUT}" | ${PAGER:-less} '~': 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: - PopMode - SwitchModeBuiltin: search - SetInputBuffer: '' - ExplorePwdAsync ctrl-w: help: switch layout messages: - SwitchModeBuiltin: switch_layout d: help: delete messages: - PopMode - SwitchModeBuiltin: delete - Refresh down: help: down messages: - FocusNext enter: help: quit with result messages: - PrintResultAndQuit g: help: go to messages: - PopMode - SwitchModeBuiltin: go to - Refresh left: help: back messages: - Back r: help: rename messages: - PopMode - SwitchModeBuiltin: rename - BashExecSilently: | echo SetInputBuffer: "'"$(basename "${XPLR_FOCUS_PATH}")"'" >> "${XPLR_PIPE_MSG_IN:?}" - Refresh right: help: enter messages: - Enter space: help: toggle selection messages: - ToggleSelection - FocusNext ctrl-a: help: select/unselect 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-u: help: clear selection messages: - ClearSelection ctrl-r: help: refresh screen messages: - ClearScreen - Refresh q: help: quit messages: - Quit esc: messages: [] on_number: help: input messages: - PopMode - SwitchModeBuiltin: number - BufferInputFromKey reckless: name: reckless key_bindings: on_key: esc: help: escape messages: - PopMode - Refresh ctrl-c: help: terminate messages: - Terminate 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 - PopMode - Refresh f: help: follow symlink messages: - FollowSymlink - PopMode - Refresh x: help: open in gui messages: - BashExecSilently: | if [ -z "$OPENER" ]; then if command -v xdg-open; then OPENER=xdg-open elif command -v open; then OPENER=open else echo 'LogError: $OPENER not found' >> "${XPLR_PIPE_MSG_IN:?}" exit 1 fi fi (while IFS= read -r line; do $OPENER "${line:?}" &> /dev/null & done < "${XPLR_PIPE_RESULT_OUT:?}") - ClearScreen - PopMode - Refresh esc: help: cancel messages: - PopMode - Refresh 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 - PopMode - Refresh enter: help: to index messages: - FocusByIndexFromInput - PopMode - Refresh up: help: to up messages: - FocusPreviousByRelativeIndexFromInput - PopMode - Refresh esc: help: cancel messages: - PopMode - Refresh on_number: help: input messages: - BufferInputFromKey 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:?}" echo FocusNext >> "${XPLR_PIPE_MSG_IN:?}" else echo LogError: Failed to delete $line >> "${XPLR_PIPE_MSG_IN:?}" fi else if rm -v -- "${line:?}"; then 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 ExplorePwdAsync >> "${XPLR_PIPE_MSG_IN:?}" read -p "[enter to continue]" - PopMode - Refresh D: help: force delete messages: - BashExec: | (while IFS= read -r line; do if rm -rfv -- "${line:?}"; then echo LogSuccess: $line deleted >> "${XPLR_PIPE_MSG_IN:?}" echo FocusNext >> "${XPLR_PIPE_MSG_IN:?}" else echo LogError: Failed to delete $line >> "${XPLR_PIPE_MSG_IN:?}" fi done < "${XPLR_PIPE_RESULT_OUT:?}") echo ExplorePwd >> "${XPLR_PIPE_MSG_IN:?}" read -p "[enter to continue]" - PopMode - Refresh - ExplorePwdAsync ctrl-c: help: terminate messages: - Terminate esc: help: cancel messages: - PopMode - Refresh action: name: action to help: null extra_help: null key_bindings: remaps: {} on_number: help: go to index messages: - PopMode - SwitchModeBuiltin: number - BufferInputFromKey on_key: "!": help: shell messages: - Call: command: bash args: - "-i" - ExplorePwdAsync - PopMode - Refresh c: help: create messages: - PopMode - SwitchModeBuiltin: create - Refresh e: help: open in editor messages: - BashExec: | (while IFS= read -r line; do ${EDITOR:-vi} "${line:?}" done < "${XPLR_PIPE_RESULT_OUT:?}") - PopMode - Refresh s: help: selection operations messages: - PopMode - SwitchModeBuiltin: selection_ops - Refresh l: help: logs messages: - BashExec: | cat -- "${XPLR_PIPE_LOGS_OUT}" | ${PAGER:-less} - PopMode - Refresh ctrl-c: help: terminate messages: - Terminate esc: help: cancel messages: - PopMode - Refresh search: name: search help: null extra_help: null key_bindings: remaps: ctrl-n: down ctrl-p: up esc: enter on_key: tab: help: toggle selection messages: - ToggleSelection - FocusNext backspace: help: remove last character messages: - RemoveNodeFilterFromInput: IRelativePathDoesContain - RemoveInputBufferLastCharacter - AddNodeFilterFromInput: IRelativePathDoesContain - ExplorePwdAsync ctrl-w: help: remove last word messages: - RemoveNodeFilterFromInput: IRelativePathDoesContain - RemoveInputBufferLastWord - AddNodeFilterFromInput: IRelativePathDoesContain - ExplorePwdAsync ctrl-u: help: remove line messages: - RemoveNodeFilterFromInput: IRelativePathDoesContain - SetInputBuffer: "" - AddNodeFilterFromInput: IRelativePathDoesContain - ExplorePwdAsync ctrl-c: help: terminate messages: - Terminate down: help: down messages: - FocusNext enter: help: focus messages: - RemoveNodeFilterFromInput: IRelativePathDoesContain - PopMode - ExplorePwdAsync - Refresh left: help: back messages: - RemoveNodeFilterFromInput: IRelativePathDoesContain - Back - SetInputBuffer: '' - ExplorePwdAsync right: help: enter messages: - RemoveNodeFilterFromInput: IRelativePathDoesContain - Enter - SetInputBuffer: '' - ExplorePwdAsync up: help: up messages: - FocusPrevious default: messages: - RemoveNodeFilterFromInput: IRelativePathDoesContain - BufferInputFromKey - AddNodeFilterFromInput: IRelativePathDoesContain - ExplorePwdAsync switch_layout: name: switch layout key_bindings: on_key: 1: help: default messages: - SwitchLayoutBuiltin: default - PopMode - Refresh 2: help: no help menu messages: - SwitchLayoutBuiltin: no_help - PopMode - Refresh 3: help: no selection panel messages: - SwitchLayoutBuiltin: no_selection - PopMode - Refresh 4: help: no help or selection messages: - SwitchLayoutBuiltin: no_help_no_selection - PopMode - Refresh ctrl-c: help: terminate messages: - Terminate esc: help: cancel messages: - PopMode - Refresh custom: {}