
Le Salon:用 Rust 与 GPUI 打造的 IRCv3 原生客户端
来源标题:Le Salon Client IRCv3 natif en Rust – interface GPU avec GPUI
Le Salon 是一款基于 Rust 和 GPUI 构建的原生 IRCv3 客户端,界面由 GPU 渲染,不依赖 Electron 或内嵌浏览器。它支持 IRCv3、TLS、SASL、DCC、定时消息和主题等功能,界面提供法语与英语双语,已在 Fedora 45 的 Wayland 和 X11 环境下测试。
以下正文由 AI 翻译自 Hacker News 最新(原文版权归原站所有),可能存在偏差,重要内容请以原文为准。
Rust 原生的 IRCv3 客户端——基于 GPUI 的 GPU 界面
Le Salon 是一个现代、原生且快速的 IRC 客户端:支持 IRCv3 协议、TLS、SASL、DCC、定时消息、emoji、主题、通知,以及完整双语(法语/英语)界面。已在 Fedora 45(Wayland 和 X11)上测试,CI 工作流已准备好用于 macOS 通用构建。
Le Salon is a modern, native IRC client: IRCv3, TLS, SASL, DCC, scheduled messages, emojis, themes, notifications and a fully bilingual French / English interface. Tested on Fedora 45 (Wayland and X11), with a with a CI workflow ready for the universal macOS build.
一款为桌面打造的 IRCv3 客户端
Le Salon 是法语项目 ircv3-asm 的 Rust + GPUI 版本。界面由 GPUI 绘制,这是 Zed 的 UI 框架:GPU 渲染、启动迅速,不依赖 Electron 或内嵌浏览器。
界面完整翻译为两种语言; 首次启动时自动检测系统语言; 右上角可即时切换 FR / EN,选择会被记住; 菜单、表单、帮助、通知以及协议本地消息也一并翻译; 本 README 提供双语文档。
功能特性
IRCv3 与网络
功能 详情 CAP 协商 CAP LS 302、REQ、ACK、NAK、NEW、DEL、END 能力 message-tags、server-time、echo-message、multi-prefix、sasl、cap-notify、account-notify、account-tag、away-notify、batch、chathistory、extended-join、invite-notify、message-ids、monitor、setname、userhost-in-names、typing、chghost 认证 SASL PLAIN,400 字节分片,失败不阻塞 TLS rustls、SNI、证书验证(测试时可选用不验证选项) 消息 IRCv3 标签、server-time、echo-message 无重复、CTCP VERSION/PING/TIME/CLIENTINFO 频道 扩展 JOIN、多前缀 NAMES、MODE、TOPIC、KICK、INVITE、AWAY、ACCOUNT、CHGHOST、SETNAME 网络 带退避的重连、keepalive、PING/PONG、延迟、多网络并行
界面
网络 / 服务器 / 频道 / 私聊的树形结构,带未读计数和提及提醒; 彩色日志、彩色昵称、自动换行、按标签页保存历史,以及 mIRC 格式(粗体、斜体、下划线、删除线、等宽字体、16/256 色和十六进制颜色); 昵称列表带 ~&@%+ 前缀、离开状态和账户信息; 主题、模式、人数、TLS 状态、延迟和能力; 输入栏中可点击的昵称:单击打开「更改昵称」窗口并发送 NICK; 可用鼠标调整大小的面板:树形结构 ↔ 日志 ↔ 昵称列表,宽度会被记住; 独立的「频道列表」窗口:按名称/主题即时搜索、用户数、按人数排序,双击或回车加入; 文件 / 网络 / 频道 / 显示 / 帮助菜单,以及右键点击昵称、频道、网络和日志的上下文菜单; 图标、菜单和按钮悬停时显示法语或英语提示;悬停昵称会显示迷你资料(角色、账户、主机、离开状态); 18 种主题:Nuit、Océan、Forêt、Améthyste、Sakura、Dracula、Nord、Gruvbox、Monokai、Solarized 深色/浅色、Minuit、Carbone、Cyberpunk、Papier、Glacier、Rosé、Terminal——按钮 ◐ 或 Ctrl+T; 超过 300 个 emoji,支持法语/英语搜索并插入到光标处; 窗口不活跃时,被提及/收到私聊会发送原生通知;Linux 下提供系统托盘图标(StatusNotifierItem),沿用应用图标的沙发造型; 点击 X 关闭 → 留在托盘;右键托盘 → 显示 / 最小化 / 通知 / 断开连接 / 退出; 「正在输入…」指示器,窗口标题显示未读数。
文本之外
DCC SEND 直连:CTCP 提议、TCP 传输、进度、取消、64 位大小、专用面板; litterbox 上传(公开、72 小时、最大 50 MB):文件选择器,链接自动发到频道; 定时消息:+10m、18:30、完整日期,持久化到 scheduled.json; Jitsi:在浏览器中打开通话并将链接发到频道; 视频 / 音频 / 图片链接:自动检测,并提供按钮在浏览器或系统播放器中打开媒体; 关于:显示版本、功能和许可证的对话框。
重要提示:GPUI 不包含 Web 引擎。因此 Jitsi 和视频会在系统浏览器/播放器中打开,而不是内嵌 iframe。其余均为原生实现。
Linux AppImage 在应用根目录生成:
chmod +x Le-Salon-1.6.0-x86_64.AppImage ./Le-Salon-1.6.0-x86_64.AppImage
如果 Wayland 有问题,AppRun 会自动在 XWayland 下重试。强制使用 X11:
LE_SALON_X11=1 ./Le-Salon-1.6.0-x86_64.AppImage
AppImage 内含二进制文件和 X11/xkb 库;Vulkan、Wayland、fontconfig、freetype 和显卡驱动来自宿主机——这是使用发行版 GPU 和字体所必需的。
以下所有命令都在应用根目录(包含本 README 和 Cargo.toml 的文件夹)中执行。在 ircv3-asm 仓库中,即 le-salon/ 文件夹。
sudo dnf install cargo rust gcc pkg-config
libxkbcommon-devel libxkbcommon-x11-devel
libxcb-devel libX11-devel fontconfig-devel freetype-devel
wayland-devel vulkan-loader-devel
cargo run --release -p le-salon
如果只安装了 libxkbcommon-x11.so.0,build.rs 会创建指向 libxkbcommon-x11.so 的本地链接:编译无需 root 权限。
sudo apt install build-essential pkg-config
libxkbcommon-dev libxkbcommon-x11-dev libxcb1-dev libxcb-xkb-dev
libx11-dev libwayland-dev libfontconfig1-dev libfreetype-dev libvulkan-dev
Linux AppImage
sh tools/build-appimage-le-salon.sh
→ Le-Salon-1.6.0-x86_64.AppImage
macOS
GPUI 使用 Metal:编译必须在装有 Xcode 的 macOS 上进行。
rustup target add aarch64-apple-darwin x86_64-apple-darwin sh tools/build-macos-app.sh
该脚本会生成 Le-Salon-1.6.0-macos-universal.zip(arm64 + Intel),包含
(原文较长,此处译出前 6000 字,完整内容请点「打开原文」。)
正文由 探How 从来源站点 RSS 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。