近期更新:QtEasyTier v3.3.0
EasyTier 是近期国内小有名气的一款开源去中心化内网穿透和异地组网工具,适合远程办公、异地访问、游戏加速等多种场景。
QtEasyTier 是一个基于 Qt 6 / C++ 的 EasyTier 桌面客户端。它提供了直观的图形界面,帮助用户轻松配置和管理虚拟网络,实现跨网络设备的安全通信。作为参赛作品,QtEasyTier 在近期主要的开发是 DTK 风格适配和 DDE 托盘插件的开发。
注意:本项目只是开源工具类软件,并不提供异地组网服务,需要自行解决公网连接问题
本项目以 LGPL 3 协议开源
deepin 用户可以在附件页面下载 qteasytier-dde 包进行安装尝试,包含 amd64 和 arm64 两份安装包,选择对应架构安装即可( arm64 由 CNB 流水线产出,没有实机测试过 )
地址:https://cnb.cool/myqfeng/qteasytier/qt-easy-tier/-/releases/tag/3.3.0
后期有更新也会在 CNB 仓库的流水线中自动化构建,可以关注一下
项目的开发主要分为两个阶段,第一个阶段是应用UI的 DTK 风格的适配,第二个阶段是托盘插件的开发。
新版 QtEasyTier DDE 适配版重写了整套UI, 带来更加原汁原味的体验!
QtEasyTier 之前主要是通过原生 Qt (QML )进行开发的,对于DTK的适配,我的目标是在保证项目原有UI不做大变动的前提下,开发出专门适配DDE的分支。于是,我让 Agent 工具 (OpenCode & DeepSeek) 对项目源码进行研读并且分析dtk-development skill后,讨论出了以下方案:
通过以上的方式,我在尽量不破坏原有项目内容的前提下,增加了对 DDE 的专门适配版本
总体思路:以独立插件的形态构建 .so 动态库,但在代码中复用主程序已有的部分能力,包括配置存放数据库的读写、与Daemon的通信等。
具体的实现逻辑放在src/dde_tray_plugin中,在复用已有组件的基础上独立实现一个轻量的实例状态轮询机制。UI层面,由于此处的界面比较简单,我直接使用 QWidget + QSS 进行制作。插件独立与QtEasyTier前端运行。
作为从 deepin 15走到现在的老用户,我其实也一直想为 deepin 生态做点贡献,奈何学识浅薄,没精力研究 DTK 的相关开发教程文档,好在社区开源了相关的 Skills 能力,让我有了将自己的项目适配 DDE 的机会。祝愿 deepin 发展越来越好!
Ps: 对 QtEasyTier 项目感兴趣的小伙伴欢迎加入 QtEasyTier 交流Q群:1081241238
不错
Featured Collection
Popular Ranking
Popular Events
QtEasyTier 项目介绍
近期更新:QtEasyTier v3.3.0
EasyTier 是近期国内小有名气的一款开源去中心化内网穿透和异地组网工具,适合远程办公、异地访问、游戏加速等多种场景。
QtEasyTier 是一个基于 Qt 6 / C++ 的 EasyTier 桌面客户端。它提供了直观的图形界面,帮助用户轻松配置和管理虚拟网络,实现跨网络设备的安全通信。作为参赛作品,QtEasyTier 在近期主要的开发是 DTK 风格适配和 DDE 托盘插件的开发。
注意:本项目只是开源工具类软件,并不提供异地组网服务,需要自行解决公网连接问题
主要功能特性
项目地址
安装使用
deepin 用户可以在附件页面下载 qteasytier-dde 包进行安装尝试,包含 amd64 和 arm64 两份安装包,选择对应架构安装即可( arm64 由 CNB 流水线产出,没有实机测试过 )
地址:https://cnb.cool/myqfeng/qteasytier/qt-easy-tier/-/releases/tag/3.3.0
项目截图
项目开发说明
项目的开发主要分为两个阶段,第一个阶段是应用UI的 DTK 风格的适配,第二个阶段是托盘插件的开发。
阶段一:UI适配
QtEasyTier 之前主要是通过原生 Qt (QML )进行开发的,对于DTK的适配,我的目标是在保证项目原有UI不做大变动的前提下,开发出专门适配DDE的分支。于是,我让 Agent 工具 (OpenCode & DeepSeek) 对项目源码进行研读并且分析dtk-development skill后,讨论出了以下方案:在 src/qml 中新建 dde 子目录来存放适配 DDE 所需的 qml 文件主界面 Main.qml 重写为 dde/DdeMain.qml, 适配 DDE 的主窗口。CMake 中新增BUILD_WITH_DDE开关并且注入到宏定义中,在程序中通过设置 DDE 的 Chameleon 风格,并且QML引擎通过条件 engine.load 不同的主窗口QML实现条件编译对于部分 Chameleon 不能很好适配的组件,单独在 src/qml/dde 中重写,保证与原控件接口的一致性,使用 org.deepin.dtk 的控件进行重写,并在 CMake 中通过条件导入不同的qml文件实现在 DDE 编译分支下使用原生控件。通过以上的方式,我在尽量不破坏原有项目内容的前提下,增加了对 DDE 的专门适配版本阶段2: 托盘插件开发
总体思路:以独立插件的形态构建 .so 动态库,但在代码中复用主程序已有的部分能力,包括配置存放数据库的读写、与Daemon的通信等。
具体的实现逻辑放在src/dde_tray_plugin中,在复用已有组件的基础上独立实现一个轻量的实例状态轮询机制。UI层面,由于此处的界面比较简单,我直接使用 QWidget + QSS 进行制作。插件独立与QtEasyTier前端运行。
写在最后
作为从 deepin 15走到现在的老用户,我其实也一直想为 deepin 生态做点贡献,奈何学识浅薄,没精力研究 DTK 的相关开发教程文档,好在社区开源了相关的 Skills 能力,让我有了将自己的项目适配 DDE 的机会。祝愿 deepin 发展越来越好!
Ps: 对 QtEasyTier 项目感兴趣的小伙伴欢迎加入 QtEasyTier 交流Q群:1081241238