diff options
Diffstat (limited to 'xplr')
-rw-r--r-- | xplr/init.lua | 2443 | ||||
-rw-r--r-- | xplr/plugins/dragon/LICENSE | 21 | ||||
-rw-r--r-- | xplr/plugins/dragon/README.md | 49 | ||||
-rw-r--r-- | xplr/plugins/dragon/src/init.lua | 62 |
4 files changed, 0 insertions, 2575 deletions
diff --git a/xplr/init.lua b/xplr/init.lua deleted file mode 100644 index 8840f48..0000000 --- a/xplr/init.lua +++ /dev/null @@ -1,2443 +0,0 @@ --- You need to define the script version for compatibility check. --- See https://github.com/sayanarijit/xplr/wiki/Upgrade-Guide. --- -package.path = os.getenv("HOME") .. '/.config/xplr/plugins/?/src/init.lua' - -version = "0.14.6" - -require("dragon").setup{ - mode = "selection_ops", - key = "D", - drag_args = "", - drop_args = "", - keep_selection = true, -} - -local xplr = xplr - --- Config ----- General ------- Show hidden -xplr.config.general.show_hidden = false - ------- Read only -xplr.config.general.read_only = false - ------- Recover mode -xplr.config.general.disable_recover_mode = false - ------- Start FIFO -xplr.config.general.start_fifo = nil - ------- Prompt -xplr.config.general.prompt.format = "❯ " -xplr.config.general.prompt.style.add_modifiers = nil -xplr.config.general.prompt.style.sub_modifiers = nil -xplr.config.general.prompt.style.bg = nil -xplr.config.general.prompt.style.fg = nil - ------- Cursor -xplr.config.general.cursor.format = "█" -xplr.config.general.cursor.style.add_modifiers = nil -xplr.config.general.cursor.style.bg = nil -xplr.config.general.cursor.style.fg = nil -xplr.config.general.cursor.style.sub_modifiers = nil - ------- Initial layout -xplr.config.general.initial_layout = "default" - ------- Initial mode -xplr.config.general.initial_mode = "default" - ------- Initial sorting -xplr.config.general.initial_sorting = { - { sorter = "ByCanonicalIsDir", reverse = true }, - { sorter = "ByIRelativePath", reverse = false }, -} - ------- Logs --------- Error -xplr.config.general.logs.error.format = "ERROR" -xplr.config.general.logs.error.style.add_modifiers = nil -xplr.config.general.logs.error.style.sub_modifiers = nil -xplr.config.general.logs.error.style.bg = nil -xplr.config.general.logs.error.style.fg = "Red" - --------- Info -xplr.config.general.logs.info.format = "INFO" -xplr.config.general.logs.info.style.add_modifiers = nil -xplr.config.general.logs.info.style.sub_modifiers = nil -xplr.config.general.logs.info.style.bg = nil -xplr.config.general.logs.info.style.fg = "LightBlue" - --------- Success -xplr.config.general.logs.success.format = "SUCCESS" -xplr.config.general.logs.success.style.add_modifiers = nil -xplr.config.general.logs.success.style.bg = nil -xplr.config.general.logs.success.style.fg = "Green" -xplr.config.general.logs.success.style.sub_modifiers = nil - --------- Warning -xplr.config.general.logs.warning.format = "WARNING" -xplr.config.general.logs.warning.style.add_modifiers = nil -xplr.config.general.logs.warning.style.bg = nil -xplr.config.general.logs.warning.style.fg = "Yellow" -xplr.config.general.logs.warning.style.sub_modifiers = nil - ------- Default UI -xplr.config.general.default_ui.prefix = " " -xplr.config.general.default_ui.suffix = "" -xplr.config.general.default_ui.style.add_modifiers = nil -xplr.config.general.default_ui.style.sub_modifiers = nil -xplr.config.general.default_ui.style.bg = nil -xplr.config.general.default_ui.style.fg = nil - ------- Focus UI -xplr.config.general.focus_ui.prefix = "▸[" -xplr.config.general.focus_ui.suffix = "]" -xplr.config.general.focus_ui.style.add_modifiers = { "Bold" } -xplr.config.general.focus_ui.style.sub_modifiers = nil -xplr.config.general.focus_ui.style.bg = nil -xplr.config.general.focus_ui.style.fg = "Blue" - ------- Selection UI -xplr.config.general.selection_ui.prefix = " {" -xplr.config.general.selection_ui.suffix = "}" -xplr.config.general.selection_ui.style.add_modifiers = { "Bold" } -xplr.config.general.selection_ui.style.sub_modifiers = nil -xplr.config.general.selection_ui.style.bg = nil -xplr.config.general.selection_ui.style.fg = "LightGreen" - ------- Sort & filter UI --------- Separator -xplr.config.general.sort_and_filter_ui.separator.format = " › " -xplr.config.general.sort_and_filter_ui.separator.style.add_modifiers = { "Dim" } -xplr.config.general.sort_and_filter_ui.separator.style.bg = nil -xplr.config.general.sort_and_filter_ui.separator.style.fg = nil -xplr.config.general.sort_and_filter_ui.separator.style.sub_modifiers = nil - --------- Default identidier -xplr.config.general.sort_and_filter_ui.default_identifier.format = nil -xplr.config.general.sort_and_filter_ui.default_identifier.style.add_modifiers = - { - "Bold", - } -xplr.config.general.sort_and_filter_ui.default_identifier.style.bg = nil -xplr.config.general.sort_and_filter_ui.default_identifier.style.fg = nil -xplr.config.general.sort_and_filter_ui.default_identifier.style.sub_modifiers = - nil - --------- Filter identifiers -xplr.config.general.sort_and_filter_ui.filter_identifiers = { - AbsolutePathDoesContain = { - format = "abs=~", - style = { add_modifiers = nil, bg = nil, fg = nil, sub_modifiers = nil }, - }, - AbsolutePathDoesEndWith = { - format = "abs=$", - style = { add_modifiers = nil, bg = nil, fg = nil, sub_modifiers = nil }, - }, - AbsolutePathDoesNotContain = { - format = "abs!~", - style = { add_modifiers = nil, bg = nil, fg = nil, sub_modifiers = nil }, - }, - AbsolutePathDoesNotEndWith = { - format = "abs!$", - style = { add_modifiers = nil, bg = nil, fg = nil, sub_modifiers = nil }, - }, - AbsolutePathDoesNotStartWith = { - format = "abs!^", - style = { add_modifiers = nil, bg = nil, fg = nil, sub_modifiers = nil }, - }, - AbsolutePathDoesStartWith = { - format = "abs=^", - style = { add_modifiers = nil, bg = nil, fg = nil, sub_modifiers = nil }, - }, - AbsolutePathIs = { - format = "abs==", - style = { add_modifiers = nil, bg = nil, fg = nil, sub_modifiers = nil }, - }, - AbsolutePathIsNot = { - format = "abs!=", - style = { add_modifiers = nil, bg = nil, fg = nil, sub_modifiers = nil }, - }, - IAbsolutePathDoesContain = { - format = "[i]abs=~", - style = { add_modifiers = nil, bg = nil, fg = nil, sub_modifiers = nil }, - }, - IAbsolutePathDoesEndWith = { - format = "[i]abs=$", - style = { add_modifiers = nil, bg = nil, fg = nil, sub_modifiers = nil }, - }, - IAbsolutePathDoesNotContain = { - format = "[i]abs!~", - style = { add_modifiers = nil, bg = nil, fg = nil, sub_modifiers = nil }, - }, - IAbsolutePathDoesNotEndWith = { - format = "[i]abs!$", - style = { add_modifiers = nil, bg = nil, fg = nil, sub_modifiers = nil }, - }, - IAbsolutePathDoesNotStartWith = { - format = "[i]abs!^", - style = { add_modifiers = nil, bg = nil, fg = nil, sub_modifiers = nil }, - }, - IAbsolutePathDoesStartWith = { - format = "[i]abs=^", - style = { add_modifiers = nil, bg = nil, fg = nil, sub_modifiers = nil }, - }, - IAbsolutePathIs = { - format = "[i]abs==", - style = { add_modifiers = nil, bg = nil, fg = nil, sub_modifiers = nil }, - }, - IAbsolutePathIsNot = { - format = "[i]abs!=", - style = { add_modifiers = nil, bg = nil, fg = nil, sub_modifiers = nil }, - }, - IRelativePathDoesContain = { - format = "[i]rel=~", - style = { add_modifiers = nil, bg = nil, fg = nil, sub_modifiers = nil }, - }, - IRelativePathDoesEndWith = { - format = "[i]rel=$", - style = { add_modifiers = nil, bg = nil, fg = nil, sub_modifiers = nil }, - }, - IRelativePathDoesNotContain = { - format = "[i]rel!~", - style = { add_modifiers = nil, bg = nil, fg = nil, sub_modifiers = nil }, - }, - IRelativePathDoesNotEndWith = { - format = "[i]rel!$", - style = { add_modifiers = nil, bg = nil, fg = nil, sub_modifiers = nil }, - }, - IRelativePathDoesNotStartWith = { - format = "[i]rel!^", - style = { add_modifiers = nil, bg = nil, fg = nil, sub_modifiers = nil }, - }, - IRelativePathDoesStartWith = { - format = "[i]rel=^", - style = { add_modifiers = nil, bg = nil, fg = nil, sub_modifiers = nil }, - }, - IRelativePathIs = { - format = "[i]rel==", - style = { add_modifiers = nil, bg = nil, fg = nil, sub_modifiers = nil }, - }, - IRelativePathIsNot = { - format = "[i]rel!=", - style = { add_modifiers = nil, bg = nil, fg = nil, sub_modifiers = nil }, - }, - RelativePathDoesContain = { - format = "rel=~", - style = { add_modifiers = nil, bg = nil, fg = nil, sub_modifiers = nil }, - }, - RelativePathDoesEndWith = { - format = "rel=$", - style = { add_modifiers = nil, bg = nil, fg = nil, sub_modifiers = nil }, - }, - RelativePathDoesNotContain = { - format = "rel!~", - style = { add_modifiers = nil, bg = nil, fg = nil, sub_modifiers = nil }, - }, - RelativePathDoesNotEndWith = { - format = "rel!$", - style = { add_modifiers = nil, bg = nil, fg = nil, sub_modifiers = nil }, - }, - RelativePathDoesNotStartWith = { - format = "rel!^", - style = { add_modifiers = nil, bg = nil, fg = nil, sub_modifiers = nil }, - }, - RelativePathDoesStartWith = { - format = "rel=^", - style = { add_modifiers = nil, bg = nil, fg = nil, sub_modifiers = nil }, - }, - RelativePathIs = { - format = "rel==", - style = { add_modifiers = nil, bg = nil, fg = nil, sub_modifiers = nil }, - }, - RelativePathIsNot = { - format = "rel!=", - style = { add_modifiers = nil, bg = nil, fg = nil, sub_modifiers = nil }, - }, -} - --------- Sort direction identifiers -xplr.config.general.sort_and_filter_ui.sort_direction_identifiers.forward.format = - "↓" -xplr.config.general.sort_and_filter_ui.sort_direction_identifiers.forward.style.add_modifiers = - nil -xplr.config.general.sort_and_filter_ui.sort_direction_identifiers.forward.style.bg = - nil -xplr.config.general.sort_and_filter_ui.sort_direction_identifiers.forward.style.fg = - nil -xplr.config.general.sort_and_filter_ui.sort_direction_identifiers.forward.style.sub_modifiers = - nil -xplr.config.general.sort_and_filter_ui.sort_direction_identifiers.reverse.format = - "↑" -xplr.config.general.sort_and_filter_ui.sort_direction_identifiers.reverse.style.add_modifiers = - nil -xplr.config.general.sort_and_filter_ui.sort_direction_identifiers.reverse.style.bg = - nil -xplr.config.general.sort_and_filter_ui.sort_direction_identifiers.reverse.style.fg = - nil -xplr.config.general.sort_and_filter_ui.sort_direction_identifiers.reverse.style.sub_modifiers = - nil - --------- Sorter identifiers -xplr.config.general.sort_and_filter_ui.sorter_identifiers = { - ByCanonicalAbsolutePath = { - format = "[c]abs", - style = { add_modifiers = nil, bg = nil, fg = nil, sub_modifiers = nil }, - }, - ByCanonicalExtension = { - format = "[c]ext", - style = { add_modifiers = nil, bg = nil, fg = nil, sub_modifiers = nil }, - }, - ByCanonicalIsDir = { - format = "[c]dir", - style = { add_modifiers = nil, bg = nil, fg = nil, sub_modifiers = nil }, - }, - ByCanonicalIsFile = { - format = "[c]file", - style = { add_modifiers = nil, bg = nil, fg = nil, sub_modifiers = nil }, - }, - ByCanonicalIsReadonly = { - format = "[c]ro", - style = { add_modifiers = nil, bg = nil, fg = nil, sub_modifiers = nil }, - }, - ByCanonicalMimeEssence = { - format = "[c]mime", - style = { add_modifiers = nil, bg = nil, fg = nil, sub_modifiers = nil }, - }, - ByCanonicalSize = { - format = "[c]size", - style = { add_modifiers = nil, bg = nil, fg = nil, sub_modifiers = nil }, - }, - ByExtension = { - format = "ext", - style = { add_modifiers = nil, bg = nil, fg = nil, sub_modifiers = nil }, - }, - ByICanonicalAbsolutePath = { - format = "[ci]abs", - style = { add_modifiers = nil, bg = nil, fg = nil, sub_modifiers = nil }, - }, - ByIRelativePath = { - format = "[i]rel", - style = { add_modifiers = nil, bg = nil, fg = nil, sub_modifiers = nil }, - }, - ByISymlinkAbsolutePath = { - format = "[si]abs", - style = { add_modifiers = nil, bg = nil, fg = nil, sub_modifiers = nil }, - }, - ByIsBroken = { - format = "⨯", - style = { add_modifiers = nil, bg = nil, fg = nil, sub_modifiers = nil }, - }, - ByIsDir = { - format = "dir", - style = { add_modifiers = nil, bg = nil, fg = nil, sub_modifiers = nil }, - }, - ByIsFile = { - format = "file", - style = { add_modifiers = nil, bg = nil, fg = nil, sub_modifiers = nil }, - }, - ByIsReadonly = { - format = "ro", - style = { add_modifiers = nil, bg = nil, fg = nil, sub_modifiers = nil }, - }, - ByIsSymlink = { - format = "sym", - style = { add_modifiers = nil, bg = nil, fg = nil, sub_modifiers = nil }, - }, - ByMimeEssence = { - format = "mime", - style = { add_modifiers = nil, bg = nil, fg = nil, sub_modifiers = nil }, - }, - ByRelativePath = { - format = "rel", - style = { add_modifiers = nil, bg = nil, fg = nil, sub_modifiers = nil }, - }, - BySize = { - format = "size", - style = { add_modifiers = nil, bg = nil, fg = nil, sub_modifiers = nil }, - }, - BySymlinkAbsolutePath = { - format = "[s]abs", - style = { add_modifiers = nil, bg = nil, fg = nil, sub_modifiers = nil }, - }, - BySymlinkExtension = { - format = "[s]ext", - style = { add_modifiers = nil, bg = nil, fg = nil, sub_modifiers = nil }, - }, - BySymlinkIsDir = { - format = "[s]dir", - style = { add_modifiers = nil, bg = nil, fg = nil, sub_modifiers = nil }, - }, - BySymlinkIsFile = { - format = "[s]file", - style = { add_modifiers = nil, bg = nil, fg = nil, sub_modifiers = nil }, - }, - BySymlinkIsReadonly = { - format = "[s]ro", - style = { add_modifiers = nil, bg = nil, fg = nil, sub_modifiers = nil }, - }, - BySymlinkMimeEssence = { - format = "[s]mime", - style = { add_modifiers = nil, bg = nil, fg = nil, sub_modifiers = nil }, - }, - BySymlinkSize = { - format = "[s]size", - style = { add_modifiers = nil, bg = nil, fg = nil, sub_modifiers = nil }, - }, -} - ------- Panel UI --------- Default -xplr.config.general.panel_ui.default.borders = { - "Top", - "Right", - "Bottom", - "Left", -} -xplr.config.general.panel_ui.default.style.add_modifiers = nil -xplr.config.general.panel_ui.default.style.bg = nil -xplr.config.general.panel_ui.default.style.fg = nil -xplr.config.general.panel_ui.default.style.sub_modifiers = nil -xplr.config.general.panel_ui.default.title.format = nil -xplr.config.general.panel_ui.default.title.style.add_modifiers = nil -xplr.config.general.panel_ui.default.title.style.bg = nil -xplr.config.general.panel_ui.default.title.style.fg = nil -xplr.config.general.panel_ui.default.title.style.sub_modifiers = nil - --------- Help menu -xplr.config.general.panel_ui.help_menu.borders = nil -xplr.config.general.panel_ui.help_menu.style.add_modifiers = nil -xplr.config.general.panel_ui.help_menu.style.bg = nil -xplr.config.general.panel_ui.help_menu.style.fg = nil -xplr.config.general.panel_ui.help_menu.style.sub_modifiers = nil -xplr.config.general.panel_ui.help_menu.title.format = nil -xplr.config.general.panel_ui.help_menu.title.style.add_modifiers = nil -xplr.config.general.panel_ui.help_menu.title.style.bg = nil -xplr.config.general.panel_ui.help_menu.title.style.fg = nil -xplr.config.general.panel_ui.help_menu.title.style.sub_modifiers = nil - --------- Input & log -xplr.config.general.panel_ui.input_and_logs.borders = nil -xplr.config.general.panel_ui.input_and_logs.style.add_modifiers = nil -xplr.config.general.panel_ui.input_and_logs.style.bg = nil -xplr.config.general.panel_ui.input_and_logs.style.fg = nil -xplr.config.general.panel_ui.input_and_logs.style.sub_modifiers = nil -xplr.config.general.panel_ui.input_and_logs.title.format = nil -xplr.config.general.panel_ui.input_and_logs.title.style.add_modifiers = nil -xplr.config.general.panel_ui.input_and_logs.title.style.bg = nil -xplr.config.general.panel_ui.input_and_logs.title.style.fg = nil -xplr.config.general.panel_ui.input_and_logs.title.style.sub_modifiers = nil - --------- Selection -xplr.config.general.panel_ui.selection.borders = nil -xplr.config.general.panel_ui.selection.style.add_modifiers = nil -xplr.config.general.panel_ui.selection.style.bg = nil -xplr.config.general.panel_ui.selection.style.fg = nil -xplr.config.general.panel_ui.selection.style.sub_modifiers = nil -xplr.config.general.panel_ui.selection.title.format = nil -xplr.config.general.panel_ui.selection.title.style.add_modifiers = nil -xplr.config.general.panel_ui.selection.title.style.bg = nil -xplr.config.general.panel_ui.selection.title.style.fg = nil -xplr.config.general.panel_ui.selection.title.style.sub_modifiers = nil - --------- Sort and filter -xplr.config.general.panel_ui.sort_and_filter.borders = nil -xplr.config.general.panel_ui.sort_and_filter.style.add_modifiers = nil -xplr.config.general.panel_ui.sort_and_filter.style.bg = nil -xplr.config.general.panel_ui.sort_and_filter.style.fg = nil -xplr.config.general.panel_ui.sort_and_filter.style.sub_modifiers = nil -xplr.config.general.panel_ui.sort_and_filter.title.format = nil -xplr.config.general.panel_ui.sort_and_filter.title.style.add_modifiers = nil -xplr.config.general.panel_ui.sort_and_filter.title.style.bg = nil -xplr.config.general.panel_ui.sort_and_filter.title.style.fg = nil -xplr.config.general.panel_ui.sort_and_filter.title.style.sub_modifiers = nil - --------- Table -xplr.config.general.panel_ui.table.borders = nil -xplr.config.general.panel_ui.table.style.add_modifiers = nil -xplr.config.general.panel_ui.table.style.bg = nil -xplr.config.general.panel_ui.table.style.fg = nil -xplr.config.general.panel_ui.table.style.sub_modifiers = nil -xplr.config.general.panel_ui.table.title.format = nil -xplr.config.general.panel_ui.table.title.style.add_modifiers = nil -xplr.config.general.panel_ui.table.title.style.bg = nil -xplr.config.general.panel_ui.table.title.style.fg = nil -xplr.config.general.panel_ui.table.title.style.sub_modifiers = nil - ------- Table -xplr.config.general.table.style.add_modifiers = nil -xplr.config.general.table.style.bg = nil -xplr.config.general.table.style.fg = nil -xplr.config.general.table.style.sub_modifiers = nil - --------- Col spacing -xplr.config.general.table.col_spacing = 1 - --------- Col widths -xplr.config.general.table.col_widths = { - { Percentage = 10 }, - { Percentage = 50 }, - { Percentage = 10 }, - { Percentage = 10 }, - { Percentage = 20 }, -} - --------- Header -xplr.config.general.table.header.cols = { - { - format = " index", - style = { add_modifiers = nil, bg = nil, fg = nil, sub_modifiers = nil }, - }, - { - format = "╭──── path", - style = { add_modifiers = nil, bg = nil, fg = nil, sub_modifiers = nil }, - }, - { - format = "permissions", - style = { add_modifiers = nil, bg = nil, fg = nil, sub_modifiers = nil }, - }, - { - format = "size", - style = { add_modifiers = nil, bg = nil, fg = nil, sub_modifiers = nil }, - }, - { - format = "type", - style = { add_modifiers = nil, bg = nil, fg = nil, sub_modifiers = nil }, - }, -} -xplr.config.general.table.header.height = 1 -xplr.config.general.table.header.style.add_modifiers = { "Bold" } -xplr.config.general.table.header.style.sub_modifiers = nil -xplr.config.general.table.header.style.bg = nil -xplr.config.general.table.header.style.fg = nil - --------- Row -xplr.config.general.table.row.cols = { - { - format = "builtin.fmt_general_table_row_cols_0", - style = { add_modifiers = nil, bg = nil, fg = nil, sub_modifiers = nil }, - }, - { - format = "builtin.fmt_general_table_row_cols_1", - style = { add_modifiers = nil, bg = nil, fg = nil, sub_modifiers = nil }, - }, - { - format = "builtin.fmt_general_table_row_cols_2", - style = { add_modifiers = nil, bg = nil, fg = nil, sub_modifiers = nil }, - }, - { - format = "builtin.fmt_general_table_row_cols_3", - style = { add_modifiers = nil, bg = nil, fg = nil, sub_modifiers = nil }, - }, - { - format = "builtin.fmt_general_table_row_cols_4", - style = { add_modifiers = nil, bg = nil, fg = nil, sub_modifiers = nil }, - }, -} -xplr.config.general.table.row.height = 0 -xplr.config.general.table.row.style.add_modifiers = nil -xplr.config.general.table.row.style.bg = nil -xplr.config.general.table.row.style.fg = nil -xplr.config.general.table.row.style.sub_modifiers = nil - --------- Tree -xplr.config.general.table.tree = { - { - format = "├─", - style = { add_modifiers = nil, bg = nil, fg = nil, sub_modifiers = nil }, - }, - { - format = "├─", - style = { add_modifiers = nil, bg = nil, fg = nil, sub_modifiers = nil }, - }, - { - format = "╰─", - style = { add_modifiers = nil, bg = nil, fg = nil, sub_modifiers = nil }, - }, -} - ----- Node types ------- Directory -xplr.config.node_types.directory.meta.icon = "ð" -xplr.config.node_types.directory.style.add_modifiers = { "Bold" } -xplr.config.node_types.directory.style.sub_modifiers = nil -xplr.config.node_types.directory.style.bg = nil -xplr.config.node_types.directory.style.fg = "Cyan" - ------- File -xplr.config.node_types.file.meta.icon = "ƒ" -xplr.config.node_types.file.style.add_modifiers = nil -xplr.config.node_types.file.style.sub_modifiers = nil -xplr.config.node_types.file.style.bg = nil -xplr.config.node_types.file.style.fg = nil - ------- Symlink -xplr.config.node_types.symlink.meta.icon = "§" -xplr.config.node_types.symlink.style.add_modifiers = { "Italic" } -xplr.config.node_types.symlink.style.sub_modifiers = nil -xplr.config.node_types.symlink.style.bg = nil -xplr.config.node_types.symlink.style.fg = "Magenta" - ------- Mime essence -xplr.config.node_types.mime_essence = {} - ------- Extension -xplr.config.node_types.extension = {} - ------- Special -xplr.config.node_types.special = {} - --- Layouts ----- Builtin ------- Default -xplr.config.layouts.builtin.default = { - Horizontal = { - config = { - margin = nil, - horizontal_margin = 0, - vertical_margin = 0, - constraints = { - { - Percentage = 70, - }, - { - Percentage = 30, - }, - }, - }, - splits = { - { - Vertical = { - config = { - margin = 0, - horizontal_margin = nil, - vertical_margin = nil, - constraints = { - { - Length = 3, - }, - { - Min = 1, - }, - { - Length = 3, - }, - }, - }, - splits = { - "SortAndFilter", - "Table", - "InputAndLogs", - }, - }, - }, - { - Vertical = { - config = { - margin = 0, - horizontal_margin = nil, - vertical_margin = nil, - constraints = { - { - Percentage = 50, - }, - { - Percentage = 50, - }, - }, - }, - splits = { - "Selection", - "HelpMenu", - }, - }, - }, - }, - }, -} - ------- No help -xplr.config.layouts.builtin.no_help = { - Horizontal = { - config = { - margin = nil, - horizontal_margin = nil, - vertical_margin = nil, - constraints = { - { - Percentage = 70, - }, - { - Percentage = 30, - }, - }, - }, - splits = { - { - Vertical = { - config = { - margin = nil, - horizontal_margin = nil, - vertical_margin = nil, - constraints = { - { - Length = 3, - }, - { - Min = 1, - }, - { - Length = 3, - }, - }, - }, - splits = { - "SortAndFilter", - "Table", - "InputAndLogs", - }, - }, - }, - "Selection", - }, - }, -} - ------- No selection -xplr.config.layouts.builtin.no_selection = { - Horizontal = { - config = { - margin = nil, - horizontal_margin = nil, - vertical_margin = nil, - constraints = { - { - Percentage = 70, - }, - { - Percentage = 30, - }, - }, - }, - splits = { - { - Vertical = { - config = { - margin = nil, - horizontal_margin = nil, - vertical_margin = nil, - constraints = { - { - Length = 3, - }, - { - Min = 1, - }, - { - Length = 3, - }, - }, - }, - splits = { - "SortAndFilter", - "Table", - "InputAndLogs", - }, - }, - }, - "HelpMenu", - }, - }, -} - ------- No help, no selection -xplr.config.layouts.builtin.no_help_no_selection = { - Vertical = { - config = { - margin = nil, - horizontal_margin = nil, - vertical_margin = nil, - constraints = { - { - Length = 3, - }, - { - Min = 1, - }, - { - Length = 3, - }, - }, - }, - splits = { - "SortAndFilter", - "Table", - "InputAndLogs", - }, - }, -} - ----- Custom -xplr.config.layouts.custom = {} - --- Modes ----- Builtin ------- Default -xplr.config.modes.builtin.default = { - name = "default", - help = nil, - extra_help = nil, - key_bindings = { - on_key = { - ["#"] = { - help = nil, - messages = { "PrintAppStateAndQuit" }, - }, - ["."] = { - help = "show hidden", - messages = { - { - ToggleNodeFilter = { - filter = "RelativePathDoesNotStartWith", - input = ".", - }, - }, - "ExplorePwdAsync", - }, - }, - [":"] = { - help = "action", - messages = { - "PopMode", - { - SwitchModeBuiltin = "action", - }, - }, - }, - ["?"] = { - help = "global help menu", - messages = { - { - BashExec = [===[ - [ -z "$PAGER" ] && PAGER="less -+F" - cat -- "${XPLR_PIPE_GLOBAL_HELP_MENU_OUT}" | ${PAGER:?} - ]===], - }, - }, - }, - ["G"] = { - help = "go to bottom", - messages = { "PopMode", "FocusLast" }, - }, - ["ctrl-a"] = { - help = "select/unselect all", - messages = { "ToggleSelectAll" }, - }, - ["ctrl-c"] = { - help = "terminate", - messages = { "Terminate" }, - }, - ["ctrl-f"] = { - help = "search", - messages = { - "PopMode", - { SwitchModeBuiltin = "search" }, - { SetInputBuffer = "" }, - "ExplorePwdAsync", - }, - }, - ["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 = nil, - messages = {}, - }, - ["f"] = { - help = "filter", - messages = { - "PopMode", - { SwitchModeBuiltin = "filter" }, - }, - }, - ["g"] = { - help = "go to", - messages = { - "PopMode", - { SwitchModeBuiltin = "go_to" }, - }, - }, - left = { - help = "back", - messages = { "Back" }, - }, - ["q"] = { - help = "quit", - messages = { "Quit" }, - }, - ["r"] = { - help = "rename", - messages = { - "PopMode", - { SwitchModeBuiltin = "rename" }, - { - BashExecSilently = [===[ - echo SetInputBuffer: "'"$(basename "${XPLR_FOCUS_PATH}")"'" >> "${XPLR_PIPE_MSG_IN:?}" - ]===], - }, - }, - }, - right = { - help = "enter", - messages = { "Enter" }, - }, - ["s"] = { - help = "sort", - messages = { - "PopMode", - { SwitchModeBuiltin = "sort" }, - }, - }, - space = { - help = "toggle selection", - messages = { "ToggleSelection", "FocusNext" }, - }, - up = { - help = "up", - messages = { "FocusPrevious" }, - }, - ["~"] = { - help = "go home", - messages = { - { - BashExecSilently = [===[ - echo ChangeDirectory: "'"${HOME:?}"'" >> "${XPLR_PIPE_MSG_IN:?}" - ]===], - }, - }, - }, - }, - on_alphabet = nil, - on_number = { - help = "input", - messages = { - "PopMode", - { SwitchModeBuiltin = "number" }, - "BufferInputFromKey", - }, - }, - on_special_character = nil, - default = nil, - }, -} - -xplr.config.modes.builtin.default.key_bindings.on_key["tab"] = - xplr.config.modes.builtin.default.key_bindings.on_key["ctrl-i"] - -xplr.config.modes.builtin.default.key_bindings.on_key["v"] = - xplr.config.modes.builtin.default.key_bindings.on_key.space - -xplr.config.modes.builtin.default.key_bindings.on_key["V"] = - xplr.config.modes.builtin.default.key_bindings.on_key["ctrl-a"] - -xplr.config.modes.builtin.default.key_bindings.on_key["/"] = - xplr.config.modes.builtin.default.key_bindings.on_key["ctrl-f"] - -xplr.config.modes.builtin.default.key_bindings.on_key["h"] = - xplr.config.modes.builtin.default.key_bindings.on_key.left - -xplr.config.modes.builtin.default.key_bindings.on_key["j"] = - xplr.config.modes.builtin.default.key_bindings.on_key.down - -xplr.config.modes.builtin.default.key_bindings.on_key["k"] = - xplr.config.modes.builtin.default.key_bindings.on_key.up - -xplr.config.modes.builtin.default.key_bindings.on_key["l"] = - xplr.config.modes.builtin.default.key_bindings.on_key.right - ------- Recover -xplr.config.modes.builtin.recover = { - name = "recover", - help = nil, - extra_help = nil, - key_bindings = { - on_key = { - ["ctrl-c"] = { - help = "terminate", - messages = { "Terminate" }, - }, - esc = { - help = "escape", - messages = { "PopMode" }, - }, - }, - on_alphabet = nil, - on_number = nil, - on_special_character = nil, - default = { - help = nil, - messages = {}, - }, - }, -} - ------- Selection ops -xplr.config.modes.builtin.selection_ops = { - name = "selection ops", - help = nil, - extra_help = nil, - key_bindings = { - on_key = { - ["c"] = { - help = "copy here", - messages = { - { - BashExec = [===[ - (while IFS= read -r line; do - if cp -vr -- "${line:?}" ./; then - echo LogSuccess: $line copied to $PWD >> "${XPLR_PIPE_MSG_IN:?}" - else - echo LogError: Failed to copy $line to $PWD >> "${XPLR_PIPE_MSG_IN:?}" - fi - done < "${XPLR_PIPE_SELECTION_OUT:?}") - echo ExplorePwdAsync >> "${XPLR_PIPE_MSG_IN:?}" - echo ClearSelection >> "${XPLR_PIPE_MSG_IN:?}" - read -p "[enter to continue]" - ]===], - }, - "PopMode", - }, - }, - ["ctrl-c"] = { - help = "terminate", - messages = { "Terminate" }, - }, - esc = { - help = "cancel", - messages = { "PopMode" }, - }, - ["m"] = { - help = "move here", - messages = { - { - BashExec = [===[ - (while IFS= read -r line; do - if mv -v -- "${line:?}" ./; then - echo LogSuccess: $line moved to $PWD >> "${XPLR_PIPE_MSG_IN:?}" - else - echo LogError: Failed to move $line to $PWD >> "${XPLR_PIPE_MSG_IN:?}" - fi - done < "${XPLR_PIPE_SELECTION_OUT:?}") - echo ExplorePwdAsync >> "${XPLR_PIPE_MSG_IN:?}" - read -p "[enter to continue]" - ]===], - }, - "PopMode", - }, - }, - ["x"] = { - help = "open in gui", - messages = { - { - BashExecSilently = [===[ - if [ -z "$OPENER" ]; then - if command -v xdg-open; then - OPENER=xdg-open - elif command -v open; then - OPENER=open - else - echo 'LogError: $OPENER not found' >> "${XPLR_PIPE_MSG_IN:?}" - exit 1 - fi - fi - (while IFS= read -r line; do - $OPENER "${line:?}" > /dev/null 2>&1 - done < "${XPLR_PIPE_RESULT_OUT:?}") - ]===], - }, - "ClearScreen", - "PopMode", - }, - }, - }, - on_alphabet = nil, - on_number = nil, - on_special_character = nil, - default = nil, - }, -} - ------- Create -xplr.config.modes.builtin.create = { - name = "create", - help = nil, - extra_help = nil, - key_bindings = { - on_key = { - ["ctrl-c"] = { - help = "terminate", - messages = { "Terminate" }, - }, - ["d"] = { - help = "create directory", - messages = { - "PopMode", - { - SwitchModeBuiltin = "create directory", - }, - { - SetInputBuffer = "", - }, - }, - }, - esc = { - help = "cancel", - messages = { "PopMode" }, - }, - ["f"] = { - help = "create file", - messages = { - "PopMode", - { - SwitchModeBuiltin = "create file", - }, - { - SetInputBuffer = "", - }, - }, - }, - }, - on_alphabet = nil, - on_number = nil, - on_special_character = nil, - default = nil, - }, -} - ------- Create directory -xplr.config.modes.builtin.create_directory = { - name = "create directory", - help = nil, - extra_help = nil, - key_bindings = { - on_key = { - backspace = { - help = "remove last character", - messages = { "RemoveInputBufferLastCharacter" }, - }, - ["ctrl-c"] = { - help = "terminate", - messages = { "Terminate" }, - }, - ["ctrl-u"] = { - help = "remove line", - messages = { - { - SetInputBuffer = "", - }, - }, - }, - ["ctrl-w"] = { - help = "remove last word", - messages = { "RemoveInputBufferLastWord" }, - }, - enter = { - help = "create directory", - messages = { - { - BashExecSilently = [===[ - PTH="$XPLR_INPUT_BUFFER" - if [ "${PTH}" ]; then - mkdir -p -- "${PTH:?}" \ - && echo "SetInputBuffer: ''" >> "${XPLR_PIPE_MSG_IN:?}" \ - && echo ExplorePwd >> "${XPLR_PIPE_MSG_IN:?}" \ - && echo LogSuccess: $PTH created >> "${XPLR_PIPE_MSG_IN:?}" \ - && echo FocusByFileName: "'"$PTH"'" >> "${XPLR_PIPE_MSG_IN:?}" - else - echo PopMode >> "${XPLR_PIPE_MSG_IN:?}" - fi - ]===], - }, - }, - }, - esc = { - help = "cancel", - messages = { "PopMode" }, - }, - }, - on_alphabet = nil, - on_number = nil, - on_special_character = nil, - default = { - help = nil, - messages = { "BufferInputFromKey" }, - }, - }, -} - ------- Create file -xplr.config.modes.builtin.create_file = { - name = "create file", - help = nil, - extra_help = nil, - key_bindings = { - on_key = { - backspace = { - help = "remove last character", - messages = { "RemoveInputBufferLastCharacter" }, - }, - ["ctrl-c"] = { - help = "terminate", - messages = { "Terminate" }, - }, - ["ctrl-u"] = { - help = "remove line", - messages = { - { - SetInputBuffer = "", - }, - }, - }, - ["ctrl-w"] = { - help = "remove last word", - messages = { "RemoveInputBufferLastWord" }, - }, - enter = { - help = "create file", - messages = { - { - BashExecSilently = [===[ - PTH="$XPLR_INPUT_BUFFER" - if [ "${PTH}" ]; then - touch -- "${PTH:?}" \ - && echo "SetInputBuffer: ''" >> "${XPLR_PIPE_MSG_IN:?}" \ - && echo LogSuccess: $PTH created >> "${XPLR_PIPE_MSG_IN:?}" \ - && echo ExplorePwd >> "${XPLR_PIPE_MSG_IN:?}" \ - && echo FocusByFileName: "'"$PTH"'" >> "${XPLR_PIPE_MSG_IN:?}" - else - echo PopMode >> "${XPLR_PIPE_MSG_IN:?}" - fi - ]===], - }, - }, - }, - esc = { - help = "cancel", - messages = { "PopMode" }, - }, - }, - on_alphabet = nil, - on_number = nil, - on_special_character = nil, - default = { - help = nil, - messages = { "BufferInputFromKey" }, - }, - }, -} - ------- Number -xplr.config.modes.builtin.number = { - name = "number", - help = nil, - extra_help = nil, - key_bindings = { - on_key = { - backspace = { - help = "remove last character", - messages = { "RemoveInputBufferLastCharacter" }, - }, - ["ctrl-c"] = { - help = "terminate", - messages = { "Terminate" }, - }, - ["ctrl-u"] = { - help = "remove line", - messages = { - { - SetInputBuffer = "", - }, - }, - }, - ["ctrl-w"] = { - help = "remove last word", - messages = { "RemoveInputBufferLastWord" }, - }, - down = { - help = "to down", - messages = { "FocusNextByRelativeIndexFromInput", "PopMode" }, - }, - enter = { - help = "to index", - messages = { "FocusByIndexFromInput", "PopMode" }, - }, - esc = { - help = "cancel", - messages = { "PopMode" }, - }, - up = { - help = "to up", - messages = { "FocusPreviousByRelativeIndexFromInput", "PopMode" }, - }, - }, - on_alphabet = nil, - on_number = { - help = "input", - messages = { "BufferInputFromKey" }, - }, - on_special_character = nil, - default = nil, - }, -} - -xplr.config.modes.builtin.number.key_bindings.on_key["j"] = - xplr.config.modes.builtin.number.key_bindings.on_key.down -xplr.config.modes.builtin.number.key_bindings.on_key["k"] = - xplr.config.modes.builtin.number.key_bindings.on_key.up - ------- Go to -xplr.config.modes.builtin.go_to = { - name = "go to", - help = nil, - extra_help = nil, - key_bindings = { - on_key = { - ["ctrl-c"] = { - help = "terminate", - messages = { "Terminate" }, - }, - esc = { - help = "cancel", - messages = { "PopMode" }, - }, - ["f"] = { - help = "follow symlink", - messages = { "FollowSymlink", "PopMode" }, - }, - ["g"] = { - help = "top", - messages = { "FocusFirst", "PopMode" }, - }, - ["x"] = { - help = "open in gui", - messages = { - { - BashExecSilently = [===[ - if [ -z "$OPENER" ]; then - if command -v xdg-open; then - OPENER=xdg-open - elif command -v open; then - OPENER=open - else - echo 'LogError: $OPENER not found' >> "${XPLR_PIPE_MSG_IN:?}" - exit 1 - fi - fi - $OPENER "${XPLR_FOCUS_PATH:?}" > /dev/null 2>&1 - ]===], - }, - "ClearScreen", - "PopMode", - }, - }, - }, - on_alphabet = nil, - on_number = nil, - on_special_character = nil, - default = nil, - }, -} - ------- Rename -xplr.config.modes.builtin.rename = { - name = "rename", - help = nil, - extra_help = nil, - key_bindings = { - on_key = { - backspace = { - help = "remove last character", - messages = { "RemoveInputBufferLastCharacter" }, - }, - ["ctrl-c"] = { - help = "terminate", - messages = { "Terminate" }, - }, - ["ctrl-u"] = { - help = "remove line", - messages = { - { - SetInputBuffer = "", - }, - }, - }, - ["ctrl-w"] = { - help = "remove last word", - messages = { "RemoveInputBufferLastWord" }, - }, - enter = { - help = "rename", - messages = { - { - BashExecSilently = [===[ - SRC="${XPLR_FOCUS_PATH:?}" - TARGET="${XPLR_INPUT_BUFFER:?}" - mv -- "${SRC:?}" "${TARGET:?}" \ - && echo ExplorePwd >> "${XPLR_PIPE_MSG_IN:?}" \ - && echo FocusByFileName: "'"$TARGET"'" >> "${XPLR_PIPE_MSG_IN:?}" \ - && echo LogSuccess: $SRC renamed to $TARGET >> "${XPLR_PIPE_MSG_IN:?}" - ]===], - }, - "PopMode", - }, - }, - esc = { - help = "cancel", - messages = { "PopMode" }, - }, - }, - on_alphabet = nil, - on_number = nil, - on_special_character = nil, - default = { - help = nil, - messages = { "BufferInputFromKey" }, - }, - }, -} - ------- Delete -xplr.config.modes.builtin.delete = { - name = "delete", - help = nil, - extra_help = nil, - key_bindings = { - on_key = { - ["D"] = { - help = "force delete", - messages = { - { - BashExec = [===[ - (while IFS= read -r line; do - if rm -rfv -- "${line:?}"; then - echo LogSuccess: $line deleted >> "${XPLR_PIPE_MSG_IN:?}" - else - echo LogError: Failed to delete $line >> "${XPLR_PIPE_MSG_IN:?}" - fi - done < "${XPLR_PIPE_RESULT_OUT:?}") - echo ExplorePwdAsync >> "${XPLR_PIPE_MSG_IN:?}" - read -p "[enter to continue]" - ]===], - }, - "PopMode", - }, - }, - ["ctrl-c"] = { - help = "terminate", - messages = { "Terminate" }, - }, - ["d"] = { - help = "delete", - messages = { - { - BashExec = [===[ - (while IFS= read -r line; do - if [ -d "$line" ] && [ ! -L "$line" ]; then - if rmdir -v -- "${line:?}"; then - echo LogSuccess: $line deleted >> "${XPLR_PIPE_MSG_IN:?}" - else - echo LogError: Failed to delete $line >> "${XPLR_PIPE_MSG_IN:?}" - fi - else - if rm -v -- "${line:?}"; then - echo LogSuccess: $line deleted >> "${XPLR_PIPE_MSG_IN:?}" - else - echo LogError: Failed to delete $line >> "${XPLR_PIPE_MSG_IN:?}" - fi - fi - done < "${XPLR_PIPE_RESULT_OUT:?}") - echo ExplorePwdAsync >> "${XPLR_PIPE_MSG_IN:?}" - read -p "[enter to continue]" - ]===], - }, - "PopMode", - }, - }, - esc = { - help = "cancel", - messages = { "PopMode" }, - }, - }, - on_alphabet = nil, - on_number = nil, - on_special_character = nil, - default = nil, - }, -} - ------- Action -xplr.config.modes.builtin.action = { - name = "action to", - help = nil, - extra_help = nil, - key_bindings = { - on_key = { - ["!"] = { - help = "shell", - messages = { - { - Call = { - command = "zsh", - args = { "-i" }, - }, - }, - "ExplorePwdAsync", - "PopMode", - }, - }, - ["c"] = { - help = "create", - messages = { - "PopMode", - { - SwitchModeBuiltin = "create", - }, - }, - }, - ["ctrl-c"] = { - help = "terminate", - messages = { "Terminate" }, - }, - ["e"] = { - help = "open in editor", - messages = { - { - BashExec = [===[ - ${EDITOR:-vi} "${XPLR_FOCUS_PATH:?}" - ]===], - }, - "PopMode", - }, - }, - esc = { - help = "cancel", - messages = { "PopMode" }, - }, - ["l"] = { - help = "logs", - messages = { - { - BashExec = [===[ - [ -z "$PAGER" ] && PAGER="less -+F" - cat -- "${XPLR_PIPE_LOGS_OUT}" | ${PAGER:?} - ]===], - }, - "PopMode", - }, - }, - ["s"] = { - help = "selection operations", - messages = { - "PopMode", - { - SwitchModeBuiltin = "selection_ops", - }, - }, - }, - ["m"] = { - help = "toggle mouse", - messages = { - "PopMode", - "ToggleMouse", - }, - }, - ["q"] = { - help = "quit options", - messages = { - "PopMode", - { SwitchModeBuiltin = "quit" }, - }, - }, - }, - on_alphabet = nil, - on_number = { - help = "go to index", - messages = { - "PopMode", - { - SwitchModeBuiltin = "number", - }, - "BufferInputFromKey", - }, - }, - on_special_character = nil, - default = nil, - }, -} - ------- Quit -xplr.config.modes.builtin.quit = { - name = "quit", - help = nil, - extra_help = nil, - key_bindings = { - on_key = { - enter = { - help = "just quit", - messages = { - "Quit", - }, - }, - p = { - help = "quit printing pwd", - messages = { - "PrintPwdAndQuit", - }, - }, - f = { - help = "quit printing focus", - messages = { - "PrintFocusPathAndQuit", - }, - }, - s = { - help = "quit printing selection", - messages = { - "PrintSelectionAndQuit", - }, - }, - r = { - help = "quit printing result", - messages = { - "PrintResultAndQuit", - }, - }, - esc = { - help = "cancel", - messages = { - "PopMode", - }, - }, - ["ctrl-c"] = { - help = "terminate", - messages = { - "Terminate", - }, - }, - }, - }, -} - ------- Search -xplr.config.modes.builtin.search = { - name = "search", - help = nil, - extra_help = nil, - key_bindings = { - on_key = { - backspace = { - help = "remove last character", - messages = { - { - RemoveNodeFilterFromInput = "IRelativePathDoesContain", - }, - "RemoveInputBufferLastCharacter", - { - AddNodeFilterFromInput = "IRelativePathDoesContain", - }, - "ExplorePwdAsync", - }, - }, - ["ctrl-c"] = { - help = "terminate", - messages = { "Terminate" }, - }, - ["ctrl-u"] = { - help = "remove line", - messages = { - { - RemoveNodeFilterFromInput = "IRelativePathDoesContain", - }, - { - SetInputBuffer = "", - }, - { - AddNodeFilterFromInput = "IRelativePathDoesContain", - }, - "ExplorePwdAsync", - }, - }, - ["ctrl-w"] = { - help = "remove last word", - messages = { - { - RemoveNodeFilterFromInput = "IRelativePathDoesContain", - }, - "RemoveInputBufferLastWord", - { - AddNodeFilterFromInput = "IRelativePathDoesContain", - }, - "ExplorePwdAsync", - }, - }, - down = { - help = "down", - messages = { "FocusNext" }, - }, - enter = { - help = "focus", - messages = { - { - RemoveNodeFilterFromInput = "IRelativePathDoesContain", - }, - "PopMode", - "ExplorePwdAsync", - }, - }, - left = { - help = "back", - messages = { - { - RemoveNodeFilterFromInput = "IRelativePathDoesContain", - }, - "Back", - { - SetInputBuffer = "", - }, - "ExplorePwdAsync", - }, - }, - right = { - help = "enter", - messages = { - { - RemoveNodeFilterFromInput = "IRelativePathDoesContain", - }, - "Enter", - { - SetInputBuffer = "", - }, - "ExplorePwdAsync", - }, - }, - tab = { - help = "toggle selection", - messages = { "ToggleSelection", "FocusNext" }, - }, - up = { - help = "up", - messages = { "FocusPrevious" }, - }, - }, - on_alphabet = nil, - on_number = nil, - on_special_character = nil, - default = { - help = nil, - messages = { - { - RemoveNodeFilterFromInput = "IRelativePathDoesContain", - }, - "BufferInputFromKey", - { - AddNodeFilterFromInput = "IRelativePathDoesContain", - }, - "ExplorePwdAsync", - }, - }, - }, -} - -xplr.config.modes.builtin.search.key_bindings.on_key["esc"] = - xplr.config.modes.builtin.search.key_bindings.on_key.enter -xplr.config.modes.builtin.search.key_bindings.on_key["ctrl-n"] = - xplr.config.modes.builtin.search.key_bindings.on_key.down -xplr.config.modes.builtin.search.key_bindings.on_key["ctrl-p"] = - xplr.config.modes.builtin.search.key_bindings.on_key.up - ------- Filter -xplr.config.modes.builtin.filter = { - name = "filter", - help = nil, - extra_help = nil, - key_bindings = { - on_key = { - ["R"] = { - help = "relative does not contain", - messages = { - { - SwitchModeBuiltin = "relative_path_does_not_contain", - }, - { - SetInputBuffer = "", - }, - { - AddNodeFilterFromInput = "IRelativePathDoesNotContain", - }, - "ExplorePwdAsync", - }, - }, - backspace = { - help = "remove last filter", - messages = { "RemoveLastNodeFilter", "ExplorePwdAsync" }, - }, - ["ctrl-c"] = { - help = "terminate", - messages = { "Terminate" }, - }, - ["ctrl-r"] = { - help = "reset filters", - messages = { "ResetNodeFilters", "ExplorePwdAsync" }, - }, - ["ctrl-u"] = { - help = "clear filters", - messages = { "ClearNodeFilters", "ExplorePwdAsync" }, - }, - enter = { - help = "done", - messages = { "PopMode" }, - }, - ["r"] = { - help = "relative does contain", - messages = { - { - SwitchModeBuiltin = "relative_path_does_contain", - }, - { - SetInputBuffer = "", - }, - { - AddNodeFilterFromInput = "IRelativePathDoesContain", - }, - "ExplorePwdAsync", - }, - }, - }, - on_alphabet = nil, - on_number = nil, - on_special_character = nil, - default = nil, - }, -} - -xplr.config.modes.builtin.filter.key_bindings.on_key["esc"] = - xplr.config.modes.builtin.filter.key_bindings.on_key.enter - ------- Relative path does contain -xplr.config.modes.builtin.relative_path_does_contain = { - name = "relative path does contain", - help = nil, - extra_help = nil, - key_bindings = { - on_key = { - backspace = { - help = "remove last character", - messages = { - { - RemoveNodeFilterFromInput = "IRelativePathDoesContain", - }, - "RemoveInputBufferLastCharacter", - { - AddNodeFilterFromInput = "IRelativePathDoesContain", - }, - "ExplorePwdAsync", - }, - }, - ["ctrl-c"] = { - help = "terminate", - messages = { "Terminate" }, - }, - ["ctrl-u"] = { - help = "remove line", - messages = { - { - RemoveNodeFilterFromInput = "IRelativePathDoesContain", - }, - { - SetInputBuffer = "", - }, - { - AddNodeFilterFromInput = "IRelativePathDoesContain", - }, - "ExplorePwdAsync", - }, - }, - ["ctrl-w"] = { - help = "remove last word", - messages = { - { - RemoveNodeFilterFromInput = "IRelativePathDoesContain", - }, - "RemoveInputBufferLastWord", - { - AddNodeFilterFromInput = "IRelativePathDoesContain", - }, - "ExplorePwdAsync", - }, - }, - enter = { - help = "apply filter", - messages = { "PopMode" }, - }, - esc = { - help = "cancel", - messages = { - { - RemoveNodeFilterFromInput = "IRelativePathDoesContain", - }, - "PopMode", - "ExplorePwdAsync", - }, - }, - }, - on_alphabet = nil, - on_number = nil, - on_special_character = nil, - default = { - help = nil, - messages = { - { - RemoveNodeFilterFromInput = "IRelativePathDoesContain", - }, - "BufferInputFromKey", - { - AddNodeFilterFromInput = "IRelativePathDoesContain", - }, - "ExplorePwdAsync", - }, - }, - }, -} - ------- Relative path does not contain -xplr.config.modes.builtin.relative_path_does_not_contain = { - name = "relative path does not contain", - help = nil, - extra_help = nil, - key_bindings = { - on_key = { - backspace = { - help = "remove last character", - messages = { - { - RemoveNodeFilterFromInput = "IRelativePathDoesNotContain", - }, - "RemoveInputBufferLastCharacter", - { - AddNodeFilterFromInput = "IRelativePathDoesNotContain", - }, - "ExplorePwdAsync", - }, - }, - ["ctrl-c"] = { - help = "terminate", - messages = { "Terminate" }, - }, - ["ctrl-u"] = { - help = "remove line", - messages = { - { - RemoveNodeFilterFromInput = "IRelativePathDoesNotContain", - }, - { - SetInputBuffer = "", - }, - { - AddNodeFilterFromInput = "IRelativePathDoesNotContain", - }, - "ExplorePwdAsync", - }, - }, - ["ctrl-w"] = { - help = "remove last word", - messages = { - { - RemoveNodeFilterFromInput = "IRelativePathDoesNotContain", - }, - "RemoveInputBufferLastWord", - { - AddNodeFilterFromInput = "IRelativePathDoesNotContain", - }, - "ExplorePwdAsync", - }, - }, - enter = { - help = "apply filter", - messages = { "PopMode" }, - }, - esc = { - help = "cancel", - messages = { - { - RemoveNodeFilterFromInput = "IRelativePathDoesNotContain", - }, - "PopMode", - "ExplorePwdAsync", - }, - }, - }, - on_alphabet = nil, - on_number = nil, - on_special_character = nil, - default = { - help = nil, - messages = { - { - RemoveNodeFilterFromInput = "IRelativePathDoesNotContain", - }, - "BufferInputFromKey", - { - AddNodeFilterFromInput = "IRelativePathDoesNotContain", - }, - "ExplorePwdAsync", - }, - }, - }, -} - ------- Sort -xplr.config.modes.builtin.sort = { - name = "sort", - help = nil, - extra_help = nil, - key_bindings = { - on_key = { - ["!"] = { - help = "reverse sorters", - messages = { "ReverseNodeSorters", "ExplorePwdAsync" }, - }, - ["E"] = { - help = "by canonical extension reverse", - messages = { - { - AddNodeSorter = { - sorter = "ByCanonicalExtension", - 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" }, - }, - ["ctrl-c"] = { - help = "terminate", - messages = { "Terminate" }, - }, - ["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 = "done", - messages = { "PopMode" }, - }, - ["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 = nil, - on_number = nil, - on_special_character = nil, - default = nil, - }, -} - -xplr.config.modes.builtin.sort.key_bindings.on_key["esc"] = - xplr.config.modes.builtin.sort.key_bindings.on_key.enter - ------- Switch layout -xplr.config.modes.builtin.switch_layout = { - name = "switch layout", - help = nil, - extra_help = nil, - 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", - }, - }, - ["ctrl-c"] = { - help = "terminate", - messages = { "Terminate" }, - }, - esc = { - help = "cancel", - messages = { "PopMode" }, - }, - }, - on_alphabet = nil, - on_number = nil, - on_special_character = nil, - default = nil, - }, -} - ----- Custom -xplr.config.modes.custom = {} - --- Function ----- Builtin ------- Formaters --------- Format index column -xplr.fn.builtin.fmt_general_table_row_cols_0 = function(m) - local r = "" - if m.is_before_focus then - r = r .. " -" - else - r = r .. " " - end - - r = r .. m.relative_index .. "│" .. m.index - - return r -end - --------- Format path column -xplr.fn.builtin.fmt_general_table_row_cols_1 = function(m) - local r = m.tree .. m.prefix - - if m.meta.icon == nil then - r = r .. "" - else - r = r .. m.meta.icon .. " " - end - - r = r .. m.relative_path - - if m.is_dir then - r = r .. "/" - end - - r = r .. m.suffix .. " " - - if m.is_symlink then - r = r .. "-> " - - if m.is_broken then - r = r .. "×" - else - r = r .. m.symlink.absolute_path - - if m.symlink.is_dir then - r = r .. "/" - end - end - end - - return r -end - --------- Format permissions column -xplr.fn.builtin.fmt_general_table_row_cols_2 = function(m) - local no_color = os.getenv("NO_COLOR") - - local function green(x) - if no_color == nil then - return "\x1b[32m" .. x .. "\x1b[0m" - else - return x - end - end - - local function yellow(x) - if no_color == nil then - return "\x1b[33m" .. x .. "\x1b[0m" - else - return x - end - end - - local function red(x) - if no_color == nil then - return "\x1b[31m" .. x .. "\x1b[0m" - else - return x - end - end - - local function bit(x, color, cond) - if cond then - return color(x) - else - return color("-") - end - end - - local p = m.permissions - - local r = "" - - -- User - r = r .. bit("r", green, p.user_read) - r = r .. bit("w", yellow, p.user_write) - - if p.user_execute == false and p.setuid == false then - r = r .. bit("-", red, p.user_execute) - elseif p.user_execute == true and p.setuid == false then - r = r .. bit("x", red, p.user_execute) - elseif p.user_execute == false and p.setuid == true then - r = r .. bit("S", red, p.user_execute) - else - r = r .. bit("s", red, p.user_execute) - end - - -- Group - r = r .. bit("r", green, p.group_read) - r = r .. bit("w", yellow, p.group_write) - - if p.group_execute == false and p.setuid == false then - r = r .. bit("-", red, p.group_execute) - elseif p.group_execute == true and p.setuid == false then - r = r .. bit("x", red, p.group_execute) - elseif p.group_execute == false and p.setuid == true then - r = r .. bit("S", red, p.group_execute) - else - r = r .. bit("s", red, p.group_execute) - end - - -- Other - r = r .. bit("r", green, p.other_read) - r = r .. bit("w", yellow, p.other_write) - - if p.other_execute == false and p.setuid == false then - r = r .. bit("-", red, p.other_execute) - elseif p.other_execute == true and p.setuid == false then - r = r .. bit("x", red, p.other_execute) - elseif p.other_execute == false and p.setuid == true then - r = r .. bit("T", red, p.other_execute) - else - r = r .. bit("t", red, p.other_execute) - end - - return r -end - --------- Format size column -xplr.fn.builtin.fmt_general_table_row_cols_3 = function(m) - if not m.is_dir then - return m.human_size - else - return "" - end -end - --------- Format mime column -xplr.fn.builtin.fmt_general_table_row_cols_4 = function(m) - if m.is_symlink and not m.is_broken then - return m.symlink.mime_essence - else - return m.mime_essence - end -end - ----- Custom -xplr.fn.custom = {} diff --git a/xplr/plugins/dragon/LICENSE b/xplr/plugins/dragon/LICENSE deleted file mode 100644 index 03b3d59..0000000 --- a/xplr/plugins/dragon/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2021 Arijit Basu - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/xplr/plugins/dragon/README.md b/xplr/plugins/dragon/README.md deleted file mode 100644 index 8a74a12..0000000 --- a/xplr/plugins/dragon/README.md +++ /dev/null @@ -1,49 +0,0 @@ -[![xplr-dragon.gif](https://s6.gifyu.com/images/xplr-dragon.gif)](https://gifyu.com/image/A8N1) - -Drag and drop files using [dragon](https://github.com/mwh/dragon). - - -Requirements ------------- - -- [dragon](https://github.com/mwh/dragon) -- [curl](https://github.com/curl/curl) - - -Installation ------------- - -### Install manually - -- Add the following line in `~/.config/xplr/init.lua` - - ```lua - package.path = os.getenv("HOME") .. '/.config/xplr/plugins/?/src/init.lua' - ``` - -- Clone the plugin - - ```bash - mkdir -p ~/.config/xplr/plugins - - git clone https://github.com/sayanarijit/dragon.xplr ~/.config/xplr/plugins/dragon - ``` - -- Require the module in `~/.config/xplr/init.lua` - - ```lua - require("dragon").setup() - - -- Or - - require("dragon").setup{ - mode = "selection_ops", - key = "D", - drag_args = "", - drop_args = "", - keep_selection = false, - } - - -- Select files and type `:sD` to drag - -- Type `:sD` without selecting anything to drop - ``` diff --git a/xplr/plugins/dragon/src/init.lua b/xplr/plugins/dragon/src/init.lua deleted file mode 100644 index f0fdc9f..0000000 --- a/xplr/plugins/dragon/src/init.lua +++ /dev/null @@ -1,62 +0,0 @@ -local function setup(args) - local xplr = xplr - - if args == nil then - args = {} - end - - if args.mode == nil then - args.mode = "selection_ops" - end - - if args.key == nil then - args.key = "D" - end - - if args.keep_selection == nil then - args.keep_selection = false - end - - if args.drag_args == nil then - args.drag_args = "" - end - - if args.drop_args == nil then - args.drop_args = "" - end - - xplr.fn.custom.dragon_drag_n_drop = function(app) - local files = {} - local count = 0 - local cmd = nil - - for i, node in ipairs(app.selection) do - table.insert(files, node.absolute_path) - count = i - end - - if count == 0 then - cmd = "(dragon --target " .. args.drop_args .. " 2> /dev/null | xargs -rl curl -sLO) &\ntrue" - elseif count == 1 then - cmd = "dragon --and-exit " .. args.drag_args .. " '" .. files[1] .. "' > /dev/null 2>&1 &\ntrue" - else - cmd = "dragon " .. args.drag_args .. " '" .. table.concat(files, "' '") .. "' > /dev/null 2>&1 &\ntrue" - end - - os.execute(cmd) - - if not args.keep_selection then - return { "ClearSelection" } - end - end - - xplr.config.modes.builtin[args.mode].key_bindings.on_key[args.key] = { - help = "drag & drop", - messages = { - { CallLuaSilently = "custom.dragon_drag_n_drop" }, - "PopMode", - }, - } -end - -return { setup = setup } |