dsh-plugin-drone
English | 中文

把 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](LICENSE)