开源项目
squidowl/halloy avatar
squidowl/halloy

Halloy:用 Rust 重写 IRC 客户端的激进选择,值不值得换掉你的 HexChat?

项目速览:用 Rust 编写的 IRC 应用程序。 Halloy - IRC 客户端 Halloy 是一款适用于 macOS、Windows 和 Linux 的开源 IRC 客户端,专注于简单和快速。

4,487 个 Star220 个 ForkRustGPL-3.0

秒懂

它是什么?
Halloy 是一个用 Rust 写的跨平台 IRC 客户端,主打简单和快,但它的 IRCv3 能力列表才是真正让人侧目的地方。本文拆解它的实现思路、上手成本,以及它可能不适合你的场景。
适合谁用?
Halloy 适合那些想要一个现代、跨平台、且对 IRCv3 新特性有完整支持的 IRC 用户,尤其是已经在用 GNOME 或 KDE 桌面、愿意通过 Flatpak 或 Snap 安装软件的人。它不适合需要高度可脚本化或运行在纯终端环境的老派 IRC 用户,因为它的定位是图形客户端,不是终端复用器里的常驻程序。
能商用吗?
可以,但有条件。GPL-3.0 是 copyleft 许可证:如果你分发包含它的软件,就必须以同一许可证公开该软件的源代码。只在内部运行、不对外分发,则不会触发这项义务。
还在维护吗?
在维护。仓库在最近一天内有新的提交。
用什么语言写的?
主要是 Rust(依据 GitHub 的语言统计)。

以上回答依据项目的 GitHub 数据(最近同步于 2026年9月18日)和我们的分析,不构成法律意见。

开源项目深度解析

IRC 客户端的老问题,Halloy 想用 Rust 解决

IRC 是个 1988 年的协议,但客户端生态一直没跟上时代。主流客户端要么是 Irssi 那样依赖终端复用器、配置全靠手写脚本,要么是 HexChat 那样功能陈旧、界面停留在十年前。Halloy 的目标很直接:用 Rust 写一个跨平台的图形客户端,把“简单”和“快”作为卖点。它不打算做插件平台,也不打算模拟终端,而是给你一个现代 GUI,同时把 IRCv3 的新特性尽可能都实现。这个定位意味着它面向的是那些还在用 IRC、但不想忍受老客户端粗糙体验的人,比如开源社区的维护者、技术爱好者,或者那些因为工作原因必须留在 IRC 频道里的人。

从 README 看到的架构:一个纯 Rust 的 GUI 客户端

Halloy 的仓库里没有详细的架构文档,但 README 末尾的 iced 链接暴露了它的界面框架。iced 是一个 Rust 写的跨平台 GUI 库,采用 Elm 架构,界面状态由消息驱动。这意味着 Halloy 的整个 UI 层都是 Rust 写的,没有嵌入 WebView,也没有用 Electron。这种选择的直接后果是启动快、内存占用低,但也意味着界面的渲染依赖 GPU 加速。README 中列出的 IRCv3 能力列表非常长,从 account-notify 到 soju.im/bouncer-networks,这暗示它的网络层是模块化设计的,每个能力对应一个处理模块。数据流大概是这样:服务器发来的原始 IRC 行被解析,根据 capability 协商结果分派到对应的处理器,然后更新 UI 状态。这个流程没有在文档里明说,但从能力列表的粒度可以推断。

安装方式:Flatpak、Snap、还有 nightly 构建

Halloy 的安装文档在 halloy.chat/installation.html,README 提到它可以从 Flathub 和 Snap Store 获取。这意味着 Linux 用户可以用 flatpak install org.squidowl.halloy 或 snap install halloy 来装,macOS 和 Windows 用户应该也有对应的安装包,但 README 没有给出具体命令。项目还发布 nightly 版本,最近一次更新是 2026-06-05,说明活跃开发。nightly 适合想尝鲜的人,但要注意它可能不稳定。另外,Repology 页面显示了各发行版仓库里的版本,所以如果你用 Arch 或 Fedora,可能直接 pacman 或 dnf 就能装。但 README 没有提供源码编译的步骤,如果你想从 GitHub 构建,需要自己看仓库的构建文件。

IRCv3 支持列表:不仅仅是堆功能,而是实用主义

Halloy 的 README 列了超过 30 个 IRCv3 能力,这个列表不是用来炫耀的。它涵盖了现代 IRC 网络的基础设施:chathistory 让你能拉取历史消息,soju.im/bouncer-networks 支持 bouncer 集成,message-redaction 和 react 是较新的扩展。这些功能直接解决了 IRC 的痛点,比如离线消息丢失、无法编辑消息、没有表情回应。但注意,这份列表只是“支持”,不是“默认启用”。实际使用中,服务器必须也支持这些能力,客户端才会协商启用。比如 chathistory 需要服务器端有 chathistory 实现,否则 Halloy 只能显示连接后收到的消息。所以,如果你连接的 IRC 网络比较老旧,这些能力大部分会处于休眠状态。

为什么选 Rust?性能、内存安全和跨平台,但代价是生态

Rust 的选择带来了两个直接好处:内存安全,没有 GC 停顿,所以界面响应应该很流畅。另一个好处是跨平台,同一套代码可以编译到 macOS、Windows 和 Linux,这是 C++ 客户端很难做到的。但代价是,Rust 的 GUI 生态还在成熟中,iced 虽然可用,但比起 Qt 或 GTK 还是年轻。这意味着 Halloy 的界面定制能力有限,主题、字体、布局的灵活性可能不如 HexChat。另外,Rust 的编译时间很长,如果你从源码构建,每次更新都要等几分钟。对于普通用户,这不算问题,因为 Flatpak 和 Snap 已经打包好了。

真正的限制:不是所有 IRC 都适合 Halloy

Halloy 的 README 没有提到底层细节,但可以推断几个限制。首先,它是一个图形客户端,不能在纯终端环境跑,所以如果你习惯在 SSH 到服务器后用 tmux 保持 IRC 会话,Halloy 帮不了你。其次,它不支持脚本或插件,README 里没有提到任何扩展机制,这意味着你无法像 Irssi 那样写 Perl 脚本自动处理消息。第三,它的 IRCv3 支持依赖服务器端,如果你连接的网络不支持 soju.im 扩展,很多高级功能就是摆设。最后,GPL-3.0 许可证意味着如果你修改了 Halloy 并分发,必须开源你的修改。对于个人使用没影响,但如果你在一个公司内部想定制它,法律上会有约束。

替代方案:WeeChat 和 Irssi 的差异在哪里

如果你需要终端客户端,WeeChat 是 Halloy 的主要对手。WeeChat 用 C 写,支持脚本(Python、Perl、Ruby),可以完全通过键盘操作,而且能在 tmux 里后台运行。它的 IRCv3 支持也不错,但界面是文本模式,没有图形渲染。Irssi 更老,脚本生态也丰富,但 IRCv3 支持较弱。Halloy 的差异在于:它用 Rust 提供现代 GUI,点击就能操作,不需要学习斜杠命令,但它放弃了脚本和终端环境。如果你追求的是“打开就能用”,Halloy 更合适;如果你要的是“可编程的常驻工具”,WeeChat 仍然不可替代。

编辑结论

Halloy 适合那些想要一个现代、跨平台、且对 IRCv3 新特性有完整支持的 IRC 用户,尤其是已经在用 GNOME 或 KDE 桌面、愿意通过 Flatpak 或 Snap 安装软件的人。它不适合需要高度可脚本化或运行在纯终端环境的老派 IRC 用户,因为它的定位是图形客户端,不是终端复用器里的常驻程序。如果你打算迁移,先确认你的 IRC 网络是否启用了 chathistory 和 soju.im 相关扩展,否则 Halloy 的离线消息补拉能力会大打折扣。另外,GPL-3.0 许可证意味着如果你要分发修改版,必须开源代码,这对商业集成是一个硬约束。最后,检查你的系统是否支持 iced 所需的 GPU 加速,因为 Halloy 的界面基于 iced,在远程服务器或老旧显卡上可能表现不佳。

官方来源

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
社区笔记

社区笔记