Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

--print-pwd-as-result is ignored when setting cwd when starting the command #578

Open
glyh opened this issue Jan 29, 2023 · 6 comments
Open

Comments

@glyh
Copy link

glyh commented Jan 29, 2023

e.g.

xplr --print-pwd-as-result /tmp

start xplr with above command and exit, nothing will be printed

system info:

xplr 0.20.2
Linux arch 6.1.8-arch1-1 #1 SMP PREEMPT_DYNAMIC Tue, 24 Jan 2023 21:07:04 +0000 x86_64 GNU/Linux

image

I'm using xplr-git package.

@sayanarijit
Copy link
Owner

I coundn't reproduce the issue. Pressing enter gives me the expected result.

image

Pls confirm your enter isn't mapped to anything else.

~ xplr --on-load PrintAppStateAndQuit | yq ".config.modes.builtin.default.key_bindings.on_key.enter"
help: quit with result
messages:
  - PrintResultAndQuit

In case it is (intentionally), you can use :qr as an alternative.

@glyh
Copy link
Author

glyh commented Jan 29, 2023

That's weird, I can produce this even without a config. But :qr is working for me.

 xplr --on-load PrintAppStateAndQuit | yq ".config.modes.builtin.default.key_bindings.on_key.enter"
{
  "help": "quit with result",
  "messages": [
    "PrintResultAndQuit"
  ]
}

@glyh
Copy link
Author

glyh commented Jan 29, 2023

Here's the full log

bin: /usr/bin/xplr
version: 0.20.2
config:
  general:
    disable_debug_error_mode: false
    enable_mouse: false
    show_hidden: false
    read_only: false
    enable_recover_mode: false
    hide_remaps_in_help_menu: false
    enforce_bounded_index_navigation: false
    prompt:
      format: '❯ '
      style:
        fg: null
        bg: null
        add_modifiers: null
        sub_modifiers: null
    logs:
      info:
        format: INFO
        style:
          fg: LightBlue
          bg: null
          add_modifiers: null
          sub_modifiers: null
      success:
        format: SUCCESS
        style:
          fg: Green
          bg: null
          add_modifiers: null
          sub_modifiers: null
      warning:
        format: WARNING
        style:
          fg: Yellow
          bg: null
          add_modifiers: null
          sub_modifiers: null
      error:
        format: ERROR
        style:
          fg: Red
          bg: null
          add_modifiers: null
          sub_modifiers: null
    table:
      header:
        cols:
        - format: ' index'
          style:
            fg: null
            bg: null
            add_modifiers: null
            sub_modifiers: null
        - format: ╭─── path
          style:
            fg: null
            bg: null
            add_modifiers: null
            sub_modifiers: null
        - format: permissions
          style:
            fg: null
            bg: null
            add_modifiers: null
            sub_modifiers: null
        - format: size
          style:
            fg: null
            bg: null
            add_modifiers: null
            sub_modifiers: null
        - format: modified
          style:
            fg: null
            bg: null
            add_modifiers: null
            sub_modifiers: null
        style:
          fg: null
          bg: null
          add_modifiers: null
          sub_modifiers: null
        height: 1
      row:
        cols:
        - format: builtin.fmt_general_table_row_cols_0
          style:
            fg: null
            bg: null
            add_modifiers: null
            sub_modifiers: null
        - format: builtin.fmt_general_table_row_cols_1
          style:
            fg: null
            bg: null
            add_modifiers: null
            sub_modifiers: null
        - format: builtin.fmt_general_table_row_cols_2
          style:
            fg: null
            bg: null
            add_modifiers: null
            sub_modifiers: null
        - format: builtin.fmt_general_table_row_cols_3
          style:
            fg: null
            bg: null
            add_modifiers: null
            sub_modifiers: null
        - format: builtin.fmt_general_table_row_cols_4
          style:
            fg: null
            bg: null
            add_modifiers: null
            sub_modifiers: null
        style:
          fg: null
          bg: null
          add_modifiers: null
          sub_modifiers: null
        height: 0
      style:
        fg: null
        bg: null
        add_modifiers: null
        sub_modifiers: null
      tree:
      - format: ├
        style:
          fg: null
          bg: null
          add_modifiers: null
          sub_modifiers: null
      - format: ├
        style:
          fg: null
          bg: null
          add_modifiers: null
          sub_modifiers: null
      - format: ╰
        style:
          fg: null
          bg: null
          add_modifiers: null
          sub_modifiers: null
      col_spacing: 1
      col_widths:
      - Percentage: 10
      - Percentage: 50
      - Percentage: 10
      - Percentage: 10
      - Percentage: 20
    selection:
      item:
        format: builtin.fmt_general_selection_item
        style:
          fg: null
          bg: null
          add_modifiers: null
          sub_modifiers: null
    default_ui:
      prefix: '  '
      suffix: ''
      style:
        fg: null
        bg: null
        add_modifiers: null
        sub_modifiers: null
    focus_ui:
      prefix: ▸[
      suffix: ']'
      style:
        fg: null
        bg: null
        add_modifiers:
        - Bold
        sub_modifiers: null
    selection_ui:
      prefix: ' {'
      suffix: '}'
      style:
        fg: DarkGray
        bg: null
        add_modifiers:
        - CrossedOut
        sub_modifiers: null
    focus_selection_ui:
      prefix: ▸[
      suffix: ']'
      style:
        fg: null
        bg: null
        add_modifiers:
        - Bold
        - CrossedOut
        sub_modifiers: null
    sort_and_filter_ui:
      separator:
        format: ' › '
        style:
          fg: null
          bg: null
          add_modifiers:
          - Dim
          sub_modifiers: null
      default_identifier:
        format: null
        style:
          fg: null
          bg: null
          add_modifiers: null
          sub_modifiers: null
      sort_direction_identifiers:
        forward:
          format: ↓
          style:
            fg: null
            bg: null
            add_modifiers: null
            sub_modifiers: null
        reverse:
          format: ↑
          style:
            fg: null
            bg: null
            add_modifiers: null
            sub_modifiers: null
      sorter_identifiers:
        ByCanonicalSize:
          format: '[c]size'
          style:
            fg: null
            bg: null
            add_modifiers: null
            sub_modifiers: null
        BySymlinkCreated:
          format: '[s]created'
          style:
            fg: null
            bg: null
            add_modifiers: null
            sub_modifiers: null
        ByIsBroken:
          format: ⨯
          style:
            fg: null
            bg: null
            add_modifiers: null
            sub_modifiers: null
        ByCanonicalLastModified:
          format: '[c]modified'
          style:
            fg: null
            bg: null
            add_modifiers: null
            sub_modifiers: null
        BySymlinkIsReadonly:
          format: '[s]ro'
          style:
            fg: null
            bg: null
            add_modifiers: null
            sub_modifiers: null
        ByCanonicalAbsolutePath:
          format: '[c]abs'
          style:
            fg: null
            bg: null
            add_modifiers: null
            sub_modifiers: null
        ByLastModified:
          format: modified
          style:
            fg: null
            bg: null
            add_modifiers: null
            sub_modifiers: null
        ByISymlinkAbsolutePath:
          format: '[si]abs'
          style:
            fg: null
            bg: null
            add_modifiers: null
            sub_modifiers: null
        ByRelativePath:
          format: rel
          style:
            fg: null
            bg: null
            add_modifiers: null
            sub_modifiers: null
        ByExtension:
          format: ext
          style:
            fg: null
            bg: null
            add_modifiers: null
            sub_modifiers: null
        ByCanonicalIsFile:
          format: '[c]file'
          style:
            fg: null
            bg: null
            add_modifiers: null
            sub_modifiers: null
        ByMimeEssence:
          format: mime
          style:
            fg: null
            bg: null
            add_modifiers: null
            sub_modifiers: null
        BySymlinkSize:
          format: '[s]size'
          style:
            fg: null
            bg: null
            add_modifiers: null
            sub_modifiers: null
        ByIRelativePath:
          format: '[i]rel'
          style:
            fg: null
            bg: null
            add_modifiers: null
            sub_modifiers: null
        ByCanonicalIsDir:
          format: '[c]dir'
          style:
            fg: null
            bg: null
            add_modifiers: null
            sub_modifiers: null
        BySymlinkIsDir:
          format: '[s]dir'
          style:
            fg: null
            bg: null
            add_modifiers: null
            sub_modifiers: null
        ByIsDir:
          format: dir
          style:
            fg: null
            bg: null
            add_modifiers: null
            sub_modifiers: null
        ByCanonicalExtension:
          format: '[c]ext'
          style:
            fg: null
            bg: null
            add_modifiers: null
            sub_modifiers: null
        BySize:
          format: size
          style:
            fg: null
            bg: null
            add_modifiers: null
            sub_modifiers: null
        BySymlinkMimeEssence:
          format: '[s]mime'
          style:
            fg: null
            bg: null
            add_modifiers: null
            sub_modifiers: null
        ByCanonicalIsReadonly:
          format: '[c]ro'
          style:
            fg: null
            bg: null
            add_modifiers: null
            sub_modifiers: null
        ByCanonicalCreated:
          format: '[c]created'
          style:
            fg: null
            bg: null
            add_modifiers: null
            sub_modifiers: null
        BySymlinkLastModified:
          format: '[s]modified'
          style:
            fg: null
            bg: null
            add_modifiers: null
            sub_modifiers: null
        BySymlinkExtension:
          format: '[s]ext'
          style:
            fg: null
            bg: null
            add_modifiers: null
            sub_modifiers: null
        ByCreated:
          format: created
          style:
            fg: null
            bg: null
            add_modifiers: null
            sub_modifiers: null
        ByCanonicalMimeEssence:
          format: '[c]mime'
          style:
            fg: null
            bg: null
            add_modifiers: null
            sub_modifiers: null
        ByIsFile:
          format: file
          style:
            fg: null
            bg: null
            add_modifiers: null
            sub_modifiers: null
        ByIsReadonly:
          format: ro
          style:
            fg: null
            bg: null
            add_modifiers: null
            sub_modifiers: null
        BySymlinkAbsolutePath:
          format: '[s]abs'
          style:
            fg: null
            bg: null
            add_modifiers: null
            sub_modifiers: null
        ByIsSymlink:
          format: sym
          style:
            fg: null
            bg: null
            add_modifiers: null
            sub_modifiers: null
        BySymlinkIsFile:
          format: '[s]file'
          style:
            fg: null
            bg: null
            add_modifiers: null
            sub_modifiers: null
        ByICanonicalAbsolutePath:
          format: '[ci]abs'
          style:
            fg: null
            bg: null
            add_modifiers: null
            sub_modifiers: null
      filter_identifiers:
        IAbsolutePathIs:
          format: '[i]abs=='
          style:
            fg: null
            bg: null
            add_modifiers: null
            sub_modifiers: null
        IRelativePathDoesEndWith:
          format: '[i]rel=$'
          style:
            fg: null
            bg: null
            add_modifiers: null
            sub_modifiers: null
        AbsolutePathDoesMatchRegex:
          format: abs=/
          style:
            fg: null
            bg: null
            add_modifiers: null
            sub_modifiers: null
        IAbsolutePathDoesEndWith:
          format: '[i]abs=$'
          style:
            fg: null
            bg: null
            add_modifiers: null
            sub_modifiers: null
        IRelativePathDoesMatchRegex:
          format: '[i]rel=/'
          style:
            fg: null
            bg: null
            add_modifiers: null
            sub_modifiers: null
        AbsolutePathDoesNotMatchRegex:
          format: abs!/
          style:
            fg: null
            bg: null
            add_modifiers: null
            sub_modifiers: null
        IRelativePathIs:
          format: '[i]rel=='
          style:
            fg: null
            bg: null
            add_modifiers: null
            sub_modifiers: null
        AbsolutePathDoesContain:
          format: abs=~
          style:
            fg: null
            bg: null
            add_modifiers: null
            sub_modifiers: null
        IRelativePathDoesContain:
          format: '[i]rel=~'
          style:
            fg: null
            bg: null
            add_modifiers: null
            sub_modifiers: null
        IRelativePathDoesNotEndWith:
          format: '[i]rel!$'
          style:
            fg: null
            bg: null
            add_modifiers: null
            sub_modifiers: null
        IAbsolutePathDoesNotMatchRegex:
          format: '[i]abs!/'
          style:
            fg: null
            bg: null
            add_modifiers: null
            sub_modifiers: null
        AbsolutePathDoesEndWith:
          format: abs=$
          style:
            fg: null
            bg: null
            add_modifiers: null
            sub_modifiers: null
        IRelativePathDoesNotContain:
          format: '[i]rel!~'
          style:
            fg: null
            bg: null
            add_modifiers: null
            sub_modifiers: null
        AbsolutePathIs:
          format: abs==
          style:
            fg: null
            bg: null
            add_modifiers: null
            sub_modifiers: null
        RelativePathIsNot:
          format: rel!=
          style:
            fg: null
            bg: null
            add_modifiers: null
            sub_modifiers: null
        IAbsolutePathDoesNotContain:
          format: '[i]abs!~'
          style:
            fg: null
            bg: null
            add_modifiers: null
            sub_modifiers: null
        IRelativePathDoesNotStartWith:
          format: '[i]rel!^'
          style:
            fg: null
            bg: null
            add_modifiers: null
            sub_modifiers: null
        RelativePathDoesNotStartWith:
          format: rel!^
          style:
            fg: null
            bg: null
            add_modifiers: null
            sub_modifiers: null
        IRelativePathDoesNotMatchRegex:
          format: '[i]rel!/'
          style:
            fg: null
            bg: null
            add_modifiers: null
            sub_modifiers: null
        AbsolutePathDoesNotContain:
          format: abs!~
          style:
            fg: null
            bg: null
            add_modifiers: null
            sub_modifiers: null
        IAbsolutePathDoesStartWith:
          format: '[i]abs=^'
          style:
            fg: null
            bg: null
            add_modifiers: null
            sub_modifiers: null
        IRelativePathDoesStartWith:
          format: '[i]rel=^'
          style:
            fg: null
            bg: null
            add_modifiers: null
            sub_modifiers: null
        AbsolutePathDoesNotEndWith:
          format: abs!$
          style:
            fg: null
            bg: null
            add_modifiers: null
            sub_modifiers: null
        IAbsolutePathIsNot:
          format: '[i]abs!='
          style:
            fg: null
            bg: null
            add_modifiers: null
            sub_modifiers: null
        AbsolutePathDoesStartWith:
          format: abs=^
          style:
            fg: null
            bg: null
            add_modifiers: null
            sub_modifiers: null
        RelativePathIs:
          format: rel==
          style:
            fg: null
            bg: null
            add_modifiers: null
            sub_modifiers: null
        AbsolutePathDoesNotStartWith:
          format: abs!^
          style:
            fg: null
            bg: null
            add_modifiers: null
            sub_modifiers: null
        IRelativePathIsNot:
          format: '[i]rel!='
          style:
            fg: null
            bg: null
            add_modifiers: null
            sub_modifiers: null
        RelativePathDoesNotEndWith:
          format: rel!$
          style:
            fg: null
            bg: null
            add_modifiers: null
            sub_modifiers: null
        IAbsolutePathDoesNotStartWith:
          format: '[i]abs!^'
          style:
            fg: null
            bg: null
            add_modifiers: null
            sub_modifiers: null
        RelativePathDoesStartWith:
          format: rel=^
          style:
            fg: null
            bg: null
            add_modifiers: null
            sub_modifiers: null
        RelativePathDoesNotContain:
          format: rel!~
          style:
            fg: null
            bg: null
            add_modifiers: null
            sub_modifiers: null
        RelativePathDoesMatchRegex:
          format: rel=/
          style:
            fg: null
            bg: null
            add_modifiers: null
            sub_modifiers: null
        RelativePathDoesNotMatchRegex:
          format: rel!/
          style:
            fg: null
            bg: null
            add_modifiers: null
            sub_modifiers: null
        IAbsolutePathDoesContain:
          format: '[i]abs=~'
          style:
            fg: null
            bg: null
            add_modifiers: null
            sub_modifiers: null
        RelativePathDoesEndWith:
          format: rel=$
          style:
            fg: null
            bg: null
            add_modifiers: null
            sub_modifiers: null
        IAbsolutePathDoesNotEndWith:
          format: '[i]abs!$'
          style:
            fg: null
            bg: null
            add_modifiers: null
            sub_modifiers: null
        RelativePathDoesContain:
          format: rel=~
          style:
            fg: null
            bg: null
            add_modifiers: null
            sub_modifiers: null
        AbsolutePathIsNot:
          format: abs!=
          style:
            fg: null
            bg: null
            add_modifiers: null
            sub_modifiers: null
        IAbsolutePathDoesMatchRegex:
          format: '[i]abs=/'
          style:
            fg: null
            bg: null
            add_modifiers: null
            sub_modifiers: null
      search_identifier:
        format: 'search:'
        style:
          fg: null
          bg: null
          add_modifiers: null
          sub_modifiers: null
    panel_ui:
      default:
        title:
          format: null
          style:
            fg: Reset
            bg: null
            add_modifiers:
            - Bold
            sub_modifiers: null
        style:
          fg: null
          bg: null
          add_modifiers: null
          sub_modifiers: null
        borders:
        - Top
        - Right
        - Bottom
        - Left
        border_type: Rounded
        border_style:
          fg: DarkGray
          bg: null
          add_modifiers: null
          sub_modifiers: null
      table:
        title:
          format: null
          style:
            fg: null
            bg: null
            add_modifiers: null
            sub_modifiers: null
        style:
          fg: null
          bg: null
          add_modifiers: null
          sub_modifiers: null
        borders: null
        border_type: null
        border_style:
          fg: null
          bg: null
          add_modifiers: null
          sub_modifiers: null
      sort_and_filter:
        title:
          format: null
          style:
            fg: null
            bg: null
            add_modifiers: null
            sub_modifiers: null
        style:
          fg: null
          bg: null
          add_modifiers: null
          sub_modifiers: null
        borders: null
        border_type: null
        border_style:
          fg: null
          bg: null
          add_modifiers: null
          sub_modifiers: null
      selection:
        title:
          format: null
          style:
            fg: null
            bg: null
            add_modifiers: null
            sub_modifiers: null
        style:
          fg: null
          bg: null
          add_modifiers: null
          sub_modifiers: null
        borders: null
        border_type: null
        border_style:
          fg: null
          bg: null
          add_modifiers: null
          sub_modifiers: null
      input_and_logs:
        title:
          format: null
          style:
            fg: null
            bg: null
            add_modifiers: null
            sub_modifiers: null
        style:
          fg: null
          bg: null
          add_modifiers: null
          sub_modifiers: null
        borders: null
        border_type: null
        border_style:
          fg: null
          bg: null
          add_modifiers: null
          sub_modifiers: null
      help_menu:
        title:
          format: null
          style:
            fg: null
            bg: null
            add_modifiers: null
            sub_modifiers: null
        style:
          fg: null
          bg: null
          add_modifiers: null
          sub_modifiers: null
        borders: null
        border_type: null
        border_style:
          fg: null
          bg: null
          add_modifiers: null
          sub_modifiers: null
    initial_sorting:
    - sorter: ByCanonicalIsDir
      reverse: true
    - sorter: ByIRelativePath
      reverse: false
    initial_mode: default
    initial_layout: default
    start_fifo: null
    global_key_bindings:
      on_key:
        ctrl-c:
          help: null
          messages:
          - Terminate
        esc:
          help: null
          messages:
          - PopMode
      on_alphabet: null
      on_number: null
      on_alphanumeric: null
      on_special_character: null
      on_character: null
      on_navigation: null
      on_function: null
      default: null
  node_types:
    directory:
      style:
        fg: null
        bg: null
        add_modifiers: null
        sub_modifiers: null
      meta:
        icon: ð
    file:
      style:
        fg: null
        bg: null
        add_modifiers: null
        sub_modifiers: null
      meta:
        icon: ƒ
    symlink:
      style:
        fg: null
        bg: null
        add_modifiers: null
        sub_modifiers: null
      meta:
        icon: §
    mime_essence: {}
    extension: {}
    special: {}
  layouts:
    builtin:
      no_selection:
        Horizontal:
          config:
            margin: null
            horizontal_margin: null
            vertical_margin: null
            constraints:
            - Percentage: 70
            - Percentage: 30
          splits:
          - Vertical:
              config:
                margin: null
                horizontal_margin: null
                vertical_margin: null
                constraints:
                - Length: 3
                - Min: 1
                - Length: 3
              splits:
              - SortAndFilter
              - Table
              - InputAndLogs
          - HelpMenu
      default:
        Horizontal:
          config:
            margin: null
            horizontal_margin: null
            vertical_margin: null
            constraints:
            - Percentage: 70
            - Percentage: 30
          splits:
          - Vertical:
              config:
                margin: null
                horizontal_margin: null
                vertical_margin: null
                constraints:
                - Length: 3
                - Min: 1
                - Length: 3
              splits:
              - SortAndFilter
              - Table
              - InputAndLogs
          - Vertical:
              config:
                margin: null
                horizontal_margin: null
                vertical_margin: null
                constraints:
                - Percentage: 30
                - Percentage: 70
              splits:
              - Selection
              - HelpMenu
      no_help_no_selection:
        Vertical:
          config:
            margin: null
            horizontal_margin: null
            vertical_margin: null
            constraints:
            - Length: 3
            - Min: 1
            - Length: 3
          splits:
          - SortAndFilter
          - Table
          - InputAndLogs
      no_help:
        Horizontal:
          config:
            margin: null
            horizontal_margin: null
            vertical_margin: null
            constraints:
            - Percentage: 70
            - Percentage: 30
          splits:
          - Vertical:
              config:
                margin: null
                horizontal_margin: null
                vertical_margin: null
                constraints:
                - Length: 3
                - Min: 1
                - Length: 3
              splits:
              - SortAndFilter
              - Table
              - InputAndLogs
          - Selection
    custom: {}
  modes:
    builtin:
      sort:
        name: sort
        help: null
        extra_help: null
        key_bindings:
          on_key:
            '!':
              help: reverse sorters
              messages:
              - ReverseNodeSorters
              - ExplorePwdAsync
            C:
              help: by created reverse
              messages:
              - AddNodeSorter:
                  sorter: ByCreated
                  reverse: true
              - ExplorePwdAsync
            E:
              help: by canonical extension reverse
              messages:
              - AddNodeSorter:
                  sorter: ByCanonicalExtension
                  reverse: true
              - ExplorePwdAsync
            L:
              help: by last modified reverse
              messages:
              - AddNodeSorter:
                  sorter: ByLastModified
                  reverse: true
              - ExplorePwdAsync
            M:
              help: by canonical mime essence reverse
              messages:
              - AddNodeSorter:
                  sorter: ByCanonicalMimeEssence
                  reverse: true
              - ExplorePwdAsync
            N:
              help: by node type reverse
              messages:
              - AddNodeSorter:
                  sorter: ByCanonicalIsDir
                  reverse: true
              - AddNodeSorter:
                  sorter: ByCanonicalIsFile
                  reverse: true
              - AddNodeSorter:
                  sorter: ByIsSymlink
                  reverse: true
              - ExplorePwdAsync
            R:
              help: by relative path reverse
              messages:
              - AddNodeSorter:
                  sorter: ByIRelativePath
                  reverse: true
              - ExplorePwdAsync
            S:
              help: by size reverse
              messages:
              - AddNodeSorter:
                  sorter: BySize
                  reverse: true
              - ExplorePwdAsync
            backspace:
              help: remove last sorter
              messages:
              - RemoveLastNodeSorter
              - ExplorePwdAsync
            c:
              help: by created
              messages:
              - AddNodeSorter:
                  sorter: ByCreated
                  reverse: false
              - ExplorePwdAsync
            ctrl-r:
              help: reset sorters
              messages:
              - ResetNodeSorters
              - ExplorePwdAsync
            ctrl-u:
              help: clear sorters
              messages:
              - ClearNodeSorters
              - ExplorePwdAsync
            e:
              help: by canonical extension
              messages:
              - AddNodeSorter:
                  sorter: ByCanonicalExtension
                  reverse: false
              - ExplorePwdAsync
            enter:
              help: submit
              messages:
              - PopMode
            l:
              help: by last modified
              messages:
              - AddNodeSorter:
                  sorter: ByLastModified
                  reverse: false
              - ExplorePwdAsync
            m:
              help: by canonical mime essence
              messages:
              - AddNodeSorter:
                  sorter: ByCanonicalMimeEssence
                  reverse: false
              - ExplorePwdAsync
            n:
              help: by node type
              messages:
              - AddNodeSorter:
                  sorter: ByCanonicalIsDir
                  reverse: false
              - AddNodeSorter:
                  sorter: ByCanonicalIsFile
                  reverse: false
              - AddNodeSorter:
                  sorter: ByIsSymlink
                  reverse: false
              - ExplorePwdAsync
            r:
              help: by relative path
              messages:
              - AddNodeSorter:
                  sorter: ByIRelativePath
                  reverse: false
              - ExplorePwdAsync
            s:
              help: by size
              messages:
              - AddNodeSorter:
                  sorter: BySize
                  reverse: false
              - ExplorePwdAsync
          on_alphabet: null
          on_number: null
          on_alphanumeric: null
          on_special_character: null
          on_character: null
          on_navigation: null
          on_function: null
          default: null
        layout: null
        prompt: null
      number:
        name: number
        help: null
        extra_help: null
        key_bindings:
          on_key:
            down:
              help: to down
              messages:
              - FocusNextByRelativeIndexFromInput
              - PopMode
            enter:
              help: to index
              messages:
              - FocusByIndexFromInput
              - PopMode
            j:
              help: to down
              messages:
              - FocusNextByRelativeIndexFromInput
              - PopMode
            k:
              help: to up
              messages:
              - FocusPreviousByRelativeIndexFromInput
              - PopMode
            up:
              help: to up
              messages:
              - FocusPreviousByRelativeIndexFromInput
              - PopMode
          on_alphabet: null
          on_number:
            help: input
            messages:
            - UpdateInputBufferFromKey
          on_alphanumeric: null
          on_special_character: null
          on_character: null
          on_navigation:
            help: null
            messages:
            - UpdateInputBufferFromKey
          on_function: null
          default: null
        layout: null
        prompt: ':'
      create_file:
        name: create file
        help: null
        extra_help: null
        key_bindings:
          on_key:
            enter:
              help: submit
              messages:
              - BashExecSilently0: "              PTH=\"$XPLR_INPUT_BUFFER\"\n              PTH_ESC=$(printf %q \"$PTH\")\n              if [ \"$PTH\" ]; then\n                mkdir -p -- \"$(dirname $(realpath -m $PTH))\" \\\n                && touch -- \"$PTH\" \\\n                && \"$XPLR\" -m 'SetInputBuffer: \"\"' \\\n                && \"$XPLR\" -m 'LogSuccess: %q' \"$PTH_ESC created\" \\\n                && \"$XPLR\" -m 'ExplorePwd' \\\n                && \"$XPLR\" -m 'FocusPath: %q' \"$PTH\"\n              else\n                \"$XPLR\" -m PopMode\n              fi\n            "
            tab:
              help: try complete
              messages:
              - CallLuaSilently: builtin.try_complete_path
          on_alphabet: null
          on_number: null
          on_alphanumeric: null
          on_special_character: null
          on_character: null
          on_navigation: null
          on_function: null
          default:
            help: null
            messages:
            - UpdateInputBufferFromKey
        layout: null
        prompt: 'ƒ ❯ '
      rename:
        name: rename
        help: null
        extra_help: null
        key_bindings:
          on_key:
            enter:
              help: submit
              messages:
              - BashExecSilently0: "              SRC=\"${XPLR_FOCUS_PATH:?}\"\n              SRC_ESC=$(printf %q \"$SRC\")\n              TARGET=\"${XPLR_INPUT_BUFFER:?}\"\n              TARGET_ESC=$(printf %q \"$TARGET\")\n              if [ -e \"${TARGET:?}\" ]; then\n                \"$XPLR\" -m 'LogError: %q' \"$TARGET_ESC already exists\"\n              else\n                mv -- \"${SRC:?}\" \"${TARGET:?}\" \\\n                  && \"$XPLR\" -m ExplorePwd \\\n                  && \"$XPLR\" -m 'FocusPath: %q' \"$TARGET\" \\\n                  && \"$XPLR\" -m 'LogSuccess: %q' \"$SRC_ESC renamed to $TARGET_ESC\"\n              fi\n            "
              - PopMode
            tab:
              help: try complete
              messages:
              - CallLuaSilently: builtin.try_complete_path
          on_alphabet: null
          on_number: null
          on_alphanumeric: null
          on_special_character: null
          on_character: null
          on_navigation: null
          on_function: null
          default:
            help: null
            messages:
            - UpdateInputBufferFromKey
        layout: null
        prompt: null
      recover:
        name: recover
        help: null
        extra_help: null
        key_bindings:
          on_key: {}
          on_alphabet: null
          on_number: null
          on_alphanumeric: null
          on_special_character: null
          on_character: null
          on_navigation: null
          on_function: null
          default:
            help: null
            messages: []
        layout:
          CustomContent:
            title: ' recover '
            body:
              StaticParagraph:
                render: "\n  You pressed an invalid key and went into \"recover\" mode.\n  This mode saves you from performing unwanted actions.\n\n  Let's calm down, press `escape`, and try again.\n\n  To disable this mode, set `xplr.config.general.enable_recover_mode`\n  to `false` in your config file.\n          "
        prompt: null
      relative_path_does_match_regex:
        name: relative path does match regex
        help: null
        extra_help: null
        key_bindings:
          on_key:
            enter:
              help: submit
              messages:
              - PopMode
            esc:
              help: null
              messages:
              - RemoveNodeFilterFromInput: RelativePathDoesMatchRegex
              - PopMode
              - ExplorePwdAsync
          on_alphabet: null
          on_number: null
          on_alphanumeric: null
          on_special_character: null
          on_character: null
          on_navigation: null
          on_function: null
          default:
            help: null
            messages:
            - RemoveNodeFilterFromInput: RelativePathDoesMatchRegex
            - UpdateInputBufferFromKey
            - AddNodeFilterFromInput: RelativePathDoesMatchRegex
            - ExplorePwdAsync
        layout: null
        prompt: rel=/
      create_directory:
        name: create directory
        help: null
        extra_help: null
        key_bindings:
          on_key:
            enter:
              help: submit
              messages:
              - BashExecSilently0: "              PTH=\"$XPLR_INPUT_BUFFER\"\n              PTH_ESC=$(printf %q \"$PTH\")\n              if [ \"$PTH\" ]; then\n                mkdir -p -- \"$PTH\" \\\n                && \"$XPLR\" -m 'SetInputBuffer: \"\"' \\\n                && \"$XPLR\" -m ExplorePwd \\\n                && \"$XPLR\" -m 'LogSuccess: %q' \"$PTH_ESC created\" \\\n                && \"$XPLR\" -m 'FocusPath: %q' \"$PTH\"\n              else\n                \"$XPLR\" -m PopMode\n              fi\n            "
            tab:
              help: try complete
              messages:
              - CallLuaSilently: builtin.try_complete_path
          on_alphabet: null
          on_number: null
          on_alphanumeric: null
          on_special_character: null
          on_character: null
          on_navigation: null
          on_function: null
          default:
            help: null
            messages:
            - UpdateInputBufferFromKey
        layout: null
        prompt: 'ð ❯ '
      search:
        name: search
        help: null
        extra_help: null
        key_bindings:
          on_key:
            ctrl-n:
              help: down
              messages:
              - FocusNext
            ctrl-p:
              help: up
              messages:
              - FocusPrevious
            down:
              help: down
              messages:
              - FocusNext
            enter:
              help: submit
              messages:
              - AcceptSearch
              - PopMode
            esc:
              help: cancel
              messages:
              - CancelSearch
              - PopMode
            left:
              help: back
              messages:
              - Back
              - SetInputBuffer: ''
            right:
              help: enter
              messages:
              - Enter
              - SetInputBuffer: ''
            tab:
              help: toggle selection
              messages:
              - ToggleSelection
              - FocusNext
            up:
              help: up
              messages:
              - FocusPrevious
          on_alphabet: null
          on_number: null
          on_alphanumeric: null
          on_special_character: null
          on_character: null
          on_navigation: null
          on_function: null
          default:
            help: null
            messages:
            - UpdateInputBufferFromKey
            - SearchFuzzyFromInput
            - ExplorePwdAsync
        layout: null
        prompt: /
      action:
        name: action to
        help: null
        extra_help: null
        key_bindings:
          on_key:
            '!':
              help: shell
              messages:
              - PopMode
              - Call0:
                  command: /bin/fish
                  args:
                  - -i
              - ExplorePwdAsync
            c:
              help: create
              messages:
              - PopMode
              - SwitchModeBuiltin: create
            e:
              help: open in editor
              messages:
              - BashExec0: "              ${EDITOR:-vi} \"${XPLR_FOCUS_PATH:?}\"\n            "
              - PopMode
            l:
              help: logs
              messages:
              - BashExec: "              [ -z \"$PAGER\" ] && PAGER=\"less -+F\"\n              cat -- \"${XPLR_PIPE_LOGS_OUT}\" | ${PAGER:?}\n            "
              - PopMode
            m:
              help: toggle mouse
              messages:
              - PopMode
              - ToggleMouse
            q:
              help: quit options
              messages:
              - PopMode
              - SwitchModeBuiltin: quit
            s:
              help: selection operations
              messages:
              - PopMode
              - SwitchModeBuiltin: selection_ops
            v:
              help: vroot
              messages:
              - PopMode
              - SwitchModeBuiltin: vroot
          on_alphabet: null
          on_number:
            help: go to index
            messages:
            - PopMode
            - SwitchModeBuiltin: number
            - BufferInputFromKey
          on_alphanumeric: null
          on_special_character: null
          on_character: null
          on_navigation: null
          on_function: null
          default: null
        layout: HelpMenu
        prompt: null
      filter:
        name: filter
        help: null
        extra_help: null
        key_bindings:
          on_key:
            R:
              help: relative path does not match regex
              messages:
              - SwitchModeBuiltin: relative_path_does_not_match_regex
              - SetInputBuffer: ''
              - AddNodeFilterFromInput: RelativePathDoesNotMatchRegex
              - ExplorePwdAsync
            backspace:
              help: remove last filter
              messages:
              - RemoveLastNodeFilter
              - ExplorePwdAsync
            ctrl-r:
              help: reset filters
              messages:
              - ResetNodeFilters
              - ExplorePwdAsync
            ctrl-u:
              help: clear filters
              messages:
              - ClearNodeFilters
              - ExplorePwdAsync
            r:
              help: relative path does match regex
              messages:
              - SwitchModeBuiltin: relative_path_does_match_regex
              - SetInputBuffer: ''
              - AddNodeFilterFromInput: RelativePathDoesMatchRegex
              - ExplorePwdAsync
          on_alphabet: null
          on_number: null
          on_alphanumeric: null
          on_special_character: null
          on_character: null
          on_navigation: null
          on_function: null
          default: null
        layout: null
        prompt: null
      default:
        name: default
        help: null
        extra_help: null
        key_bindings:
          on_key:
            '#':
              help: null
              messages:
              - PrintAppStateAndQuit
            .:
              help: show hidden
              messages:
              - ToggleNodeFilter:
                  filter: RelativePathDoesNotStartWith
                  input: .
              - ExplorePwdAsync
            /:
              help: search
              messages:
              - PopMode
              - SwitchModeBuiltin: search
              - SetInputBuffer: ''
            ':':
              help: action
              messages:
              - PopMode
              - SwitchModeBuiltin: action
            ;:
              help: action
              messages:
              - PopMode
              - SwitchModeBuiltin: action
            '?':
              help: global help menu
              messages:
              - BashExec: "              [ -z \"$PAGER\" ] && PAGER=\"less -+F\"\n              cat -- \"${XPLR_PIPE_GLOBAL_HELP_MENU_OUT}\" | ${PAGER:?}\n            "
            G:
              help: go to bottom
              messages:
              - PopMode
              - FocusLast
            V:
              help: select/unselect all
              messages:
              - ToggleSelectAll
            X:
              help: open
              messages:
              - BashExecSilently0: "        xdg-open \"${XPLR_FOCUS_PATH:?}\"\n      "
            ctrl-a:
              help: select/unselect all
              messages:
              - ToggleSelectAll
            ctrl-d:
              help: duplicate as
              messages:
              - PopMode
              - SwitchModeBuiltin: duplicate_as
              - BashExecSilently0: "              NAME=$(basename \"${XPLR_FOCUS_PATH:?}\")\n              \"$XPLR\" -m 'SetInputBuffer: %q' \"${NAME:?}\"\n            "
            ctrl-f:
              help: search
              messages:
              - PopMode
              - SwitchModeBuiltin: search
              - SetInputBuffer: ''
            ctrl-i:
              help: next visited path
              messages:
              - NextVisitedPath
            ctrl-o:
              help: last visited path
              messages:
              - LastVisitedPath
            ctrl-r:
              help: refresh screen
              messages:
              - ClearScreen
            ctrl-u:
              help: clear selection
              messages:
              - ClearSelection
            ctrl-w:
              help: switch layout
              messages:
              - SwitchModeBuiltin: switch_layout
            d:
              help: delete
              messages:
              - PopMode
              - SwitchModeBuiltin: delete
            down:
              help: down
              messages:
              - FocusNext
            enter:
              help: quit with result
              messages:
              - PrintResultAndQuit
            f:
              help: filter
              messages:
              - PopMode
              - SwitchModeBuiltin: filter
            g:
              help: go to
              messages:
              - PopMode
              - SwitchModeBuiltin: go_to
            h:
              help: back
              messages:
              - Back
            j:
              help: down
              messages:
              - FocusNext
            k:
              help: up
              messages:
              - FocusPrevious
            l:
              help: enter
              messages:
              - Enter
            left:
              help: back
              messages:
              - Back
            page-down:
              help: scroll down
              messages:
              - ScrollDown
            page-up:
              help: scroll up
              messages:
              - ScrollUp
            q:
              help: quit
              messages:
              - Quit
            r:
              help: rename
              messages:
              - PopMode
              - SwitchModeBuiltin: rename
              - BashExecSilently0: "              NAME=$(basename \"${XPLR_FOCUS_PATH:?}\")\n              \"$XPLR\" -m 'SetInputBuffer: %q' \"${NAME:?}\"\n            "
            right:
              help: enter
              messages:
              - Enter
            s:
              help: sort
              messages:
              - PopMode
              - SwitchModeBuiltin: sort
            space:
              help: toggle selection
              messages:
              - ToggleSelection
              - FocusNext
            tab:
              help: next visited path
              messages:
              - NextVisitedPath
            up:
              help: up
              messages:
              - FocusPrevious
            v:
              help: toggle selection
              messages:
              - ToggleSelection
              - FocusNext
            '{':
              help: scroll up half
              messages:
              - ScrollUpHalf
            '}':
              help: scroll down half
              messages:
              - ScrollDownHalf
            '~':
              help: go home
              messages:
              - BashExecSilently0: "              \"$XPLR\" -m 'ChangeDirectory: %q' \"${HOME:?}\"\n            "
          on_alphabet: null
          on_number:
            help: input
            messages:
            - PopMode
            - SwitchModeBuiltin: number
            - BufferInputFromKey
          on_alphanumeric: null
          on_special_character: null
          on_character: null
          on_navigation: null
          on_function: null
          default: null
        layout: null
        prompt: null
      debug_error:
        name: debug error
        help: null
        extra_help: null
        key_bindings:
          on_key:
            enter:
              help: open logs in editor
              messages:
              - BashExec: "              cat \"${XPLR_PIPE_LOGS_OUT:?}\" | ${EDITOR:-vi} -\n            "
            q:
              help: quit
              messages:
              - Quit
          on_alphabet: null
          on_number: null
          on_alphanumeric: null
          on_special_character: null
          on_character: null
          on_navigation: null
          on_function: null
          default:
            help: null
            messages: []
        layout:
          Vertical:
            config:
              margin: null
              horizontal_margin: null
              vertical_margin: null
              constraints:
              - Min: 14
              - MinLessThanScreenHeight: 14
            splits:
            - CustomContent:
                title: debug error
                body:
                  StaticParagraph:
                    render: "\n  Some errors occurred during startup.\n  If you think this is a bug, please report it at:\n\n  https://github.com/sayanarijit/xplr/issues/new\n\n  Press `enter` to open the logs in your $EDITOR.\n  Press `escape` to ignore the errors and continue with the default config.\n\n  To disable this mode, set `xplr.config.general.disable_debug_error_mode`\n  to `true` in your config file.\n                "
            - InputAndLogs
        prompt: null
      relative_path_does_not_match_regex:
        name: relative path does not match regex
        help: null
        extra_help: null
        key_bindings:
          on_key:
            enter:
              help: submit
              messages:
              - PopMode
            esc:
              help: null
              messages:
              - RemoveNodeFilterFromInput: RelativePathDoesNotMatchRegex
              - PopMode
              - ExplorePwdAsync
          on_alphabet: null
          on_number: null
          on_alphanumeric: null
          on_special_character: null
          on_character: null
          on_navigation: null
          on_function: null
          default:
            help: null
            messages:
            - RemoveNodeFilterFromInput: RelativePathDoesNotMatchRegex
            - UpdateInputBufferFromKey
            - AddNodeFilterFromInput: RelativePathDoesNotMatchRegex
            - ExplorePwdAsync
        layout: null
        prompt: rel!/
      go_to_path:
        name: go to path
        help: null
        extra_help: null
        key_bindings:
          on_key:
            enter:
              help: submit
              messages:
              - BashExecSilently0: "              PTH=${XPLR_INPUT_BUFFER}\n              PTH_ESC=$(printf %q \"$PTH\")\n              if [ -d \"$PTH\" ]; then\n                \"$XPLR\" -m 'ChangeDirectory: %q' \"$PTH\"\n              elif [ -e \"$PTH\" ]; then\n                \"$XPLR\" -m 'FocusPath: %q' \"$PTH\"\n              else\n                \"$XPLR\" -m 'LogError: %q' \"could not find $PTH_ESC\"\n              fi\n            "
              - PopMode
            tab:
              help: try complete
              messages:
              - CallLuaSilently: builtin.try_complete_path
          on_alphabet: null
          on_number: null
          on_alphanumeric: null
          on_special_character: null
          on_character: null
          on_navigation: null
          on_function: null
          default:
            help: null
            messages:
            - UpdateInputBufferFromKey
        layout: null
        prompt: null
      selection_ops:
        name: selection ops
        help: null
        extra_help: null
        key_bindings:
          on_key:
            c:
              help: copy here
              messages:
              - BashExec0: "              (while IFS= read -r -d '' PTH; do\n                PTH_ESC=$(printf %q \"$PTH\")\n                BASENAME=$(basename -- \"$PTH\")\n                BASENAME_ESC=$(printf %q \"$BASENAME\")\n                while [ -e \"$BASENAME\" ]; do\n                  BASENAME=\"$BASENAME (copied)\"\n                  BASENAME_ESC=$(printf %q \"$BASENAME\")\n                done\n                if cp -vr -- \"${PTH:?}\" \"./${BASENAME:?}\"; then\n                  \"$XPLR\" -m 'LogSuccess: %q' \"$PTH_ESC copied to ./$BASENAME_ESC\"\n                  \"$XPLR\" -m 'UnSelectPath: %q' \"$PTH\"\n                else\n                  \"$XPLR\" -m 'LogError: %q' \"Failed to copy $PTH_ESC to ./$BASENAME_ESC\"\n                fi\n              done < \"${XPLR_PIPE_SELECTION_OUT:?}\")\n              \"$XPLR\" -m ExplorePwdAsync\n              read -p \"[enter to continue]\"\n            "
              - PopMode
            h:
              help: hardlink here
              messages:
              - BashExec0: "              (while IFS= read -r -d '' PTH; do\n                PTH_ESC=$(printf %q \"$PTH\")\n                BASENAME=$(basename -- \"$PTH\")\n                BASENAME_ESC=$(printf %q \"$BASENAME\")\n                while [ -e \"$BASENAME\" ]; do\n                  BASENAME=\"$BASENAME (hardlinked)\"\n                  BASENAME_ESC=$(printf %q \"$BASENAME\")\n                done\n                if ln -v -- \"${PTH:?}\" \"./${BASENAME:?}\"; then\n                  \"$XPLR\" -m 'LogSuccess: %q' \"$PTH_ESC hardlinked as ./$BASENAME_ESC\"\n                  \"$XPLR\" -m 'UnSelectPath: %q' \"$PTH\"\n                else\n                  \"$XPLR\" -m 'LogError: %q' \"Failed to hardlink $PTH_ESC as ./$BASENAME_ESC\"\n                fi\n              done < \"${XPLR_PIPE_SELECTION_OUT:?}\")\n              \"$XPLR\" -m ExplorePwdAsync\n              read -p \"[enter to continue]\"\n            "
              - PopMode
            l:
              help: list selection
              messages:
              - BashExec0: "              [ -z \"$PAGER\" ] && PAGER=\"less -+F\"\n\n              while IFS= read -r -d '' PTH; do\n                  echo $(printf %q \"$PTH\")\n              done < \"${XPLR_PIPE_SELECTION_OUT:?}\" | ${PAGER:?}\n            "
              - PopMode
            m:
              help: move here
              messages:
              - BashExec0: "              (while IFS= read -r -d '' PTH; do\n                PTH_ESC=$(printf %q \"$PTH\")\n                BASENAME=$(basename -- \"$PTH\")\n                BASENAME_ESC=$(printf %q \"$BASENAME\")\n                while [ -e \"$BASENAME\" ]; do\n                  BASENAME=\"$BASENAME (moved)\"\n                  BASENAME_ESC=$(printf %q \"$BASENAME\")\n                done\n                if mv -v -- \"${PTH:?}\" \"./${BASENAME:?}\"; then\n                  \"$XPLR\" -m 'LogSuccess: %q' \"$PTH_ESC moved to ./$BASENAME_ESC\"\n                  \"$XPLR\" -m 'UnSelectPath: %q' \"$PTH\"\n                else\n                  \"$XPLR\" -m 'LogError: %q' \"Failed to move $PTH_ESC to ./$BASENAME_ESC\"\n                fi\n              done < \"${XPLR_PIPE_SELECTION_OUT:?}\")\n              \"$XPLR\" -m ExplorePwdAsync\n              read -p \"[enter to continue]\"\n            "
              - PopMode
            s:
              help: softlink here
              messages:
              - BashExec0: "              (while IFS= read -r -d '' PTH; do\n                PTH_ESC=$(printf %q \"$PTH\")\n                BASENAME=$(basename -- \"$PTH\")\n                BASENAME_ESC=$(printf %q \"$BASENAME\")\n                while [ -e \"$BASENAME\" ]; do\n                  BASENAME=\"$BASENAME (softlinked)\"\n                  BASENAME_ESC=$(printf %q \"$BASENAME\")\n                done\n                if ln -sv -- \"${PTH:?}\" \"./${BASENAME:?}\"; then\n                  \"$XPLR\" -m 'LogSuccess: %q' \"$PTH_ESC softlinked as ./$BASENAME_ESC\"\n                  \"$XPLR\" -m 'UnSelectPath: %q' \"$PTH\"\n                else\n                  \"$XPLR\" -m 'LogError: %q' \"Failed to softlink $PTH_ESC as ./$BASENAME_ESC\"\n                fi\n              done < \"${XPLR_PIPE_SELECTION_OUT:?}\")\n              \"$XPLR\" -m ExplorePwdAsync\n              read -p \"[enter to continue]\"\n            "
              - PopMode
            u:
              help: clear selection
              messages:
              - ClearSelection
              - PopMode
          on_alphabet: null
          on_number: null
          on_alphanumeric: null
          on_special_character: null
          on_character: null
          on_navigation: null
          on_function: null
          default: null
        layout: HelpMenu
        prompt: null
      create:
        name: create
        help: null
        extra_help: null
        key_bindings:
          on_key:
            d:
              help: create directory
              messages:
              - PopMode
              - SwitchModeBuiltin: create_directory
              - SetInputBuffer: ''
            f:
              help: create file
              messages:
              - PopMode
              - SwitchModeBuiltin: create_file
              - SetInputBuffer: ''
          on_alphabet: null
          on_number: null
          on_alphanumeric: null
          on_special_character: null
          on_character: null
          on_navigation: null
          on_function: null
          default: null
        layout: HelpMenu
        prompt: null
      vroot:
        name: vroot
        help: null
        extra_help: null
        key_bindings:
          on_key:
            .:
              help: vroot $PWD
              messages:
              - PopMode
              - BashExecSilently0: "              \"$XPLR\" -m 'SetVroot: %q' \"${PWD:?}\"\n            "
            /:
              help: vroot /
              messages:
              - PopMode
              - SetVroot: /
            ctrl-r:
              help: reset vroot
              messages:
              - PopMode
              - ResetVroot
            ctrl-u:
              help: unset vroot
              messages:
              - PopMode
              - UnsetVroot
            v:
              help: toggle vroot
              messages:
              - PopMode
              - ToggleVroot
            '~':
              help: vroot $HOME
              messages:
              - PopMode
              - BashExecSilently0: "              \"$XPLR\" -m 'SetVroot: %q' \"${HOME:?}\"\n            "
          on_alphabet: null
          on_number: null
          on_alphanumeric: null
          on_special_character: null
          on_character: null
          on_navigation: null
          on_function: null
          default: null
        layout: HelpMenu
        prompt: null
      switch_layout:
        name: switch layout
        help: null
        extra_help: null
        key_bindings:
          on_key:
            '1':
              help: default
              messages:
              - SwitchLayoutBuiltin: default
              - PopMode
            '2':
              help: no help menu
              messages:
              - SwitchLayoutBuiltin: no_help
              - PopMode
            '3':
              help: no selection panel
              messages:
              - SwitchLayoutBuiltin: no_selection
              - PopMode
            '4':
              help: no help or selection
              messages:
              - SwitchLayoutBuiltin: no_help_no_selection
              - PopMode
          on_alphabet: null
          on_number: null
          on_alphanumeric: null
          on_special_character: null
          on_character: null
          on_navigation: null
          on_function: null
          default: null
        layout: HelpMenu
        prompt: null
      quit:
        name: quit
        help: null
        extra_help: null
        key_bindings:
          on_key:
            enter:
              help: just quit
              messages:
              - Quit
            f:
              help: quit printing focus
              messages:
              - PrintFocusPathAndQuit
            p:
              help: quit printing pwd
              messages:
              - PrintPwdAndQuit
            r:
              help: quit printing result
              messages:
              - PrintResultAndQuit
            s:
              help: quit printing selection
              messages:
              - PrintSelectionAndQuit
          on_alphabet: null
          on_number: null
          on_alphanumeric: null
          on_special_character: null
          on_character: null
          on_navigation: null
          on_function: null
          default: null
        layout: HelpMenu
        prompt: null
      delete:
        name: delete
        help: null
        extra_help: null
        key_bindings:
          on_key:
            D:
              help: force delete
              messages:
              - BashExec0: "              (while IFS= read -r -d '' PTH; do\n                PTH_ESC=$(printf %q \"$PTH\")\n                if rm -rfv -- \"${PTH:?}\"; then\n                  \"$XPLR\" -m 'LogSuccess: %q' \"$PTH_ESC deleted\"\n                else\n                  \"$XPLR\" -m 'LogError: %q' \"Failed to delete $PTH_ESC\"\n                fi\n              done < \"${XPLR_PIPE_RESULT_OUT:?}\")\n              \"$XPLR\" -m ExplorePwdAsync\n              read -p \"[enter to continue]\"\n            "
              - PopMode
            d:
              help: delete
              messages:
              - BashExec0: "              (while IFS= read -r -d '' PTH; do\n                PTH_ESC=$(printf %q \"$PTH\")\n                if [ -d \"$PTH\" ] && [ ! -L \"$PTH\" ]; then\n                  if rmdir -v -- \"${PTH:?}\"; then\n                    \"$XPLR\" -m 'LogSuccess: %q' \"$PTH_ESC deleted\"\n                  else\n                    \"$XPLR\" -m 'LogError: %q' \"Failed to delete $PTH_ESC\"\n                  fi\n                else\n                  if rm -v -- \"${PTH:?}\"; then\n                    \"$XPLR\" -m 'LogSuccess: %q' \"$PTH_ESC deleted\"\n                  else\n                    \"$XPLR\" -m 'LogError: %q' \"Failed to delete $PTH_ESC\"\n                  fi\n                fi\n              done < \"${XPLR_PIPE_RESULT_OUT:?}\")\n              \"$XPLR\" -m ExplorePwdAsync\n              read -p \"[enter to continue]\"\n            "
              - PopMode
          on_alphabet: null
          on_number: null
          on_alphanumeric: null
          on_special_character: null
          on_character: null
          on_navigation: null
          on_function: null
          default: null
        layout: HelpMenu
        prompt: null
      go_to:
        name: go to
        help: null
        extra_help: null
        key_bindings:
          on_key:
            f:
              help: follow symlink
              messages:
              - FollowSymlink
              - PopMode
            g:
              help: top
              messages:
              - FocusFirst
              - PopMode
            i:
              help: initial $PWD
              messages:
              - PopMode
              - BashExecSilently0: "              \"$XPLR\" -m 'ChangeDirectory: %q' \"${XPLR_INITIAL_PWD:?}\"\n            "
            p:
              help: path
              messages:
              - PopMode
              - SwitchModeBuiltin: go_to_path
              - SetInputBuffer: ''
            x:
              help: open in gui
              messages:
              - BashExecSilently0: "              if [ -z \"$OPENER\" ]; then\n                if command -v xdg-open; then\n                  OPENER=xdg-open\n                elif command -v open; then\n                  OPENER=open\n                else\n                  \"$XPLR\" -m 'LogError: %q' \"$OPENER not found\"\n                  exit 1\n                fi\n              fi\n              (while IFS= read -r -d '' PTH; do\n                $OPENER \"${PTH:?}\" > /dev/null 2>&1\n              done < \"${XPLR_PIPE_RESULT_OUT:?}\")\n            "
              - ClearScreen
              - PopMode
          on_alphabet: null
          on_number: null
          on_alphanumeric: null
          on_special_character: null
          on_character: null
          on_navigation: null
          on_function: null
          default: null
        layout: HelpMenu
        prompt: null
      duplicate_as:
        name: duplicate as
        help: null
        extra_help: null
        key_bindings:
          on_key:
            enter:
              help: submit
              messages:
              - BashExecSilently0: "              SRC=\"${XPLR_FOCUS_PATH:?}\"\n              SRC_ESC=$(printf %q \"$SRC\")\n              TARGET=\"${XPLR_INPUT_BUFFER:?}\"\n              TARGET_ESC=$(printf %q \"$TARGET\")\n              if [ -e \"${TARGET:?}\" ]; then\n                \"$XPLR\" -m 'LogError: %q' \"$TARGET_ESC already exists\"\n              else\n                cp -r -- \"${SRC:?}\" \"${TARGET:?}\" \\\n                  && \"$XPLR\" -m ExplorePwd \\\n                  && \"$XPLR\" -m 'FocusPath: %q' \"$TARGET_ESC\" \\\n                  && \"$XPLR\" -m 'LogSuccess: %q' \"$SRC_ESC duplicated as $TARGET_ESC\"\n              fi\n            "
              - PopMode
            tab:
              help: try complete
              messages:
              - CallLuaSilently: builtin.try_complete_path
          on_alphabet: null
          on_number: null
          on_alphanumeric: null
          on_special_character: null
          on_character: null
          on_navigation: null
          on_function: null
          default:
            help: null
            messages:
            - UpdateInputBufferFromKey
        layout: null
        prompt: null
    custom: {}
hooks:
  on_load: []
  on_directory_change: []
  on_focus_change: []
  on_mode_switch: []
  on_layout_switch: []
vroot: null
initial_vroot: null
pwd: /home/lyh
initial_pwd: /home/lyh
directory_buffer:
  parent: /home/lyh
  nodes:
  - parent: /home/lyh
    relative_path: Binaries
    absolute_path: /home/lyh/Binaries
    extension: ''
    is_dir: false
    is_file: false
    is_symlink: true
    is_broken: false
    is_readonly: false
    mime_essence: ''
    size: 34
    human_size: 34 B
    permissions:
      user_read: true
      user_write: true
      user_execute: true
      group_read: true
      group_write: true
      group_execute: true
      other_read: true
      other_write: true
      other_execute: true
      sticky: false
      setgid: false
      setuid: false
    created: 1674953608996615692
    last_modified: 1674953608996615692
    uid: 1000
    gid: 1000
    canonical:
      absolute_path: /home/lyh/Documents/dotfiles/bin
      extension: ''
      is_dir: true
      is_file: false
      is_readonly: false
      mime_essence: inode/directory
      size: 128
      human_size: 128 B
      created: 1672289740868433220
      last_modified: 1672860271691351599
      uid: 1000
      gid: 1000
    symlink:
      absolute_path: /home/lyh/Documents/dotfiles/bin
      extension: ''
      is_dir: true
      is_file: false
      is_readonly: false
      mime_essence: inode/directory
      size: 128
      human_size: 128 B
      created: 1672289740868433220
      last_modified: 1672860271691351599
      uid: 1000
      gid: 1000
  - parent: /home/lyh
    relative_path: Desktop
    absolute_path: /home/lyh/Desktop
    extension: ''
    is_dir: true
    is_file: false
    is_symlink: false
    is_broken: false
    is_readonly: false
    mime_essence: inode/directory
    size: 0
    human_size: 0 B
    permissions:
      user_read: true
      user_write: true
      user_execute: true
      group_read: true
      group_write: false
      group_execute: true
      other_read: true
      other_write: false
      other_execute: true
      sticky: false
      setgid: false
      setuid: false
    created: 1672211091238311846
    last_modified: 1672718626153626690
    uid: 1000
    gid: 1000
    canonical:
      absolute_path: /home/lyh/Desktop
      extension: ''
      is_dir: true
      is_file: false
      is_readonly: false
      mime_essence: inode/directory
      size: 0
      human_size: 0 B
      created: 1672211091238311846
      last_modified: 1672718626153626690
      uid: 1000
      gid: 1000
    symlink: null
  - parent: /home/lyh
    relative_path: Documents
    absolute_path: /home/lyh/Documents
    extension: ''
    is_dir: true
    is_file: false
    is_symlink: false
    is_broken: false
    is_readonly: false
    mime_essence: inode/directory
    size: 66
    human_size: 66 B
    permissions:
      user_read: true
      user_write: true
      user_execute: true
      group_read: true
      group_write: false
      group_execute: true
      other_read: true
      other_write: false
      other_execute: true
      sticky: false
      setgid: false
      setuid: false
    created: 1672210182983757254
    last_modified: 1674443626742564764
    uid: 1000
    gid: 1000
    canonical:
      absolute_path: /home/lyh/Documents
      extension: ''
      is_dir: true
      is_file: false
      is_readonly: false
      mime_essence: inode/directory
      size: 66
      human_size: 66 B
      created: 1672210182983757254
      last_modified: 1674443626742564764
      uid: 1000
      gid: 1000
    symlink: null
  - parent: /home/lyh
    relative_path: Downloads
    absolute_path: /home/lyh/Downloads
    extension: ''
    is_dir: true
    is_file: false
    is_symlink: false
    is_broken: false
    is_readonly: false
    mime_essence: inode/directory
    size: 1466
    human_size: 1.47 kB
    permissions:
      user_read: true
      user_write: true
      user_execute: true
      group_read: true
      group_write: false
      group_execute: true
      other_read: true
      other_write: false
      other_execute: true
      sticky: false
      setgid: false
      setuid: false
    created: 1672211091220312072
    last_modified: 1674890437005070930
    uid: 1000
    gid: 1000
    canonical:
      absolute_path: /home/lyh/Downloads
      extension: ''
      is_dir: true
      is_file: false
      is_readonly: false
      mime_essence: inode/directory
      size: 1466
      human_size: 1.47 kB
      created: 1672211091220312072
      last_modified: 1674890437005070930
      uid: 1000
      gid: 1000
    symlink: null
  - parent: /home/lyh
    relative_path: Musics
    absolute_path: /home/lyh/Musics
    extension: ''
    is_dir: true
    is_file: false
    is_symlink: false
    is_broken: false
    is_readonly: false
    mime_essence: inode/directory
    size: 6838
    human_size: 6.84 kB
    permissions:
      user_read: true
      user_write: true
      user_execute: true
      group_read: true
      group_write: false
      group_execute: true
      other_read: true
      other_write: false
      other_execute: true
      sticky: false
      setgid: false
      setuid: false
    created: 1673678137874589769
    last_modified: 1674021998857300737
    uid: 1000
    gid: 1000
    canonical:
      absolute_path: /home/lyh/Musics
      extension: ''
      is_dir: true
      is_file: false
      is_readonly: false
      mime_essence: inode/directory
      size: 6838
      human_size: 6.84 kB
      created: 1673678137874589769
      last_modified: 1674021998857300737
      uid: 1000
      gid: 1000
    symlink: null
  - parent: /home/lyh
    relative_path: Pictures
    absolute_path: /home/lyh/Pictures
    extension: ''
    is_dir: true
    is_file: false
    is_symlink: false
    is_broken: false
    is_readonly: false
    mime_essence: inode/directory
    size: 20
    human_size: 20 B
    permissions:
      user_read: true
      user_write: true
      user_execute: true
      group_read: true
      group_write: false
      group_execute: true
      other_read: true
      other_write: false
      other_execute: true
      sticky: false
      setgid: false
      setuid: false
    created: 1672209401678136908
    last_modified: 1674953623359870208
    uid: 1000
    gid: 1000
    canonical:
      absolute_path: /home/lyh/Pictures
      extension: ''
      is_dir: true
      is_file: false
      is_readonly: false
      mime_essence: inode/directory
      size: 20
      human_size: 20 B
      created: 1672209401678136908
      last_modified: 1674953623359870208
      uid: 1000
      gid: 1000
    symlink: null
  - parent: /home/lyh
    relative_path: Public
    absolute_path: /home/lyh/Public
    extension: ''
    is_dir: true
    is_file: false
    is_symlink: false
    is_broken: false
    is_readonly: false
    mime_essence: inode/directory
    size: 0
    human_size: 0 B
    permissions:
      user_read: true
      user_write: true
      user_execute: true
      group_read: true
      group_write: false
      group_execute: true
      other_read: true
      other_write: false
      other_execute: true
      sticky: false
      setgid: false
      setuid: false
    created: 1674085515468912388
    last_modified: 1674085515468912388
    uid: 1000
    gid: 1000
    canonical:
      absolute_path: /home/lyh/Public
      extension: ''
      is_dir: true
      is_file: false
      is_readonly: false
      mime_essence: inode/directory
      size: 0
      human_size: 0 B
      created: 1674085515468912388
      last_modified: 1674085515468912388
      uid: 1000
      gid: 1000
    symlink: null
  - parent: /home/lyh
    relative_path: Qemu
    absolute_path: /home/lyh/Qemu
    extension: ''
    is_dir: true
    is_file: false
    is_symlink: false
    is_broken: false
    is_readonly: false
    mime_essence: inode/directory
    size: 16
    human_size: 16 B
    permissions:
      user_read: true
      user_write: true
      user_execute: true
      group_read: true
      group_write: false
      group_execute: true
      other_read: true
      other_write: false
      other_execute: true
      sticky: false
      setgid: false
      setuid: false
    created: 1674805678512243428
    last_modified: 1674805936610827126
    uid: 1000
    gid: 1000
    canonical:
      absolute_path: /home/lyh/Qemu
      extension: ''
      is_dir: true
      is_file: false
      is_readonly: false
      mime_essence: inode/directory
      size: 16
      human_size: 16 B
      created: 1674805678512243428
      last_modified: 1674805936610827126
      uid: 1000
      gid: 1000
    symlink: null
  - parent: /home/lyh
    relative_path: Templates
    absolute_path: /home/lyh/Templates
    extension: ''
    is_dir: true
    is_file: false
    is_symlink: false
    is_broken: false
    is_readonly: false
    mime_essence: inode/directory
    size: 0
    human_size: 0 B
    permissions:
      user_read: true
      user_write: true
      user_execute: true
      group_read: true
      group_write: false
      group_execute: true
      other_read: true
      other_write: false
      other_execute: true
      sticky: false
      setgid: false
      setuid: false
    created: 1674085515468912388
    last_modified: 1674085515468912388
    uid: 1000
    gid: 1000
    canonical:
      absolute_path: /home/lyh/Templates
      extension: ''
      is_dir: true
      is_file: false
      is_readonly: false
      mime_essence: inode/directory
      size: 0
      human_size: 0 B
      created: 1674085515468912388
      last_modified: 1674085515468912388
      uid: 1000
      gid: 1000
    symlink: null
  - parent: /home/lyh
    relative_path: Videos
    absolute_path: /home/lyh/Videos
    extension: ''
    is_dir: true
    is_file: false
    is_symlink: false
    is_broken: false
    is_readonly: false
    mime_essence: inode/directory
    size: 0
    human_size: 0 B
    permissions:
      user_read: true
      user_write: true
      user_execute: true
      group_read: true
      group_write: false
      group_execute: true
      other_read: true
      other_write: false
      other_execute: true
      sticky: false
      setgid: false
      setuid: false
    created: 1674085515468912388
    last_modified: 1674085515468912388
    uid: 1000
    gid: 1000
    canonical:
      absolute_path: /home/lyh/Videos
      extension: ''
      is_dir: true
      is_file: false
      is_readonly: false
      mime_essence: inode/directory
      size: 0
      human_size: 0 B
      created: 1674085515468912388
      last_modified: 1674085515468912388
      uid: 1000
      gid: 1000
    symlink: null
  - parent: /home/lyh
    relative_path: VirtualBox VMs
    absolute_path: /home/lyh/VirtualBox VMs
    extension: ''
    is_dir: true
    is_file: false
    is_symlink: false
    is_broken: false
    is_readonly: false
    mime_essence: inode/directory
    size: 88
    human_size: 88 B
    permissions:
      user_read: true
      user_write: true
      user_execute: true
      group_read: false
      group_write: false
      group_execute: false
      other_read: false
      other_write: false
      other_execute: false
      sticky: false
      setgid: false
      setuid: false
    created: 1674152398027338439
    last_modified: 1674806458601296064
    uid: 1000
    gid: 1000
    canonical:
      absolute_path: /home/lyh/VirtualBox VMs
      extension: ''
      is_dir: true
      is_file: false
      is_readonly: false
      mime_essence: inode/directory
      size: 88
      human_size: 88 B
      created: 1674152398027338439
      last_modified: 1674806458601296064
      uid: 1000
      gid: 1000
    symlink: null
  total: 11
  focus: 0
last_focus:
  /: home
  /home/lyh: Binaries
  /home: lyh
selection: []
msg_out:
- Refresh
mode:
  name: default
  help: null
  extra_help: null
  key_bindings:
    on_key:
      '#':
        help: null
        messages:
        - PrintAppStateAndQuit
      .:
        help: show hidden
        messages:
        - ToggleNodeFilter:
            filter: RelativePathDoesNotStartWith
            input: .
        - ExplorePwdAsync
      /:
        help: search
        messages:
        - PopMode
        - SwitchModeBuiltin: search
        - SetInputBuffer: ''
      ':':
        help: action
        messages:
        - PopMode
        - SwitchModeBuiltin: action
      ;:
        help: action
        messages:
        - PopMode
        - SwitchModeBuiltin: action
      '?':
        help: global help menu
        messages:
        - BashExec: "              [ -z \"$PAGER\" ] && PAGER=\"less -+F\"\n              cat -- \"${XPLR_PIPE_GLOBAL_HELP_MENU_OUT}\" | ${PAGER:?}\n            "
      G:
        help: go to bottom
        messages:
        - PopMode
        - FocusLast
      V:
        help: select/unselect all
        messages:
        - ToggleSelectAll
      X:
        help: open
        messages:
        - BashExecSilently0: "        xdg-open \"${XPLR_FOCUS_PATH:?}\"\n      "
      ctrl-a:
        help: select/unselect all
        messages:
        - ToggleSelectAll
      ctrl-c:
        help: null
        messages:
        - Terminate
      ctrl-d:
        help: duplicate as
        messages:
        - PopMode
        - SwitchModeBuiltin: duplicate_as
        - BashExecSilently0: "              NAME=$(basename \"${XPLR_FOCUS_PATH:?}\")\n              \"$XPLR\" -m 'SetInputBuffer: %q' \"${NAME:?}\"\n            "
      ctrl-f:
        help: search
        messages:
        - PopMode
        - SwitchModeBuiltin: search
        - SetInputBuffer: ''
      ctrl-i:
        help: next visited path
        messages:
        - NextVisitedPath
      ctrl-o:
        help: last visited path
        messages:
        - LastVisitedPath
      ctrl-r:
        help: refresh screen
        messages:
        - ClearScreen
      ctrl-u:
        help: clear selection
        messages:
        - ClearSelection
      ctrl-w:
        help: switch layout
        messages:
        - SwitchModeBuiltin: switch_layout
      d:
        help: delete
        messages:
        - PopMode
        - SwitchModeBuiltin: delete
      down:
        help: down
        messages:
        - FocusNext
      enter:
        help: quit with result
        messages:
        - PrintResultAndQuit
      esc:
        help: null
        messages:
        - PopMode
      f:
        help: filter
        messages:
        - PopMode
        - SwitchModeBuiltin: filter
      g:
        help: go to
        messages:
        - PopMode
        - SwitchModeBuiltin: go_to
      h:
        help: back
        messages:
        - Back
      j:
        help: down
        messages:
        - FocusNext
      k:
        help: up
        messages:
        - FocusPrevious
      l:
        help: enter
        messages:
        - Enter
      left:
        help: back
        messages:
        - Back
      page-down:
        help: scroll down
        messages:
        - ScrollDown
      page-up:
        help: scroll up
        messages:
        - ScrollUp
      q:
        help: quit
        messages:
        - Quit
      r:
        help: rename
        messages:
        - PopMode
        - SwitchModeBuiltin: rename
        - BashExecSilently0: "              NAME=$(basename \"${XPLR_FOCUS_PATH:?}\")\n              \"$XPLR\" -m 'SetInputBuffer: %q' \"${NAME:?}\"\n            "
      right:
        help: enter
        messages:
        - Enter
      s:
        help: sort
        messages:
        - PopMode
        - SwitchModeBuiltin: sort
      space:
        help: toggle selection
        messages:
        - ToggleSelection
        - FocusNext
      tab:
        help: next visited path
        messages:
        - NextVisitedPath
      up:
        help: up
        messages:
        - FocusPrevious
      v:
        help: toggle selection
        messages:
        - ToggleSelection
        - FocusNext
      '{':
        help: scroll up half
        messages:
        - ScrollUpHalf
      '}':
        help: scroll down half
        messages:
        - ScrollDownHalf
      '~':
        help: go home
        messages:
        - BashExecSilently0: "              \"$XPLR\" -m 'ChangeDirectory: %q' \"${HOME:?}\"\n            "
    on_alphabet: null
    on_number:
      help: input
      messages:
      - PopMode
      - SwitchModeBuiltin: number
      - BufferInputFromKey
    on_alphanumeric: null
    on_special_character: null
    on_character: null
    on_navigation: null
    on_function: null
    default: null
  layout: null
  prompt: null
layout:
  Horizontal:
    config:
      margin: null
      horizontal_margin: null
      vertical_margin: null
      constraints:
      - Percentage: 70
      - Percentage: 30
    splits:
    - Vertical:
        config:
          margin: null
          horizontal_margin: null
          vertical_margin: null
          constraints:
          - Length: 3
          - Min: 1
          - Length: 3
        splits:
        - SortAndFilter
        - Table
        - InputAndLogs
    - Vertical:
        config:
          margin: null
          horizontal_margin: null
          vertical_margin: null
          constraints:
          - Percentage: 30
          - Percentage: 70
        splits:
        - Selection
        - HelpMenu
input:
  buffer: null
  prompt: '❯ '
pid: 177883
session_path: /run/user/1000/xplr/session/177883
pipe:
  path: /run/user/1000/xplr/session/177883/pipe
  msg_in: /run/user/1000/xplr/session/177883/pipe/msg_in
  selection_out: /run/user/1000/xplr/session/177883/pipe/selection_out
  result_out: /run/user/1000/xplr/session/177883/pipe/result_out
  directory_nodes_out: /run/user/1000/xplr/session/177883/pipe/directory_nodes_out
  global_help_menu_out: /run/user/1000/xplr/session/177883/pipe/global_help_menu_out
  logs_out: /run/user/1000/xplr/session/177883/pipe/logs_out
  history_out: /run/user/1000/xplr/session/177883/pipe/history_out
explorer_config:
  filters:
  - filter: RelativePathDoesNotStartWith
    input: .
  sorters:
  - sorter: ByCanonicalIsDir
    reverse: true
  - sorter: ByIRelativePath
    reverse: false
  searcher: null
logs: []
logs_hidden: false
history:
  loc: 0
  paths:
  - /home/lyh/Binaries
last_modes: []
hostname: arch

@sayanarijit
Copy link
Owner

Does enter work in docker?

docker run -w / -it --rm ubuntu sh -uec '
  apt-get update -y
  apt-get install -y wget tar vim less
  wget https://github.com/sayanarijit/xplr/releases/latest/download/xplr-linux.tar.gz
  tar -xzvf xplr-linux.tar.gz
  ./xplr --print-pwd-as-result
'

@glyh
Copy link
Author

glyh commented Jan 29, 2023

Yeah it does.

@sayanarijit
Copy link
Owner

Another weird thing is that xplr-git package is outdated. See https://aur.archlinux.org/packages/xplr-git. Not sure why it's showing v0.20.2.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants