FluxDown(免费的 IDM 替代)桌面端从 Flutter 迁移到 GPUI 了,聊聊为什么和怎么做的

clow 2026-10-01 08:29 1

FluxDown 是一个免费的多协议下载管理器( HTTP 多线程 / BT / 磁力 / HLS 等),定位是 IDM 的替代品。这次来汇报一个比较大的变化:桌面端界面从 Flutter 换成了 GPUI( Zed 编辑器用的 Rust UI 框架)。


为什么换


FluxDown 的下载引擎一直是 Rust 写的,之前的桌面端是 Flutter 界面,通过 FFI 和 Rust 引擎通信。用下来主要有几个问题:



  • 中间需要跨语言绑定,每加一个功能都要 Rust 、Dart 两边各写一遍,再生成绑定代码;

  • 界面和引擎跑在同一个进程里,界面出问题,下载也会跟着受影响;

  • 下载器需要常驻后台,但界面进程没必要耗费无用的内存等硬件资源。


所以干脆从引擎到界面全部改用 Rust 。


现在的架构


桌面端拆成了三个进程:


fluxdown-desktop ( GPUI 界面)
→ fluxdown-agent (常驻:托盘、账户、云同步、设备协同)
→ fluxdownd (纯下载核心)


  • 关掉窗口后界面进程直接退出,下载由后台核心继续跑;

  • 界面崩溃不会拖垮正在下载的任务;

  • 进程之间走本机 JSON-RPC ,双方要互相鉴权。


这样拆还有个好处:NAS / 服务器上可以只跑 fluxdown-agent --server 加 fluxdownd,再用浏览器打开内置的 Web 页面来管理。和桌面端是同一套核心和接口,不用另外维护一个服务端版本。


链接



  • 官网: https://fluxdown.zerx.dev

  • GitHub: https://github.com/zerx-lab/FluxDown


刚迁移完,后续就是移动端和浏览器插件的大更新了,欢迎试用后吐槽或提 issue 。

最新回复 (13)
  • lifei6671 10-01 08:36
    1楼
    有两个很奇怪的 UI 交互逻辑,第一个是左侧三个菜单,只有点击 webhook 时突然左侧区域收起变窄了。
    第二,设置页面感觉不是一个模态窗,感觉现在的应用设置页面都是模态窗,就算不是也会影响主 UI 的操作。
  • lifei6671 10-01 08:38
    2楼
    有发现一个显示的小问题。macOS 上输入框显式的是 Windows 的路径。
  • sunzhuo 10-01 09:19
    3楼
    很好用的下载软件,请问能不能把下载 youtube 等流媒体视频的功能加上啊?或者我还是用的姿势不对?
  • ITisCool 10-01 09:25
    4楼
    太棒了,放弃 Flutter 转 GPUI 太正确了,在如今 RAM 贵如黄金的年代,这内存占用小得诱人极了,终于可以放弃 Neat Download Manager 了,观察到内存占用几乎和它差不多,换换换
  • neekeV2 10-01 09:28
    5楼
    下载试试看
  • iorilu 10-01 11:36
    6楼
    可以啊, 学习下
    rust+gpui 是 GUI 开发神器啊, 终于全部原生了, 不用 webview 了
  • KevinChan 10-01 14:58
    7楼
    看见 Flutter 我就跑
  • clow 楼主 10-01 17:52
    8楼
    @lifei6671 大佬方便进群可以看下这个问题么,我本地没复现,方便的话可以发个录屏或者截图
  • clow 楼主 10-01 17:54
    9楼
    @iorilu 之前就不是,flutter 的多窗口实在拉胯,并且内存通过 rust 桥接的方式直接无法合理控制 UI ,还好 zed 开源了 gpui 和 gpui-kit 俩项目
  • clow 楼主 10-01 17:55
    10楼
    @sunzhuo 等等,最近完善移动端和浏览器插件侧的功能,完善后就可以了
  • clow 楼主 10-01 17:55
    11楼
    @ITisCool 我是强迫症,本来想自己用,结果人越来越多,索性重构全都搞到个人能力的极致😂
  • mywyd 10-02 09:42
    12楼
    非常哇塞,已下载。
  • Hubs 10-02 10:41
    13楼
    我就想知道它能不能取代迅雷,特别是下载磁力链接方面
* 帖子来源V2EX
返回