~/.local/share/deepin/clipboard-helper/history.db
DBlurEffectWidget
Ctrl+Shift+V
Ctrl+Alt+V
Super+V
配置文件:org.deepin.clipboardhelper.settings
org.deepin.clipboardhelper.settings
maxHistoryCount
recordImages
recordHtml
showTrayIcon
autoStart
globalHotkey
所有配置均可在「设置」对话框可视化修改。
依赖:
sudo apt install cmake g++ \ qt6-base-dev libqt6sql6-sqlite \ libdtk6core-dev libdtk6gui-dev libdtk6widget-dev \ xclip
全局热键需要 X11 与 xcb 开发库(libx11-dev、libxcb1-dev)。
libx11-dev
libxcb1-dev
编译安装:
mkdir build && cd build cmake .. make -j$(nproc) sudo make install
安装内容:
/usr/local/bin/clipboard-helper
/usr/local/share/applications/clipboard-helper.desktop
/usr/local/share/icons/clipboard-helper.svg
/usr/local/share/dsg/configs/org.deepin.clipboardhelper/
从应用启动器运行「剪贴板历史」,或命令行执行:
clipboard-helper
~/.local/share/deepin/clipboard-helper/
--show
--settings
--search <关键词>
示例:
clipboard-helper --show --search deepin
日常使用电脑时经常遇到以下痛点:
于是决定做一个面向 deepin 25 的剪贴板历史管理工具,作为本次 deepin 插件开发活动的参赛作品。
bash <(curl -fsSL https://raw.githubusercontent.com/linuxdeepin/deepin-skills/master/scripts/install.sh)
dtk-development
开发全程由 AI 编程工具(opencode)配合 dtk-development Skill 完成:
CMakeLists.txt
main.cpp
trayicon.cpp
floatingwindow.cpp
{appId}/{configId}.json
assets/config/*.json
debian/
剪贴板监听(ClipboardManager)
数据存储(HistoryDb)
交互界面
全局热键(GlobalHotkey)
Can't load resource: /org.deepin.clipboardhelper.settings, for the appid:[clipboard-helper]
根因:安装到了 /usr/share/dsg/configs/org.deepin.clipboardhelper/(用了 configId 当目录名) 解决:改为 /usr/share/dsg/configs/clipboard-helper/org.deepin.clipboardhelper.settings.json
/usr/share/dsg/configs/org.deepin.clipboardhelper/
/usr/share/dsg/configs/clipboard-helper/org.deepin.clipboardhelper.settings.json
4.2 依赖版本过严导致 apt 卸载 现象:朋友安装后 apt -f install 提示卸载包 根因:自动生成的 libdtk6core (>= 6.7.47.1)、libqt6core6 (>= 6.8.0) 版本下限过高 解决:debian/control 手写宽松依赖(DTK/Qt >= 6.5.0),兼容 deepin 25 各版本 4.3 关闭终端杀死进程 现象:从终端启动后关终端,进程和托盘被杀死 解决:main 入口忽略 SIGHUP 4.4 关闭主窗口后托盘被杀 现象:点关闭按钮,整个应用退出、托盘消失 解决:重写 MainWindow::closeEvent 隐藏到托盘 + setQuitOnLastWindowClosed(false),退出统一走托盘菜单 4.5 关于对话框英文 / deepin.org 现象:关于页显示英文(Version/Website/License)且链接指向 deepin.org 解决:恢复 loadTranslator() 加载 DTK 内置中文翻译;setApplicationHomePage() 指向作者 GitHub;自定义中文 DAboutDialog 4.6 标题栏英文菜单 现象:标题栏菜单有重复的「关于 / About」「Exit」 解决:隐藏 titlebar 菜单按钮,功能统一收敛到托盘中文菜单 4.7 无合成器环境渲染兼容 现象:Xvfb / 远程桌面下 XRecord 监听线程干扰 Qt 渲染 解决:全局热键由 XRecord 线程改为 XGrabKey + 原生事件过滤器 五、测试与打包 5.1 功能测试 用例 方法 结果 文本记录 `echo "hello" xclip -selection clipboard` 图片记录 xclip -i -t image/png 通过 文件路径 复制文件路径 通过 全局热键 任意应用按 Ctrl+Shift+V 通过(X11) 托盘保活 关闭主窗口后进程保持 通过 配置持久化 修改设置后重启应用 通过 5.2 打包 使用 debuild 生成 deb 包,安装到 /usr/bin、/usr/share lintian 检查通过(仅无警告级 no-manual-page) 六、AI 使用情况(附对话截图) 本次开发全程使用 AI 编程工具(opencode),加载 deepin Skills 完成: Skill 使用:dtk-development(主)、参照 DConfig / DTitlebar / DAboutDialog 等规范文档 对话截图:见参赛材料中的 AI 对话截图(开发过程截图) AI 承担工作:代码编写、CMake/deb 打包配置、DConfig 路径修正、托盘保活、界面中文化、问题排查 说明:AI 生成的代码均在 deepin 25 真实环境编译、安装、运行验证通过,并交付给独立测试者验证安装与使用。 七、作品亮点 实用主义:从真实需求出发(找回被覆盖的复制内容),非炫技 四类内容:文本/图片/文件路径/富文本全支持,优先级智能处理 数据安全:纯本地存储、参数化防注入、大小上限保护 交互顺手:托盘 + 悬浮窗 + 全局热键,多入口零打扰 工程规范:DConfig 规范路径、deb 打包、GPL-3.0 开源 截图
apt -f install
libdtk6core (>= 6.7.47.1)
libqt6core6 (>= 6.8.0)
debian/control
>= 6.5.0
SIGHUP
MainWindow::closeEvent
setQuitOnLastWindowClosed(false)
loadTranslator()
setApplicationHomePage()
DAboutDialog
xclip -i -t image/png
/usr/bin
/usr/share
本次开发全程使用 AI 编程工具(opencode),加载 deepin Skills 完成:
说明:AI 生成的代码均在 deepin 25 真实环境编译、安装、运行验证通过,并交付给独立测试者验证安装与使用。
好东西啊,给你点赞👍
有两把梳子-嘻嘻
Featured Collection
Popular Events
源码仓库链接
项目文档
功能特性
自动记录
历史管理
数据安全
~/.local/share/deepin/clipboard-helper/history.db便捷交互
DBlurEffectWidget)迷你历史窗口,可置顶、可拖动,靠近光标弹出Ctrl+Shift+V,可在设置中自定义(如Ctrl+Alt+V、Super+V),留空即禁用配置项(DConfig)
配置文件:
org.deepin.clipboardhelper.settingsmaxHistoryCountrecordImagesrecordHtmlshowTrayIconautoStartglobalHotkeyCtrl+Shift+V所有配置均可在「设置」对话框可视化修改。
界面
构建
依赖:
编译安装:
安装内容:
/usr/local/bin/clipboard-helper:可执行程序/usr/local/share/applications/clipboard-helper.desktop:桌面入口/usr/local/share/icons/clipboard-helper.svg:应用图标/usr/local/share/dsg/configs/org.deepin.clipboardhelper/:DConfig 配置元信息运行
从应用启动器运行「剪贴板历史」,或命令行执行:
~/.local/share/deepin/clipboard-helper/即清除全部历史数据命令行参数
--show--settings--search <关键词>示例:
开发过程说明
一、项目概述
二、需求来源
日常使用电脑时经常遇到以下痛点:
于是决定做一个面向 deepin 25 的剪贴板历史管理工具,作为本次 deepin 插件开发活动的参赛作品。
三、开发流程(AI + deepin Skills)
3.1 准备阶段
bash <(curl -fsSL https://raw.githubusercontent.com/linuxdeepin/deepin-skills/master/scripts/install.sh)dtk-developmentSkill3.2 使用 Skill 的过程
开发全程由 AI 编程工具(opencode)配合
dtk-developmentSkill 完成:CMakeLists.txt、main.cpp入口trayicon.cpp(SNI 协议)floatingwindow.cpp{appId}/{configId}.json)assets/config/*.json、设置对话框debian/打包3.3 功能实现
剪贴板监听(ClipboardManager)
数据存储(HistoryDb)
交互界面
全局热键(GlobalHotkey)
四、开发中遇到的问题与解决
4.1 DConfig 配置读不到(安装后)
Can't load resource: /org.deepin.clipboardhelper.settings, for the appid:[clipboard-helper],设置无法持久化dtk-development/usr/share/dsg/configs/org.deepin.clipboardhelper/(用了 configId 当目录名)/usr/share/dsg/configs/clipboard-helper/org.deepin.clipboardhelper.settings.json4.2 依赖版本过严导致 apt 卸载
apt -f install提示卸载包libdtk6core (>= 6.7.47.1)、libqt6core6 (>= 6.8.0)版本下限过高debian/control手写宽松依赖(DTK/Qt>= 6.5.0),兼容 deepin 25 各版本4.3 关闭终端杀死进程
SIGHUP4.4 关闭主窗口后托盘被杀
MainWindow::closeEvent隐藏到托盘 +setQuitOnLastWindowClosed(false),退出统一走托盘菜单4.5 关于对话框英文 / deepin.org
loadTranslator()加载 DTK 内置中文翻译;setApplicationHomePage()指向作者 GitHub;自定义中文DAboutDialog4.6 标题栏英文菜单
4.7 无合成器环境渲染兼容
五、测试与打包
5.1 功能测试
xclip -i -t image/png5.2 打包
/usr/bin、/usr/share六、AI 使用情况(附对话截图)
本次开发全程使用 AI 编程工具(opencode),加载 deepin Skills 完成:
dtk-development(主)、参照 DConfig / DTitlebar / DAboutDialog 等规范文档七、作品亮点
截图