sulfide2085/dsh-custom-context-menu ↗★ 0
dsh-custom-context-menu
DSH Web 自定义右键菜单:全局拦截 contextmenu,提供可扩展菜单框架,并内置“打开工作区文件夹”功能
安装
$
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:sulfide2085/dsh-custom-context-menu说明文档
阅读完整 README ↗快速使用:注册菜单项
在浏览器控制台(F12)或其他插件中:
window.dshContextMenu.register((target, event) => {
const row = target.closest("[data-session-row]");
if (row === null) return null; // 不处理,交给下一个 provider
return [
{ type: "label", text: row.dataset.title },
{ label: "复制标题", onClick: () => navigator.clipboard.writeText(row.dataset.title) },
{ type: "separator" },
{ label: "删除会话", danger: true, onClick: () => { /* ... */ } }
];
});
菜单项模型
| 形式 | 说明 |
|---|---|
"字符串" | 简写 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() | 诊断各部件状态,便于排障 |