剪贴板与后台任务
后台事件、剪贴板读写能力,以及安全边界。
剪贴板与后台任务
DesKit 支持插件响应后台事件,例如剪贴板变化。这个能力很强,也很敏感,所以设计时要格外保守。
剪贴板事件
如果插件要在剪贴板变化时运行,需要在 manifest 中声明 activation event,并申请对应权限:
{
"contributes": {
"activationEvents": ["clipboard:change"]
},
"permissions": ["clipboard:read"]
}插件模块需要导出对应事件处理器。没有 handler 的插件不应该触发后台轮询。
支持的数据类型
当前剪贴板插件重点支持:
- 文本;
- 图片。
文件剪贴板暂不作为正式能力。一个折中方案是把文件路径当文本复制,但这只在本机有效,而且语义上不是完整的文件剪贴板同步。除非插件明确说明,否则不要把它当作跨设备文件能力。
写入剪贴板
写入剪贴板需要 clipboard:write。常见用法是:
- 把计算结果写入剪贴板;
- 把历史记录重新复制到剪贴板;
- 把转换后的文本写入剪贴板。
如果插件在监听剪贴板变化,写入时要避免把自己刚写入的内容重复记录到历史中。
后台任务设计
后台能力应当克制:
- 只在插件启用时运行。
- 插件停用或卸载后应立即停止。
- 没有实际 handler 时不要启动 watcher。
- 崩溃后不要继续保留无效监听。
- 用户应该能通过设置关闭敏感行为。
后台任务不应成为“隐藏服务”。它应该像一个清楚声明过的插件能力。