macOS 原生 Gmail 客户端:“原生”到底指什么
“原生”是每个 Gmail 应用页面上用得最多的词,而它至少有三种不同的含义。这里说明 Hark 对自己的定义、应用中哪些部分是用 macOS 自身框架构建的,以及唯一用到系统网页引擎的地方——还有原因。
“原生”被用来指代的三种意思
在不同的产品页面上,这个词承担着不同的含义。在决定是否需要一款原生 Gmail 应用之前,值得先弄清楚对方提供的是哪一种。
一个程序坞图标
应用其实就是 Gmail 网站,加载在应用自带的一份浏览器副本里。你得到了图标、窗口和通知;但窗口里装的还是你在标签页里用的那个网页。这是最宽松、也最常见的含义。
Mac 的外观
界面同样是网页,只是样式模仿了 macOS——恰到好处的灰色、侧边栏、工具栏。在截图里它可以以假乱真。可一到鼠标底下,它的表现仍然像网页:想拖动时却选中了文字,菜单是画出来的而不是系统菜单,任何内容出现之前都得先启动一个浏览器引擎。
用平台自身的框架构建
列表是真正的列表视图,菜单是菜单栏的菜单,文本框是系统文本框,带着拼写检查和听写;窗口是操作系统知道如何平铺、隐藏和恢复的窗口。应用开始绘制之前,不需要先启动任何东西。这就是 Hark 所采用的含义,本页其余部分讲的就是它涵盖了什么。
Hark 中具体哪些部分是原生的
- 整个界面。 邮件列表、侧边栏和标签、工具栏、搜索、设置、日历网格及其编辑器、任务面板:都是 SwiftUI 和 AppKit,由 macOS 绘制。浅色和深色外观可跟随系统,也可由你选择;强调色由你挑选。
- 写信窗口。 写邮件在真正的 macOS 文本视图中进行——格式栏提供粗体、斜体和下划线,还有系统拼写检查、标准的“编辑”菜单、链接和内嵌图片——而不是在一个假装成文本视图的网页里。
- 同步引擎。 一个用 Rust 编写的核心在你的 Mac 上运行,通过 Google 的 API 与 Gmail、Calendar 和 Tasks 通信,并维护一个本地数据库,因此收件箱是从磁盘打开的,而不是从网络加载。
- 桌面提供的一切。 通知中心、程序坞角标、在菜单栏上瞥一眼新内容、独立的写信窗口、多个“空间”、⌘Tab,以及原地安装的更新。
唯一用到网页引擎的地方,以及原因
HTML 邮件就是 HTML。一份新闻通讯、一张收据、一位同事发来的日历邀请——它们本身就是网页文档,要忠实地显示它们,唯一的办法就是用网页引擎。Hark 用 WebKit 渲染邮件正文,这个引擎本来就是 macOS 的一部分,Apple“邮件”做同样的事时用的也是它。
这与内置浏览器是两回事。应用里没有额外附带任何东西,界面出现之前不需要启动任何东西,引擎由 macOS 而非我们来更新,而且它只用于阅读窗格中的文档——从不用于外围的应用界面。你回复邮件时,原始邮件会按收到时的原样附在你的文字下方,因此引用的会话来回往返也能完整保留。
实际用起来有什么不同
- 打开就是打开。 收件箱来自本地数据库,所以在网络响应之前它就已经显示在屏幕上了;已经同步的内容在完全没有网络时也可以阅读。
- 搜索就是 Gmail 的搜索。
from:、has:attachment、is:unread、newer_than:7d——这些运算符会原样发送给 Google,得到的结果和 Gmail 给出的一样。满意的搜索可以转为 Gmail 过滤器,之后它会在 Google 端运行,对你收发邮件的每台设备都生效。 - 桌面行为合乎预期。 通知就是 macOS 通知,Hark 位于最前面时保持安静。程序坞角标显示的未读数与 Gmail 一致。⌘W 关闭的正是你想关的那个窗口。写信窗口可以放在另一个“空间”里。
- 一个进程,只做一件事。 底下没有和另外四十个标签页共用内存的浏览器,应用里也没有夹带第二份浏览器副本。
原生不意味着什么
- 不是另一个 Gmail。 标签、过滤器、签名、休假自动回复:它们都是你 Gmail 里的,通过 API 读取和写入。在 Hark 中修改,网页版能看到;在网页版修改,Hark 也能看到。唯一的例外是稍后提醒——Google 没有在 API 中开放它,所以 Hark 把唤醒时间保存在你的 Mac 上,到时由它自己把会话送回来。
- 不能脱离 Google 独立运作。 发送邮件以及任何会改变邮箱的操作都需要联网。而且 Hark 能做什么,仍然受 Google 权限的约束——比如删除的邮件会进入“已删除邮件”,因为 Hark 特意没有申请永久删除邮件的权限。
- 还没有做完。 Hark 正处于公测阶段。每次安装只能连接一个 Gmail 账户,目前的快捷键也不多(j、k、方向键和 Esc),还有少数 API 未开放的 Gmail 设置,会以指向网页版 Gmail 的链接列出,而不是直接略去。
如果你更关心日历这一半,我们另有一篇在一个原生 Mac 应用里同时使用 Gmail 和日历,还有一篇介绍Hark 如何从架构上确保你的邮件永远不会到达我们这里。
常见问题
Hark 是套了壳的网页应用吗?
不是。界面——邮件列表、侧边栏、工具栏、搜索、设置、日历网格、任务面板、写信窗口——都是用 macOS 自身的框架构建的,应用中也没有内置浏览器。Gmail 网站从来不会被加载。
Hark 用到 WebKit 了吗?
用到了,只在一处:显示邮件的 HTML 正文,用的是 macOS 自带的 WebKit——也就是 Apple“邮件”所用的同一个引擎。它只用于文档,不用于界面,也不是应用里夹带的一份浏览器副本。
原生是否意味着可以离线使用?
部分可以。已经同步的内容——邮件、日程、下载过的附件——在没有网络时仍可阅读,因为它们保存在你 Mac 上的本地缓存中。发送邮件以及任何会改变邮箱的操作,都需要连接到 Google。
用起来会像 Gmail,还是像 Mac 邮件应用?
两者都像,这是有意为之。理念来自 Gmail——会话、标签、稍后提醒、搜索运算符、过滤器、统一的“已删除邮件”——而窗口是 Mac 窗口:真正的菜单、通知中心、程序坞角标、多个“空间”、⌘W。阅读视图对照 Gmail 自己的视图做了测量,让邮件看起来就是你预期的样子。