尧图网络科技YAOTU DIGITAL 获取报价
获取报价
首页 / 资讯中心 / 文章详情

OpenLess的Linux之路:为什么抛弃Tauri与WebKitGTK,用egui打造原生UI

发布时间:2026/9/26 4:01:06

资讯中心
01
ARTICLE

OpenLess的Linux之路:为什么抛弃Tauri与WebKitGTK,用egui打造原生UI

OpenLess的Linux之路:为什么抛弃Tauri与WebKitGTK,用egui打造原生UI
OpenLess的Linux之路为什么抛弃Tauri与WebKitGTK用egui打造原生UI【免费下载链接】openlessHold a key, speak, release — AI-polished text appears at your cursor in any app. Open-source voice input for macOS Windows. (按住快捷键说话松开即得润色后的文字)项目地址: https://gitcode.com/gh_mirrors/op/openlessOpenLess 是一款开源 AI 语音输入工具按住快捷键说话松开即得润色后的文字光标在哪就能插入到哪。在 2.0 版本中团队为 Linux 放弃了 TauriWebKitGTK方案改用 Rust 的 egui 重构了整套原生 UI。本文讲清楚为什么不做“一份代码三端跑”以及 egui 原生方案是如何落地的。️一、先认识 OpenLess按住说话松开落字OpenLess 的核心体验非常直接全局热键触发按住快捷键开始录音松开结束AI 润色语音经 ASR 转写后由 LLM 按你选择的“风格包”清理口语、调整语气光标处插入处理完成自动把文字写入当前任意应用的输入框支持选区润色、追问QA、本地模型离线识别等进阶能力。在 2.0 架构中各平台分工明确见架构文档平台界面层原生宿主层Windows / macOS / AndroidReact Taurisrc-tauri/LinuxeguiRust 原生 UIlinux-egui/crateopenless-linux-egui全平台—共享业务核心crates/openless-core关键点业务逻辑只有一份全部位于openless-core界面层无论 React 还是 egui都只是“壳 原生能力适配器”。二、为什么 Linux 不直接用 TauriTauri 是“前端写 ReactRust 写后端”的桌面框架Windows 和 macOS 上体验很好。但它在 Linux 上的路径是WebView 渲染也就是必须依赖系统安装的 WebKitGTKwebkit2gtk依赖重且不可控发行版之间 WebKitGTK 版本差异大打包者要为不同 distro 处理一堆系统依赖版本升级还可能随时改变渲染行为双进程 IPC 的额外开销UI 跑在 WebView 里与 Rust 后端之间要走序列化的 command/event 通道。对语音输入这种对“按下—松开—落字”延迟敏感的应用多一跳就多一分延迟原生集成绕不开OpenLess 需要全局热键边沿事件、前台焦点/工作区感知、fcitx5 输入法插件、系统钥匙环……这些能力无论哪种 UI 框架都得写原生代码WebView 方案省不掉却还要再背一层渲染栈。所以团队做了一个干净的切分Linux 端 UI 与后端同进程直接走类型化的 Rust 接口不经 IPC数据流说明egui UI → LinuxHostsnapshot / subscribe / drain_events→ 共享 Coreegui 正是为这种场景而生的 Rust 即时模式 GUI 框架编译进二进制、零 Web 依赖、与后端同进程调用一个 ELF 可执行文件 deb/rpm/AppImage 就能交付。三、egui 原生 UI 是怎么搭起来的1. 一份共享核心两端各自注入Core 通过注入接口openless-core/src/ports.rs声明它需要什么平台能力AudioRecorder录音、TextInserter文本插入、CredentialStore凭据、LinuxHostActions系统动作等。Linux 端在 backend.rs 用LinuxBackendBuilder::from_shared_providers(...)组装运行时注入 CPAL 录音、Secret Service 凭据、fcitx5 输入等原生实现。纪律是业务规则缺失修 Core平台能力缺失修 HostUI 层不复制业务规则。2. 用合同锁定行为跨端一致性靠 contract/backend-2.0.json 这份机器可读合同启动快照结构、语义事件清单、顺序与重放规则都由它定义。UI 必须先消费启动快照再渲染事件经 LinuxHost 的drain_events批量取走交给界面状态机——这套约定见Linux 后端契约。3. 页面一一对应不另起炉灶egui 侧不是“另做一个 Linux 版”而是把 Windows/macOS 的 React 页面逐项复刻概览、历史、词汇、风格、市场、翻译、QA 面板、设置弹窗、录音胶囊浮窗甚至 Less Computer 的独立原生 viewport都在 2.0 交付记录 中有明确的“React 来源 → egui 实现”对照表。深浅主题、八种界面语言也保持一致。四、原生 UI 真正的难点系统集成UI 框架只是冰山一角Linux 上真正费功夫的是原生集成模块清单全局热键X11 走 x11rb/XInput2/RandRGNOME 用 Shell 扩展KDE 用 KWin 脚本 KGlobalAccel 服务冲突检测与重启恢复都有专门处理hotkeys.rs文本插入与选区通过 fcitx5 插件 捕获目标、选区与周边上下文写前校验焦点密码字段拒读文本凭据安全密钥存入 Secret Service 系统钥匙环credentials.rs不进状态文件与诊断日志分发打包脚本 产出 deb / rpm / AppImage 与桌面组件包AppImage 自动更新需通过 SHA-256 与 minisign 签名校验失败自动回滚旧版本。五、质量保障957 项 Core 测试 宿主契约放弃 WebView 不等于放松验收。交付记录中08 章检查结果cargo test -p openless-core957 项通过cargo test -p openless-linux-egui --lib --test host_contract125 项库测试 4 项宿主契约通过fcitx5 插件 CTest目标失效、焦点恢复、密码字段拒绝契约通过打包校验SHA-256、ELF 依赖、桌面元数据全部通过并配有 GNOME 42/46 × Plasma 5.27/6、X11/Wayland 共 8 格的人工验收矩阵——因为自动测试无法替代真实桌面行为证据。六、在 Linux 上体验 OpenLess构建入口在openless-all/app/目录WSL Ubuntu 22.04 验证通过核心步骤完整命令见安装和构建git clone https://gitcode.com/gh_mirrors/op/openless cd openless/all/app npm ci npm run build cargo build --locked --release -p openless-linux-egui OPENLESS_LINUX_VERSION2.0.0-Beta.1 bash scripts/package-linux-egui.sh sudo apt install ./OpenLess-Linux-egui-2.0.0-Beta.1-x86_64.deb安装后在“设置 → 关于与更新”中启用 GNOME/KDE 桌面组件即可获得全局热键、托盘与浮窗能力。结语OpenLess 的 Linux 之路给跨平台桌面项目一个务实的启示“跨平台”不等于“同一套渲染技术”。把业务核心抽成一份 Rust 库平台差异留给各端原生宿主Linux 用 egui 拿到零 Web 依赖、低延迟、易打包的原生体验Windows/macOS 继续用 Tauri 的生态红利——各司其职才是 2.0 架构真正想表达的设计。【免费下载链接】openlessHold a key, speak, release — AI-polished text appears at your cursor in any app. Open-source voice input for macOS Windows. (按住快捷键说话松开即得润色后的文字)项目地址: https://gitcode.com/gh_mirrors/op/openless创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
02
RELATED NEWS

相关资讯

更多网站建设与数字化升级内容

03
WHY YAOTU

想打造同款高转化官网?

懂行业、懂生意,从建站到增长一站式陪跑

◈

场景化定制

不做模板站,围绕你的业务场景量身设计,小众不撞款。

◐

营销型架构

以转化目标组织内容与路径,让官网真正带来询盘。

▲

全周期服务

设计、开发、运营、运维一体,上线只是开始。

免费获取你的建站方案

留下需求,专属顾问 24 小时内为你输出方案建议。