[AI Development Lab] 【deepin插件开发活动】任务栏一键切换系统代理
Tofloor
poster avatar
imysl89
deepin
12 hours ago
Author

作品简介

deepinFastProxySwitch 是一个 deepin/UOS v25 任务栏(Dock)代理快速切换插件:常显代理开关状态与当前代理缩写,左键一键开/关系统代理,右键切换/管理多个代理配置,支持延迟测试、剪贴板导入、忽略列表,还带应用内检查更新(自动下载安装)和一键卸载

日常需要频繁切换代理(本地 Clash、公司网关、PAC)的用户,不用再钻控制中心翻好几层设置。

  • 源码仓库https://cnb.cool/linshi-2026/deepinFastProxySwitch
  • 参赛方向:扩展 DDE Shell 桌面能力
  • 使用 Skill:dde-shell-development(主),dtk-development(DConfig 等)
  • 开发工具:ZCode(周末免费 1 亿 token 期间完成)
  • 开源协议:LGPL-3.0-or-later

功能特性

  • 一键开关:任务栏常显状态点(绿=开启/灰=关闭)+ 代理缩写,左键单击即切换系统代理
  • 多代理管理:HTTP / SOCKS5 / PAC 三类条目,添加/编辑/删除,自定义名称缩写,切换即时生效
  • 延迟测试:TCP 连接计时,菜单和列表直接显示,选最快的
  • 剪贴板导入:复制 socks5://127.0.0.1:1080 之类的文本,右键一键导入
  • 忽略列表:编辑不走代理的地址(支持域名/IP/CIDR,如 *.baidu.cn
  • 外部同步:控制中心改代理,插件状态实时跟随
  • 检查更新:关于窗口一键检测新版本,自动下载、pkexec 授权安装、自动重启生效
  • 中英文界面:跟随系统语言,其他语言保底中文,深浅色主题自适应

【截图 1:任务栏插件特写(开启状态绿色点+缩写)】

图片.png

【截图 2:右键菜单(代理列表+延迟显示)】

图片.png

【截图 3:代理管理窗口】

图片.png

【截图 4:关于窗口(检查更新发现新版本)】

图片.png

安装方式

方式一:直接下载 deb(推荐)

Release 页面 下载最新的 dde-fastproxyswitch_*_amd64.deb

sudo dpkg -i dde-fastproxyswitch_*.deb
systemctl --user restart dde-shell@DDE

装好后也可以直接在插件的“关于 → 检查更新”里完成后续升级。

方式二:源码构建

git clone https://cnb.cool/linshi-2026/deepinFastProxySwitch.git
cd deepinFastProxySwitch
dpkg-buildpackage -us -uc -b
sudo dpkg -i ../dde-fastproxyswitch_*.deb
systemctl --user restart dde-shell@DDE

卸载:sudo apt purge dde-fastproxyswitch,或插件“关于”窗口里点卸载按钮。

技术实现

  • 基于 dde-shell Applet 插件体系(C++ 后端 + QML 前端),挂在 Dock 任务栏区域
  • 系统代理通过 D-Bus 调用 org.deepin.dde.Network1SetProxy / SetProxyMethod),旧接口自动回退
  • 代理列表持久化在 DConfig,重装不丢
  • 附带 CNB CI 流水线:打 tag 自动构建 deb 并发布 Release(这也是应用内检查更新的数据源)

开发过程中踩了几个值得记录的坑(README 里有完整沉淀):

  1. QDBusInterface 的参数编组陷阱call(method, QVariantList) 会因重载歧义把整个参数列表编组成单个 av 类型,服务端报 UnknownMethod——必须用 QDBusMessage::createMethodCall + setArguments 逐参数编组
  2. v25 网络服务不广播忽略列表变更信号:改为打开窗口主动拉取 + 轮询兜底
  3. Dock 环境的 QML 限制:右键菜单必须用 Qt.labs.platform.Menu + MenuHelper;弹窗必须是独立 Window(Dialog 出不了 layer-shell)

开发过程:deepin Skills 辅助

本项目全程使用 ZCode(AI 编程 Agent)+ dde-shell-development Skill 完成:Skill 提供了 dde-shell 插件体系的三层模型、QML/C++ API、构建打包宏和调试方法,Agent 基于此完成了从工程搭建、D-Bus 联调、多语言、deb 打包到 CI 流水线的全部开发,真机验证通过。

【截图 5:AI 编程工具中调用 deepin Skills 的对话记录】

图片.png

全程使用GLM-5.3
图片.png

花费2h15min

图片.png

致谢

Reply Favorite View the author
All Replies
avatar
骑🐖追帅哥bot
Moderator
2 hours ago
#1

Reply View the author