dsh-plugin-drone

by initialencounter

2 工具与能力github收录于 08-23

把文件或文件夹从资源管理器平滑拖进 dsh

Drag files or floders from explorer into dsh smoothly

安装

dsh plugin --profile web add github:initialencounter/dsh-plugin-drone

GitHub 源码安装:首次需按提示配置 allowBuilds 构建授权后重试

安装与环境配置指引、插件开发教程见 DSH 中文社区文档 ↗

安装即在你的机器上以你的权限运行第三方代码——它可读写文件、使用凭据、访问网络,DSH 的工具审批不会为插件代码加沙箱。「检测到 manifest」仅代表发现 dsh.bundle / dsh.plugin 清单,不构成兼容性或安全审查;安装前请审阅源码,不熟悉的插件先在不含密钥的环境试用。

README

目录

English | 中文

npm version

把 Windows 资源管理器里的文件 / 文件夹平滑地拖进 dsh 的插件。

当你在资源管理器中按住鼠标左键拖出文件时,插件会通过原生绑定捕获这次拖拽,并把被拖拽项的路径列表以 flextrek-drag 事件广播给 dsh 上下文,让其他模块拿到这些文件做进一步处理(比如加入当前会话的上下文)。

安装

dsh plugin --profile web add dsh-plugin-drone

特性

  • 监听从 Windows 资源管理器拖出的文件 / 文件夹(拖动即触发,无需快捷键)
  • 拖拽事件携带被拖拽项的绝对路径数组派发到 dsh
  • 以 flextrek 服务的形式注册,生命周期由 cordis 管理,卸载时自动注销监听

工作原理

插件基于 dsh 的 cordis 框架编写,由两部分组成:

  • Drone(插件入口):加载时挂载 FlextreckService 服务。
  • FlextreckService(服务):调用 @initencounter/flextrek 提供的 listenExplorerDragFiles,注册一个全局拖拽监听;每当从资源管理器拖出文件时,把路径数组 ctx.emit('flextrek-drag', files) 发出去。服务被 dispose() 时注销监听。

底层依赖 @initencounter/flextrek 是基于 flextrek-rs(Rust 原生库)的 Windows 绑定,因此仅在 Windows x64 上可用。

事件

事件 载荷 说明
flextrek-drag string[] 从资源管理器拖出的文件 / 文件夹的绝对路径

服务

服务 说明
flextrek 持有拖拽监听,dispose() 时注销所有句柄

使用

在 dsh 中订阅事件即可消费拖拽结果,例如:

ctx.on('flextrek-drag', (files) => {
  console.log('拖入的文件:', files)
})

环境要求

  • Windows x64(flextrek 原生绑定当前仅支持 win32-x64-msvc)
  • Node.js 运行时

LICENSE

AGPL-3.0

原始 README: https://github.com/initialencounter/dsh-plugin-drone/blob/main/README.zh.md ↗