← 返回项目作品
一个托盘装下所有小工具,功能以插件形式挂载。
额度浮窗当前的形态,后续作为插件迁入工具箱。
项目作品 · 桌面应用
TaoTaoBox
Windows 桌面工具箱。托盘、设置、热键、配置、日志、更新和插件加载都由壳完成一次,具体功能以插件形式接入——加一个新工具,不用改主体。
- 状态
- 0.1.0 骨架开发中
- 平台
- Windows 桌面
- 技术
- C++17 + Qt 6.12 Widgets
- 首批插件
- 截图 · 额度浮窗 · 剪贴板
为什么重新做一个壳
此前的额度浮窗工具把窗口、网络、配置、更新全塞进一个总控类,结果是想加一个新功能都得往同一个文件里塞。TaoTaoBox 反着来:把「所有工具都要做一遍」的事情收进壳,把「每个工具各不相同」的事情留给插件。壳不认识「额度」「截图」这些词,只负责把它们装起来。
壳负责的部分
-
托盘与单实例
常驻托盘、菜单项按已装模块自动生成,重复启动只唤起已有实例。
-
设置中枢
左侧分组导航加模块画廊,每个插件有独立设置页,由插件提供界面、宿主负责摆放。
-
全局热键仲裁
插件只声明「想要哪个键」,注册、冲突检测、改键和持久化统一在宿主完成。
-
配置与日志
单一
config.json按插件命名空间隔离,原子写入并带版本迁移;日志统一一个流,带模块前缀。 -
在线更新与验签
宿主和插件两条更新链,安装包用 RSA-3072 签名,公钥内置在程序里。
-
插件加载与卸载
扫描清单、校验 SDK 版本、验签、加载、启停;任一步失败只影响该插件,不会拖垮宿主。
插件怎么接进来
两种形态并存:需要深度共享宿主状态的写成内置模块,编进主程序;相对独立的功能做成 DLL 动态插件,可以热插拔。动态插件走纯 C 导出入口,避免 C++ ABI 在不同编译器和 Qt 版本之间踩坑。
- 统一契约。插件实现
descriptor / initialize / activate / deactivate / settingsPage / destroy六个动作,宿主只看这一套。 - 主题令牌。插件只能取壳提供的颜色、字号、圆角和间距,不能硬编码色值,也不允许注入全局样式表。
- 卸载有底线。卸载失败不崩溃、不阻塞,降级成「停用(需重启)」,下次启动不再加载。
- 升级可回滚。插件更新先卸载旧实例再加载新实例,失败退回旧版本目录。
性能预算写进设计
工具箱最怕「装了一个小工具,开机变慢、内存涨一截」,所以几个硬指标在架构阶段就定好了:冷启动到托盘可见 800 毫秒以内,壳加一个插件常驻内存 80 MB 以内,空闲 CPU 低于 0.3%,安装包 35 MB 以内,单个插件加载不超过 150 毫秒。
首批插件
三个已有工具正在按插件契约迁入,目前处于骨架和迁移阶段,还没有对外版本。
- 额度监控。浮窗、托盘项、设置页整体插件化,先做到与现有独立版本功能对等。
- 截图。把已有的截图工具接进来,共用热键、托盘与设置中枢。
- 剪贴板多选。历史记录支持多选后再粘贴,而不是一次只能取一条。