Skip to content

Add key-* DDS event for basic file/directory operations #3032

@TKperson

Description

@TKperson

yazi --debug output

Yazi
    Version: 25.6.11 (da97e5a8 2025-08-02)
    Debug  : false
    Triple : x86_64-unknown-linux-gnu (linux-x86_64)
    Rustc  : 1.88.0 (6b00bc38 2025-06-23)

Ya
    Version: 25.6.11 (da97e5a8 2025-08-02)

Emulator
    TERM                : Some("screen-256color")
    TERM_PROGRAM        : Some("tmux")
    TERM_PROGRAM_VERSION: Some("3.5a")
    Brand.from_env      : Some(Ghostty)
    Emulator.detect     : Emulator { kind: Left(Ghostty), light: false, csi_16t: (10, 25), force_16t: false }

Adapter
    Adapter.matches    : Kgp
    Dimension.available: Dimension { rows: 39, columns: 189, width: 1890, height: 975 }

Desktop
    XDG_SESSION_TYPE           : Some("wayland")
    WAYLAND_DISPLAY            : Some("wayland-1")
    DISPLAY                    : Some(":0")
    SWAYSOCK                   : None
    HYPRLAND_INSTANCE_SIGNATURE: Some("4e242d086e20b32951fdc0ebcbfb4d41b5be8dcc_1753006558_1839103260")
    WAYFIRE_SOCKET             : None

SSH
    shared.in_ssh_connection: false

WSL
    WSL: false

Variables
    SHELL           : Some("/usr/bin/zsh")
    EDITOR          : Some("nvim")
    VISUAL          : None
    YAZI_FILE_ONE   : None
    YAZI_CONFIG_HOME: None
    YAZI_ZOXIDE_OPTS: None
    FZF_DEFAULT_OPTS: Some("\n  \n  \n  --color=\'border:#161B20,preview-bg:#161B20\'\n  --color=\'scrollbar:#24292E,gutter:#161B20\'\n  --color=\'bg+:#24292E,fg+:#D4D4D5,spinner:#79DCAA\'\n  --color=\'pointer:#C397D8,marker:#F87070\'\n  --color=\'info:#70C0BA,bg:#11161B\'\n  --scrollbar=\'░\'\n  --border=\'none\'\n  --separator=\'▓\'\n  --marker=\'\u{f02c} \'\n  --ellipsis=\'… \'\n  --prompt=\'ﭑ \'\n  --pointer=\' λ\'\n  --layout=reverse\n  --bind=\'ctrl-v:execute(nvim {}),shift-up:preview-page-up,shift-down:preview-page-down\'\n  --cycle\n  --height=40\n  --color=\'border:#161B20,preview-bg:#161B20\'\n  --color=\'scrollbar:#24292E,gutter:#161B20\'\n  --color=\'bg+:#24292E,fg+:#D4D4D5,spinner:#79DCAA\'\n  --color=\'pointer:#C397D8,marker:#F87070\'\n  --color=\'info:#70C0BA,bg:#11161B\'\n  --scrollbar=\'░\'\n  --border=\'none\'\n  --separator=\'▓\'\n  --marker=\'\u{f02c} \'\n  --ellipsis=\'… \'\n  --prompt=\'ﭑ \'\n  --pointer=\' λ\'\n  --layout=reverse\n  --bind=\'ctrl-v:execute(nvim {}),shift-up:preview-page-up,shift-down:preview-page-down\'\n  --cycle\n  --height=40")

Text Opener
    default     : Some(OpenerRule { run: "${EDITOR:-vi} \"$@\"", block: true, orphan: false, desc: "$EDITOR", for: None, spread: true })
    block-create: Some(OpenerRule { run: "${EDITOR:-vi} \"$@\"", block: true, orphan: false, desc: "$EDITOR", for: None, spread: true })
    block-rename: Some(OpenerRule { run: "${EDITOR:-vi} \"$@\"", block: true, orphan: false, desc: "$EDITOR", for: None, spread: true })

Multiplexers
    TMUX               : true
    tmux version       : tmux 3.5a
    tmux build flags   : enable-sixel=Unknown
    ZELLIJ_SESSION_NAME: None
    Zellij version     : No such file or directory (os error 2)

Dependencies
    file          : 5.46
    ueberzugpp    : 2.9.7
    ffmpeg/ffprobe: 7.1.1 / 7.1.1
    pdftoppm      : 25.07.0
    magick        : 7.1.2-0
    fzf           : 0.64.0
    fd/fdfind     : 10.2.0 / No such file or directory (os error 2)
    rg            : 14.1.1
    chafa         : 1.16.0
    zoxide        : 0.9.8
    7zz/7z        : No such file or directory (os error 2) / 24.09
    resvg         : No such file or directory (os error 2)
    jq            : 1.8.1

Clipboard
    wl-copy/paste: 2.2.1 / 2.2.1
    xclip        : 0.13
    xsel         : 1.2.1

Routine
    `file -bL --mime-type`: text/plain


See https://yazi-rs.github.io/docs/plugins/overview#debugging on how to enable logging or debug runtime errors.

Please describe the problem you're trying to solve

These features are needed to support the archive virtual filesystem. The VFS is created by emitting update_files and cd to an archive scheme URL (e.g. archive://id//tmp/x.zip)

Currently doing any common file operations (rename, delete, cut, yank...) inside of the VFS causes errors. The discussions are done inside of the Yazi discord server.

Would you be willing to contribute this feature?

  • Yes, I'll give it a shot

Describe the solution you'd like

Here are a list of common operations that need to be supported inside of an archive VFS along with their purposes.

key-paste - used for extracting and adding items from and to archive files without deleting anything
key-cut - used to move items in and out of archive and also delete them from where they were cut from
key-rename + key-bulk - both for renaming items inside of the archive file
key-delete - remove files from archive
key-create - detecting the creation of directory and files through the create command, so that the plugin can create the new file/directory inside of the archive file

Additional context

No response

Checklist

  • I have searched the existing issues/discussions
  • The latest nightly build doesn't already have this feature

Metadata

Metadata

Assignees

No one assigned

    Labels

    featureNew feature request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions