YaLTeR / wl-clipboard-rs

A safe Rust crate for working with the Wayland clipboard.
Apache License 2.0
223 stars 16 forks source link

Can't copy large file #33

Closed glyh closed 1 year ago

glyh commented 1 year ago

I have a log file that is 84kB, I can't copy it to clipboard, but wl-clipboard is working.


$ cat log | wl-copy
cat: write error: Broken pipe

$ wl-copy -V
wl-copy 0.7.0
YaLTeR commented 1 year ago

Hmm, which Wayland compositor are you using? And could you run cat log | env WAYLAND_DEBUG=1 wl-copy and attach the output here?

YaLTeR commented 1 year ago

Also, does the regular wl-clipboard work?

glyh commented 1 year ago

Also, does the regular wl-clipboard work?

I'm using sway. wl-clipboard is working. I'm going to reproduce later

glyh commented 1 year ago
error log ``` [1675014502.317808] -> wl_display@1.get_registry(2) [1675014502.317847] -> wl_display@1.sync(3) [1675014502.320159] <- wl_display@1.delete_id(3) [1675014502.320201] <- wl_registry@2.global(1, "wl_shm", 1) [1675014502.320242] <- wl_registry@2.global(2, "wl_drm", 2) [1675014502.320272] <- wl_registry@2.global(3, "zwp_linux_dmabuf_v1", 4) [1675014502.320313] <- wl_registry@2.global(4, "wl_compositor", 5) [1675014502.320349] <- wl_registry@2.global(5, "wl_subcompositor", 1) [1675014502.320419] <- wl_registry@2.global(6, "wl_data_device_manager", 3) [1675014502.320467] <- wl_registry@2.global(7, "zwlr_gamma_control_manager_v1", 1) [1675014502.320518] <- wl_registry@2.global(8, "zxdg_output_manager_v1", 3) [1675014502.320563] <- wl_registry@2.global(9, "org_kde_kwin_idle", 1) [1675014502.320603] <- wl_registry@2.global(10, "ext_idle_notifier_v1", 1) [1675014502.320646] <- wl_registry@2.global(11, "zwp_idle_inhibit_manager_v1", 1) [1675014502.320695] <- wl_registry@2.global(12, "zwlr_layer_shell_v1", 3) [1675014502.320737] <- wl_registry@2.global(13, "xdg_wm_base", 2) [1675014502.320771] <- wl_registry@2.global(14, "zwp_tablet_manager_v2", 1) [1675014502.320815] <- wl_registry@2.global(15, "org_kde_kwin_server_decoration_manager", 1) [1675014502.320875] <- wl_registry@2.global(16, "zxdg_decoration_manager_v1", 1) [1675014502.320923] <- wl_registry@2.global(17, "zwp_relative_pointer_manager_v1", 1) [1675014502.320977] <- wl_registry@2.global(18, "zwp_pointer_constraints_v1", 1) [1675014502.321025] <- wl_registry@2.global(19, "wp_presentation", 1) [1675014502.321063] <- wl_registry@2.global(20, "zwlr_output_manager_v1", 4) [1675014502.321107] <- wl_registry@2.global(21, "zwlr_output_power_manager_v1", 1) [1675014502.321157] <- wl_registry@2.global(22, "zwp_input_method_manager_v2", 1) [1675014502.321207] <- wl_registry@2.global(23, "zwp_text_input_manager_v3", 1) [1675014502.321254] <- wl_registry@2.global(24, "zwlr_foreign_toplevel_manager_v1", 3) [1675014502.321309] <- wl_registry@2.global(25, "ext_session_lock_manager_v1", 1) [1675014502.321358] <- wl_registry@2.global(26, "wp_drm_lease_device_v1", 1) [1675014502.321403] <- wl_registry@2.global(27, "zwlr_export_dmabuf_manager_v1", 1) [1675014502.321454] <- wl_registry@2.global(28, "zwlr_screencopy_manager_v1", 3) [1675014502.321502] <- wl_registry@2.global(29, "zwlr_data_control_manager_v1", 2) [1675014502.321552] <- wl_registry@2.global(30, "wp_viewporter", 1) [1675014502.321589] <- wl_registry@2.global(31, "wp_single_pixel_buffer_manager_v1", 1) [1675014502.321644] <- wl_registry@2.global(32, "wp_content_type_manager_v1", 1) [1675014502.321692] <- wl_registry@2.global(33, "zxdg_exporter_v1", 1) [1675014502.321731] <- wl_registry@2.global(34, "zxdg_importer_v1", 1) [1675014502.321770] <- wl_registry@2.global(35, "zxdg_exporter_v2", 1) [1675014502.321809] <- wl_registry@2.global(36, "zxdg_importer_v2", 1) [1675014502.321847] <- wl_registry@2.global(37, "xdg_activation_v1", 1) [1675014502.321887] <- wl_registry@2.global(38, "zwp_virtual_keyboard_manager_v1", 1) [1675014502.321940] <- wl_registry@2.global(39, "zwlr_virtual_pointer_manager_v1", 2) [1675014502.321994] <- wl_registry@2.global(40, "zwlr_input_inhibit_manager_v1", 1) [1675014502.322045] <- wl_registry@2.global(41, "zwp_keyboard_shortcuts_inhibit_manager_v1", 1) [1675014502.322107] <- wl_registry@2.global(42, "wl_seat", 8) [1675014502.322144] -> wl_registry@2.bind(42, "wl_seat", 8, 4) [1675014502.322185] <- wl_registry@2.global(43, "zwp_pointer_gestures_v1", 3) [1675014502.322231] <- wl_registry@2.global(44, "xwayland_shell_v1", 1) [1675014502.322271] <- wl_registry@2.global(45, "zwp_primary_selection_device_manager_v1", 1) [1675014502.322332] <- wl_registry@2.global(46, "wl_output", 4) [1675014502.322365] <- wl_callback@3.done(7845) [1675014502.322388] -> wl_registry@2.bind(29, "zwlr_data_control_manager_v1", 1, 3) [1675014502.322445] -> zwlr_data_control_manager_v1@3.get_data_device(5, 4) [1675014502.322469] -> wl_display@1.sync(6) [1675014502.322638] <- wl_display@1.delete_id(6) [1675014502.322663] <- wl_seat@4.name("seat0") [1675014502.322701] <- wl_seat@4.capabilities(3) [1675014502.322719] <- zwlr_data_control_device_v1@5.selection(0) [1675014502.322739] <- wl_callback@6.done(7845) [1675014502.328031] -> zwlr_data_control_manager_v1@3.create_data_source(6) [1675014502.328063] -> zwlr_data_control_source_v1@6.offer("STRING") [1675014502.328088] -> zwlr_data_control_source_v1@6.offer("TEXT") [1675014502.328110] -> zwlr_data_control_source_v1@6.offer("text/plain") [1675014502.328137] -> zwlr_data_control_source_v1@6.offer("text/plain;charset=utf-8") [1675014502.328177] -> zwlr_data_control_source_v1@6.offer("UTF8_STRING") [1675014502.328207] -> zwlr_data_control_device_v1@5.set_selection(6) [1675014502.328717] <- zwlr_data_control_device_v1@5.data_offer(4278190080) [1675014502.328777] <- zwlr_data_control_offer_v1@4278190080.offer("STRING") [1675014502.328813] <- zwlr_data_control_offer_v1@4278190080.offer("TEXT") [1675014502.328835] <- zwlr_data_control_offer_v1@4278190080.offer("text/plain") [1675014502.328862] <- zwlr_data_control_offer_v1@4278190080.offer("text/plain;charset=utf-8") [1675014502.328904] <- zwlr_data_control_offer_v1@4278190080.offer("UTF8_STRING") [1675014502.328933] <- zwlr_data_control_device_v1@5.selection(4278190080) [1675014502.328962] <- zwlr_data_control_source_v1@6.send("text/plain;charset=utf-8", 4) cat: write error: Broken pipe [1675014502.331542] -> zwlr_data_control_source_v1@6.destroy() ```

also it turns out I can't reproduce on large file, here's the specific file I am using:

YAML log ```yaml 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: ByLastModified: format: modified 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 ByIRelativePath: format: '[i]rel' 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 BySymlinkIsFile: format: '[s]file' 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 BySymlinkLastModified: format: '[s]modified' 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 ByCanonicalCreated: format: '[c]created' style: fg: null bg: null add_modifiers: null sub_modifiers: null ByCanonicalSize: format: '[c]size' 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 ByIsFile: format: file 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 BySymlinkCreated: format: '[s]created' 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 BySymlinkSize: format: '[s]size' 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 ByCanonicalMimeEssence: format: '[c]mime' 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 ByIsDir: format: dir 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 ByCanonicalExtension: format: '[c]ext' 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 ByCanonicalAbsolutePath: format: '[c]abs' 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 ByCanonicalIsDir: format: '[c]dir' 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 ByIsBroken: format: ⨯ 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 BySymlinkIsReadonly: format: '[s]ro' 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 BySymlinkExtension: format: '[s]ext' style: fg: null bg: null add_modifiers: null sub_modifiers: null filter_identifiers: IAbsolutePathDoesStartWith: format: '[i]abs=^' 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 AbsolutePathIsNot: 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 IRelativePathDoesNotEndWith: format: '[i]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 RelativePathDoesContain: format: rel=~ 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 IRelativePathDoesNotMatchRegex: format: '[i]rel!/' 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 RelativePathDoesMatchRegex: format: rel=/ 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 AbsolutePathDoesNotMatchRegex: format: abs!/ style: fg: null bg: null add_modifiers: null sub_modifiers: null IAbsolutePathIs: format: '[i]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 AbsolutePathDoesNotContain: format: 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 AbsolutePathDoesMatchRegex: 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 IAbsolutePathDoesMatchRegex: format: '[i]abs=/' 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 IAbsolutePathDoesEndWith: format: '[i]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 AbsolutePathDoesEndWith: format: 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 AbsolutePathDoesNotStartWith: format: abs!^ 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 IAbsolutePathDoesNotMatchRegex: format: '[i]abs!/' 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 IRelativePathDoesContain: format: '[i]rel=~' 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 IAbsolutePathDoesNotStartWith: format: '[i]abs!^' 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 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 RelativePathDoesNotStartWith: 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 RelativePathDoesNotEndWith: format: rel!$ 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 RelativePathIs: format: rel== 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: Blue 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: Magenta bg: null add_modifiers: - Italic 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 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 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 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 custom: {} modes: builtin: 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 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=/ 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: ':' 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 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 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 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 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 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 e: help: edit selection messages: - BashExec0: " TMPFILE=\"$(mktemp)\"\n (while IFS= read -r -d '' PTH; do\n echo $(printf %q \"${PTH:?}\") >> \"${TMPFILE:?}\"\n done < \"${XPLR_PIPE_SELECTION_OUT:?}\")\n ${EDITOR:-vi} \"${TMPFILE:?}\"\n [ ! -e \"$TMPFILE\" ] && exit\n \"$XPLR\" -m ClearSelection\n (while IFS= read -r PTH_ESC; do\n \"$XPLR\" -m 'SelectPath: %q' \"$(eval printf %s ${PTH_ESC:?})\"\n done < \"${TMPFILE:?}\")\n rm -- \"${TMPFILE:?}\"\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 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 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: / 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: 'ð ❯ ' 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 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 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 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!/ 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 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: 'ƒ ❯ ' 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 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 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: /tmp initial_pwd: /tmp directory_buffer: parent: /tmp nodes: - parent: /tmp relative_path: systemd-private-88c13a84ba33463b99d10bfcb5995c16-bluetooth.service-sJ0zL0 absolute_path: /tmp/systemd-private-88c13a84ba33463b99d10bfcb5995c16-bluetooth.service-sJ0zL0 extension: service-sJ0zL0 is_dir: true is_file: false is_symlink: false is_broken: false is_readonly: false mime_essence: inode/directory size: 60 human_size: 60 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: 1674973304503283928 last_modified: 1674973304503283928 uid: 0 gid: 0 canonical: absolute_path: /tmp/systemd-private-88c13a84ba33463b99d10bfcb5995c16-bluetooth.service-sJ0zL0 extension: service-sJ0zL0 is_dir: true is_file: false is_readonly: false mime_essence: inode/directory size: 60 human_size: 60 B created: 1674973304503283928 last_modified: 1674973304503283928 uid: 0 gid: 0 symlink: null - parent: /tmp relative_path: systemd-private-88c13a84ba33463b99d10bfcb5995c16-systemd-logind.service-I1stt4 absolute_path: /tmp/systemd-private-88c13a84ba33463b99d10bfcb5995c16-systemd-logind.service-I1stt4 extension: service-I1stt4 is_dir: true is_file: false is_symlink: false is_broken: false is_readonly: false mime_essence: inode/directory size: 60 human_size: 60 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: 1674973304509950558 last_modified: 1674973304509950558 uid: 0 gid: 0 canonical: absolute_path: /tmp/systemd-private-88c13a84ba33463b99d10bfcb5995c16-systemd-logind.service-I1stt4 extension: service-I1stt4 is_dir: true is_file: false is_readonly: false mime_essence: inode/directory size: 60 human_size: 60 B created: 1674973304509950558 last_modified: 1674973304509950558 uid: 0 gid: 0 symlink: null - parent: /tmp relative_path: systemd-private-88c13a84ba33463b99d10bfcb5995c16-upower.service-TR6izX absolute_path: /tmp/systemd-private-88c13a84ba33463b99d10bfcb5995c16-upower.service-TR6izX extension: service-TR6izX is_dir: true is_file: false is_symlink: false is_broken: false is_readonly: false mime_essence: inode/directory size: 60 human_size: 60 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: 1674973561868538317 last_modified: 1674973561868538317 uid: 0 gid: 0 canonical: absolute_path: /tmp/systemd-private-88c13a84ba33463b99d10bfcb5995c16-upower.service-TR6izX extension: service-TR6izX is_dir: true is_file: false is_readonly: false mime_essence: inode/directory size: 60 human_size: 60 B created: 1674973561868538317 last_modified: 1674973561868538317 uid: 0 gid: 0 symlink: null - parent: /tmp relative_path: Temp-4b642fae-54c8-4d8d-9ecc-e02ea0512fb1 absolute_path: /tmp/Temp-4b642fae-54c8-4d8d-9ecc-e02ea0512fb1 extension: '' is_dir: true is_file: false is_symlink: false is_broken: false is_readonly: false mime_essence: inode/directory size: 40 human_size: 40 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: 1674973316099886959 last_modified: 1674973316099886959 uid: 1000 gid: 1000 canonical: absolute_path: /tmp/Temp-4b642fae-54c8-4d8d-9ecc-e02ea0512fb1 extension: '' is_dir: true is_file: false is_readonly: false mime_essence: inode/directory size: 40 human_size: 40 B created: 1674973316099886959 last_modified: 1674973316099886959 uid: 1000 gid: 1000 symlink: null - parent: /tmp relative_path: log absolute_path: /tmp/log extension: '' is_dir: false is_file: true is_symlink: false is_broken: false is_readonly: false mime_essence: '' size: 0 human_size: 0 B permissions: user_read: true user_write: true user_execute: false group_read: true group_write: false group_execute: false other_read: true other_write: false other_execute: false sticky: false setgid: false setuid: false created: 1675014467881912153 last_modified: 1675014467881912153 uid: 1000 gid: 1000 canonical: absolute_path: /tmp/log extension: '' is_dir: false is_file: true is_readonly: false mime_essence: '' size: 0 human_size: 0 B created: 1675014467881912153 last_modified: 1675014467881912153 uid: 1000 gid: 1000 symlink: null - parent: /tmp relative_path: myfile absolute_path: /tmp/myfile extension: '' is_dir: false is_file: true is_symlink: false is_broken: false is_readonly: false mime_essence: '' size: 40960 human_size: 40.96 kB permissions: user_read: true user_write: true user_execute: false group_read: true group_write: false group_execute: false other_read: true other_write: false other_execute: false sticky: false setgid: false setuid: false created: 1675014413812208857 last_modified: 1675014413815542172 uid: 1000 gid: 1000 canonical: absolute_path: /tmp/myfile extension: '' is_dir: false is_file: true is_readonly: false mime_essence: '' size: 40960 human_size: 40.96 kB created: 1675014413812208857 last_modified: 1675014413815542172 uid: 1000 gid: 1000 symlink: null - parent: /tmp relative_path: sddm-:0-Yiijdf absolute_path: /tmp/sddm-:0-Yiijdf extension: '' is_dir: false is_file: false is_symlink: false is_broken: false is_readonly: false mime_essence: '' size: 0 human_size: 0 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: 1674973305839943260 last_modified: 1674973305839943260 uid: 971 gid: 971 canonical: absolute_path: /tmp/sddm-:0-Yiijdf extension: '' is_dir: false is_file: false is_readonly: false mime_essence: '' size: 0 human_size: 0 B created: 1674973305839943260 last_modified: 1674973305839943260 uid: 971 gid: 971 symlink: null - parent: /tmp relative_path: sddm-authb826ca8b-bd78-4117-8342-49ff025396a9 absolute_path: /tmp/sddm-authb826ca8b-bd78-4117-8342-49ff025396a9 extension: '' is_dir: false is_file: false is_symlink: false is_broken: false is_readonly: false mime_essence: '' 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: 1674973304773282446 last_modified: 1674973304773282446 uid: 0 gid: 0 canonical: absolute_path: /tmp/sddm-authb826ca8b-bd78-4117-8342-49ff025396a9 extension: '' is_dir: false is_file: false is_readonly: false mime_essence: '' size: 0 human_size: 0 B created: 1674973304773282446 last_modified: 1674973304773282446 uid: 0 gid: 0 symlink: null total: 8 focus: 0 last_focus: /tmp: systemd-private-88c13a84ba33463b99d10bfcb5995c16-bluetooth.service-sJ0zL0 /: tmp 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: 26453 session_path: /run/user/1000/xplr/session/26453 pipe: path: /run/user/1000/xplr/session/26453/pipe msg_in: /run/user/1000/xplr/session/26453/pipe/msg_in selection_out: /run/user/1000/xplr/session/26453/pipe/selection_out result_out: /run/user/1000/xplr/session/26453/pipe/result_out directory_nodes_out: /run/user/1000/xplr/session/26453/pipe/directory_nodes_out global_help_menu_out: /run/user/1000/xplr/session/26453/pipe/global_help_menu_out logs_out: /run/user/1000/xplr/session/26453/pipe/logs_out history_out: /run/user/1000/xplr/session/26453/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: - /tmp/systemd-private-88c13a84ba33463b99d10bfcb5995c16-bluetooth.service-sJ0zL0 last_modes: [] hostname: arch ```

save above file as log and do cat log | wl-copy

YaLTeR commented 1 year ago

Do you have any clipboard manager type thing running?

glyh commented 1 year ago

No. I don't. Did you reproduce the error with the YAML file?

YaLTeR commented 1 year ago

Sorry it took so long, but I got sway running and that file works fine for me:

└─ ./wl-copy hello
┌ (master) ~/s/r/w/t/debug
└─ ./wl-copy -V
wl-copy 0.7.0
┌ (master) ~/s/r/w/t/debug
└─ cat ~/bug.yaml | ./wl-copy
┌ (master) ~/s/r/w/t/debug
└─ ./wl-paste -l
text/plain;charset=utf-8
UTF8_STRING
text/plain
TEXT
STRING
┌ (master) ~/s/r/w/t/debug
└─ ./wl-paste | wc -l
2768
glyh commented 1 year ago

Hmm, I guess I'll just hop to wl-clipboard then, that is working for me. If you think that's not a bug you can close this.

YaLTeR commented 1 year ago

Yeah, I'm not sure what's causing this, sorry. Please feel free to reopen if you happen to figure anything else out