
deepin‑skills 优秀实践案例 -IPP‑USB 免驱助手
开发者:克亮
deepin-skills:dtk-development
项目仓库:https://github.com/tonglingcn/ipp‑usb‑assistant
社区讨论帖:IPP-USB 免驱助手-专帖
支持平台:deepin 25 / UOS V20
适配架构:amd64 /arm64 /riscv64 /loong64
项目缘起
家里或者办公室的 USB 一体机,明明硬件支持免驱打印扫描,deepin 系统底层其实也已经准备好了全套后台服务,奈何所有操作全都藏在命令行里。
普通小伙伴碰到问题就很头疼:
要敲命令启停后台服务、手动新建打印队列,遇到原厂驱动和系统组件抢设备的时候,还得去改黑名单配置。
社区论坛里,这类一体机的求助帖一直都不少。
正是基于这样的现状,一款 DTK 原生桌面小工具应运而生,为命令行操作补充图形入口,它就是 IPP‑USB 免驱助手。
AI 辅助开发过程
本项目是一次很有参考价值的 AI 协同开发实践:
辅助开发工具
CodeBuddy‑hy3 (free) + Opencode‑Ox (free) + deepin‑skills
项目开发以官方 dtk‑development skill 提供的 DTK6 / Qt6 开发规范作为核心依据,帮助规避了大量 API 适配的试错工作。
整体开发流程
- 由开发者编写完整的 README 文档,梳理产品功能,作为项目开发指南;
- 研读上游 ipp‑usb 开源源码,理清底层服务逻辑;
- 使用 AI 助手,调用 dtk‑development skill ,仅几轮对话就生成软件基础原型;
- 在原型的基础上,完成真机测试、bug 修复以及多架构兼容性打磨。
原型完成之后继续开展后续打磨工作
- 实现一套源码同时兼容 Qt5/DTK5、Qt6/DTK6,维护两套编译脚本;
- 维护两套 debian 打包目录,分别适配 deepin 25、UOS V20;
- 依次完成环境自检、打印管理、扫描管理、高级过滤设置四大业务模块;
- 权限采用 pkexec 最小提权方案,不以 root 运行图形会话,规避桌面会话异常;
- 通过 CI 流水线完成四大硬件架构的 deb 构建,同步开展 lintian 打包规范校验。
主要功能
环境自检
-
一键检测 ipp‑usb、avahi‑daemon、cups后台服务运行状态,自动识别 USB 一体机硬件。 -
区分就绪、部分就绪、不可用三种状态;异常服务支持一键重启,同时对缺失的软件包给出安装指引。

打印管理
-
无需厂商驱动文件,直接图形化创建 driverless 免驱打印队列; -
可查看、删除本机已有 CUPS 打印队列,一键输出测试页验证打印效果; -
支持纸张规格调整、双面翻转方向修正。


扫描功能
-
同时兼容 eSCL 免驱扫描、原生 SANE 驱动扫描两种工作路径。 -
支持分辨率、色彩模式设置,内置扫描预览,扫描结果直接保存至本地。
💡小提示:该工具定位偏向环境调试;如果需要完成大批量多页扫描作业,可以搭配社区开源应用「靓仔扫描」使用。

高级设置
提供两个互相独立的过滤维度,用于解决「厂商自带原生驱动」与「免驱」的共存问题。
-
整机放行:将设备移出 ipp‑usb 接管,打印扫描全部交由原厂驱动处理;

-
扫描通道排除:保留 IPP‑USB 免驱打印能力,仅关闭 eSCL 扫描通道。

安装方式

如果是内网环境,也可前往 Github Releases 下载 .deb 安装。
写在最后
IPP‑USB 免驱助手是 deepin‑Skills 开发者活动当中一个很典型的实践案例。
对于 Linux 桌面平台而言,很多底层系统组件本身已经具备完整能力,独立开发者不必重复实现复杂底层协议;为原有命令行能力补充一层原生 DTK 图形界面,就可以打造出实用的桌面小工具。
依托多款 AI 编程助手以及官方 dtk‑development skill 开发规范,可以有效减少样板代码编写与版本适配试错的工作量,让开发者把重心更多放在上游源码研读、多机型多架构真机测试上面。
当然,各式各样外设带来的兼容性难题,依旧需要依靠人工不断打磨完善。
项目保持完全开源,欢迎提交 Issue 与 PR,持续迭代优化这款工具。
作为在 DistroWatch 全球排名中表现突出、广受全球用户认可的开源操作系统,deepin 积极拥抱人工智能,紧跟智能化发展的趋势。无论你是想为 deepin 生态添砖加瓦,还是希望提升自己的桌面应用开发能力,deepin-skills 都将是你的得力助手。让我们一起,共建更强大的 deepin 开源生态!
如果大家对IPP‑USB 免驱助手感兴趣,也欢迎来 IPP-USB 免驱助手-专帖 一起讨论~

English