sulfide2085/dsh-custom-context-menu

sulfide2085★ 0JavaScript最后同步: 2026-08-16

在 GitHub 打开

DSH Web custom context menu: extensible provider API + open workspace folder in Explorer

README 摘要

dsh-custom-context-menu English · 中文 DeepSeek Harness(DSH)Web UI 的自定义右键菜单插件:全局接管浏览器右键,提供零依赖的扩展菜单框架,并内置“右键工作区 → 在资源管理器中打开文件夹”。 特性 - 全局 contextmenu 接管 :捕获阶段拦截浏览器右键,输入框/文本域/可编辑元素与菜单自身除外 - 可扩展 provider :一行 register() 注册菜单项,支持分隔线、分组标题、禁用项、危险项、hint - 键盘导航 :↑/↓ 循环选择,Enter/Space 触发 - 智能定位 :菜单超右/下边缘自动翻转,并夹紧在视口内 - 无命中不打扰 :没有 provider 命中时放行浏览器原生菜单,不再显示“暂无菜单项”占位 - 打开工作区文件夹 :右键侧边栏工作区行 → 「打开文件夹」→ host 半直接拉起系统文件管理器 - Windows: explorer.exe ,路径自动规范化为反斜杠,并通过前台激活 helper 把窗口带到最前 - macOS: open - Linux: xdg-open - 失败可见 :打开前校验目录存在;路径失效时明确报错,不会假报“已打开文件夹” 安装 本地安装 重启 DSH Web 生效。 从 GitHub 安装 dsh plugin add 会把包以 link: /Git 依赖方式装进 profile,并把本包 cordis.patch.yml 声明的 bundle 层追加到 dsh.profile.bundles 。 快速使用:注册菜单项 在浏览器控制台(F12)或其他插件中: 菜单项模型 形式 说明 "字符串" 简写 item,label 即字符串 { label, onClick?, disabled?, danger?, hint? } 常规项; onClick(item, ctx) 的 ctx 为 { target, x, y } { type: "separator" } 分隔线(连续分隔线自动压缩,首尾丢弃) { type: "label", text } 只读分组标题 完整 API( window.dshContextMenu ) 成员 说明 register(provider) 注册 (target, event) = items[] \ null ,返回注销函数;多个 provider 依次询问,第一个非空结果胜出 setEnabled(bool) / enabled 全局开关;关闭后完全放行浏览器原生右键菜单 open(x, y, items) 命令式在视口坐标弹菜单(不经过拦截器) close() / isOpen / itemCount 关闭 / 状态查询 debug() 诊断各部件状态,便于排障 工作区“打开文件夹”…

在 GitHub 查看完整 README →
工具/开发context-menudeepseek-harnessdshdsh-pluginweb ui

分类