在 macOS、Windows 和 Linux 之间共享桌面 UI¶
状态: 已实现,现在在 Rune 上。macOS、Windows 和 Linux 打开同一个窗口(src/rune_ui.rs)并读写同一个 settings.json。每个操作系统仅提供其宿主和原生组件;本计划最初描述的 GPUI AppWindow 已删除(参见 rune-ui.md)。
一个窗口,各操作系统的宿主¶
src/rune_ui.rs 及其面板模块渲染每个面板。platform::Capabilities 决定一个操作系统上存在哪些面板和行,因此缺失的能力会省略一行,而不是显示一个禁用的仿制品。每个操作系统通过一个宿主模块将窗口连接到其运行时:
src/rune_ui/macos_host.rs the menu-bar runtime: permissions, Meetings,
Commands, updater, Dock icon, chord capture
src/rune_ui/windows_host.rs the tray runtime: listener host, updater,
keyboard-state shortcut capture, Launch at login
src/rune_ui/linux_host.rs the in-process Linux host: shortcut capture,
model preparation, and settings adoption
| 能力 | macOS | Windows | Linux |
|---|---|---|---|
| 模式、Voice Action、历史 | 是 | 是 | 是 |
| 命令、会议、权限、Dock 图标 | 是 | 否 | 否 |
| 监听器卡片和启动时启用 | 否 | 是 | 是 |
| 网站模式规则 | Brave | 任意浏览器(UI Automation) | 否 |
| 左右修饰键侧 | 是 | 否 | 否 |
| 终端粘贴 | 否 | 否 | 是 |
| 登录时启动 | 是 | 是 | 否(由安装程序或 Nix 负责自动启动) |
单一设置文件¶
AppSettings 是唯一的设置类型。快捷键是一个 HotkeyBinding:macOS 按布局键码,Windows 和 Linux 按键名,各自带有自己的键帽和默认值。一次性更改(例如将英语听写移至流式模型)会在 migrations 中记录其 ID,因此永远不会运行两次。
共享的听写行为¶
Windows 和 Linux 监听器共享 dictation_modes::ModeRuntime 以进行模式选择和处理,并且两者都记录历史。在 Linux 上,单个 Hex 进程拥有窗口,注册设置记录的快捷键(X11 抓取或 Wayland 快捷键门户),准备模型,实时应用已保存的设置,并在进程内共享 History(当独立的 CLI 运行写入该文件时也会重新读取它)。
界面语言¶
共享窗口显示的每个字符串都经过 desktop_i18n::tr、tr_fill 或 tr_named,并提供波兰语、中文、日语、德语、西班牙语和乌克兰语翻译。如果任何已翻译的字符串缺少一种语言,测试就会失败。
本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 hex19/hex