macOS 原生 Gmail 用戶端:「原生」到底是什麼意思
「原生」是每一款 Gmail App 頁面上最常出現的詞,而它至少有三種不同的意思。以下說明 Hark 給自己定下的標準、App 中哪些部分是用 macOS 本身的框架打造,以及唯一使用系統網頁引擎的地方——還有原因。
「原生」常被用來指的三件事
這個詞在不同的產品頁面上,指的是不同的東西。在決定要不要原生 Gmail App 之前,值得先弄清楚對方提供的是哪一種。
一個 Dock 圖示
這種 App 其實就是 Gmail 網站,載入在 App 內附的一套瀏覽器裡。你會得到一個圖示、一個視窗和通知;視窗裡裝的,還是你原本在分頁中看到的那張網頁。這是最寬鬆、也最常見的定義。
Mac 的外觀
介面同樣是網頁,只是樣式刻意模仿 macOS——恰到好處的灰色、側邊欄、工具列。在截圖裡可能很有說服力。但用指標操作時,它的行為仍然像網頁:想拖曳卻選取到文字、選單是畫出來的而不是系統選單、任何東西出現之前都得先啟動瀏覽器引擎。
以平台框架打造
列表是真正的列表視圖,選單來自選單列,文字欄位是系統的文字欄位,具備拼字檢查與聽寫功能,視窗是作業系統懂得如何並排、隱藏與還原的視窗。App 在繪製畫面之前不需要先啟動任何東西。這就是 Hark 採用的定義,本頁其餘內容都在說明它涵蓋了哪些部分。
Hark 具體來說哪些部分是原生的
- 整個介面。 郵件列表、側邊欄和標籤、工具列、搜尋、設定、行事曆格線及其編輯器、Tasks 面板:全都是 SwiftUI 和 AppKit,由 macOS 繪製。淺色與深色外觀跟隨系統或依你的選擇,強調色也由你挑選。
- 撰寫視窗。 撰寫郵件是在真正的 macOS 文字視圖中進行——格式列提供粗體、斜體和底線,還有系統拼字檢查、標準的 Edit 選單、連結和內嵌圖片——而不是在一張假裝成文字視圖的網頁裡。
- 同步引擎。 以 Rust 撰寫的核心在你的 Mac 上執行,透過 Google 的 API 與 Gmail、Calendar 和 Tasks 溝通,並維護一個本機資料庫,所以收件匣是從磁碟開啟,而不是從網路。
- 桌面提供的一切。 通知中心、Dock 標記、在選單列上快速瞄一眼新內容、獨立的撰寫視窗、多個「空間」、⌘Tab,以及原地安裝的更新。
唯一使用網頁引擎的地方,以及原因
HTML 郵件就是 HTML。電子報、收據、同事寄來的行事曆邀請——這些送來時都是網頁文件,而要忠實呈現它們,唯一的方法就是用網頁引擎。Hark 使用 WebKit 呈現郵件內文,這是 macOS 本來就內建的引擎,Apple「郵件」App 做同樣的事時用的也是它。
這和內附一套瀏覽器是兩回事。App 裡沒有額外附帶任何東西,介面出現前不需要先啟動任何東西,引擎由 macOS 負責更新而不是由我們,而且它只用來顯示閱讀窗格裡的文件——絕不用於周圍的 App 介面。回覆郵件時,原始郵件會原封不動地附在你的文字下方,所以引用的對話串來回幾次也能完整保留。
實際用起來的差別
- 一開就開。 收件匣來自本機資料庫,所以在網路回應之前就已經顯示在螢幕上,而已同步的內容即使完全沒有網路也能閱讀。
- 搜尋就是 Gmail 的搜尋。
from:、has:attachment、is:unread、newer_than:7d——這些運算子會照你輸入的原樣送給 Google,結果也和 Gmail 給的一樣。常用的搜尋可以轉成 Gmail 篩選器,之後就在 Google 端執行,套用到你所有讀信的裝置上。 - 桌面行為一如預期。 通知就是 macOS 通知,Hark 在前景時會保持安靜。Dock 標記顯示的未讀數量與 Gmail 相同。⌘W 關閉的正是你想關的那個視窗。撰寫視窗可以放在另一個「空間」裡。
- 一個程序,只做一件事。 底下沒有一個和四十個分頁共用記憶體的瀏覽器,App 裡也沒有另外附帶一套瀏覽器。
原生不代表什麼
- 不是另一個 Gmail。 標籤、篩選器、簽名、休假自動回覆:這些都是你 Gmail 裡的設定,透過 API 讀取和寫入。在 Hark 中更改,網頁版就看得到;在網頁版更改,Hark 也看得到。唯一的例外是「延後」——Google 沒有在 API 中開放這項功能,所以 Hark 會把喚醒時間保存在你的 Mac 上,再自行把對話送回收件匣。
- 不是脫離 Google 運作。 傳送郵件,以及任何會變更信箱的操作,都需要網路連線。而且 Hark 能做什麼,仍受 Google 授予的權限約束——例如刪除的郵件會進垃圾桶,因為 Hark 刻意不要求可以永久刪除的權限。
- 還沒完工。 Hark 正在公開測試中。每次安裝只能連結一個 Gmail 帳號,目前的鍵盤快速鍵不多(j、k、方向鍵和 Esc),而少數 API 沒有開放的 Gmail 設定,會以連往網頁版 Gmail 的連結列出,而不是直接省略。
如果你是為了行事曆而來,另有一篇在同一個原生 Mac App 裡使用 Gmail 與行事曆,還有一篇說明Hark 如何設計成讓你的郵件永遠不會傳到我們這裡。
常見問題
Hark 是套殼的網頁 App 嗎?
不是。介面——郵件列表、側邊欄、工具列、搜尋、設定、行事曆格線、Tasks 面板、撰寫視窗——都是以 macOS 本身的框架打造,App 裡也沒有內附任何瀏覽器。Gmail 網站從來不會被載入。
Hark 有用到 WebKit 嗎?
有,只用在一個地方:顯示郵件的 HTML 內文,使用的是 macOS 內建的 WebKit——和 Apple「郵件」App 相同的引擎。它只用來顯示文件,不用於介面,也不是 App 內附的一套瀏覽器。
原生代表可以離線使用嗎?
部分可以。已經同步的內容——郵件、行事曆活動、已下載的附件——在沒有網路時仍可閱讀,因為它們存放在你 Mac 上的本機快取中。傳送郵件,以及任何會變更信箱的操作,都需要連線到 Google。
用起來會像 Gmail,還是像 Mac 的郵件 App?
兩者都像,而且是刻意的。概念來自 Gmail——對話、標籤、延後、搜尋運算子、篩選器、單一垃圾桶——而視窗是 Mac 的視窗:真正的選單、通知中心、Dock 標記、「空間」、⌘W。閱讀畫面也以 Gmail 本身為準量測,讓郵件看起來就是你預期的樣子。