VNC
VNC 資源使用內建基礎 VNC 客戶端打開。
配置項
| 欄位 | 說明 |
|---|---|
| 名稱 | 資源顯示名稱 |
| Host | VNC 服務位址 |
| Port | 預設 5901 |
| Username | macOS ARD 認證用的 Mac 使用者名稱(傳統 VNC 密碼認證留空) |
| Password | VNC 密碼 |
傳統 VNC 密碼認證不使用使用者名稱。連線 macOS 螢幕共享時如果走 ARD 認證(預設),需要填寫 Mac 的使用者名稱。
如果伺服器端需要密碼而資源裡沒有儲存密碼,打開時會彈出密碼輸入框。
畫質與頻寬
資源編輯器中有兩個頻寬相關設定,均在建立連線時生效,修改後需退出並重新打開會話。
畫質壓縮
控制 Tight 編碼中 JPEG 矩形的壓縮品質。100% 為無損(不使用 JPEG,僅 zlib 壓縮);90% / 80% / 60% 逐級降低 JPEG 品質,適合包含照片、漸層等豐富色彩的畫面。
顏色深度
要求伺服器以更低的像素深度傳輸畫面,減少 Raw / zlib / ZRLE 等像素編碼的資料量:
| 選項 | 格式 | 說明 |
|---|---|---|
| 32-bit(預設) | 全彩 | 畫質無損,頻寬佔用最高 |
| 16-bit | R5G6B5 | 像素資料約減半,漸層處可能有輕微色帶 |
| 8-bit | 256 色(R3G3B2) | 像素資料約降至 1/4,畫質損失明顯,適合極慢鏈路上的純文字遠端 |
注意:降低顏色深度在部分系統上會增加運算壓力。 伺服器的 framebuffer 通常是 32 位元;當要求的格式與之不同時,每次畫面更新都需要先做逐像素格式轉換(位元提取、縮放、重打包)再壓縮。部分伺服器在格式一致時有最佳化的快速路徑,格式不一致時只能走通用轉換——在效能較弱的裝置(NAS、開發板、老舊主機)上,省下的頻寬可能以畫面流暢度下降為代價。用戶端解碼時也需要把 2/1 位元組像素擴展回 32 位元渲染,解碼開銷略高於 32 位元直通路徑。頻寬緊張但伺服器效能富餘時收益最大;伺服器本身吃緊時建議先試 16-bit 並觀察流暢度。
兩者組合
畫質壓縮與顏色深度可以同時生效,分別作用於不同類型的矩形:
- 16-bit + 畫質壓縮:照片、漸層等區域由伺服器選擇 JPEG 編碼(大小取決於畫質檔位,與顏色深度無關);純色、文字等區域按低色深壓縮。文字居多的桌面受益於顏色深度,含桌布或影片的畫面受益於 JPEG 壓縮。
- 8-bit 下畫質壓縮無效:JPEG 要求用戶端像素格式至少 16bpp,主流伺服器(TigerVNC 等)在用戶端為 8 位元時不會再使用 JPEG,全部矩形按 8 位元深度壓縮。
相容性
- 顏色深度透過
SetPixelFormat協商。TigerVNC、x11vnc、TightVNC 等標準伺服器都會遵守;個別不規範的實作可能忽略該要求——設定不會有任何效果,但連線本身不受影響。 - macOS 螢幕共享不適用:OmniGate 不會向 screensharingd 發送
SetPixelFormat(會導致其畫面擷取凍結),該設定對 macOS 連線無效。
顯示
VNC 畫面會按螢幕比例縮放。支援雙指縮放,放大後會盡量以滑鼠位置為中心移動畫面。
橫屏時會隱藏導覽列,並顯示可拖動的即時網速浮動框。浮動框右側有關閉按鈕。
輸入
VNC 支援觸控和虛擬鍵盤:
- 短觸且沒有移動:單擊。
- 滑動:移動滑鼠,不點擊。
- 雙擊後第二下不鬆開並移動:拖動。
- 雙指:右鍵。
- 雙指上下滑動:模擬滑鼠滾輪,向上滑動對應向下捲動。
- 豎屏時可使用虛擬鍵盤和 Windows 常用快捷鍵。
雙指操作優先識別為捲動。縮放需要明顯的雙指捏合動作才會觸發,避免滑動時誤觸縮放。
在 macOS 上,觸控板的捲動手勢會被識別為滑鼠滾輪,體驗與桌面 VNC 客戶端一致。
快捷鍵包含 Ctrl、Alt、方向鍵、PageUp、PageDown、Home、End 和 F1-F12。Ctrl 和 Alt 為粘滯狀態,用於發送組合快捷鍵。
自動重連
當 VNC 連線意外斷開時(例如網路波動),OmniGate 會自動嘗試重連一次。
以下情況不會自動重連:
- 使用者主動退出 VNC 頁面。
- 伺服器端返回明確的認證失敗或連線拒絕等永久性錯誤。
自動重連時導覽列會顯示「正在重連」提示。如果重連也失敗,需要手動返回資源列表重新打開。
macOS(螢幕共享)
macOS 內建的「螢幕共享」服務(screensharingd)基於標準 VNC,但加入了不少 Apple 私有改動。OmniGate 只實作標準 RFB 協定,因此連線 macOS 時存在以下相容性與限制:
macOS 內建的「螢幕共享」服務(screensharingd)基於標準 VNC,但加入了不少 Apple 私有改動。OmniGate 實作了標準 RFB 協定以及 macOS 的 ARD DH-AES 認證(參考 libvncserver 實作),但 Apple 私有的其他擴充(單螢幕切換、私有壓縮編碼等)不支援,因此連線 macOS 時存在以下限制:
認證方式
macOS 螢幕共享支援兩種認證方式,OmniGate 均已支援:
ARD 認證(預設)
macOS 預設使用 Apple 私有的 DH-AES 認證(ARD 類型 30)。OmniGate 已實作該協定,連線時使用 Mac 的使用者名稱和登入密碼即可完成認證。在 VNC 資源中填入 Mac 使用者名稱和密碼,打開連線後會自動走 ARD 認證流程,無需在 Mac 上額外配置。
傳統 VNC 密碼(可選)
如果在 Mac 上開啟了傳統 VNC 密碼:
系統設定 → 一般 → 共享 → 螢幕共享 → ⓘ → 電腦設定 → 勾選「VNC 顯示程式可以使用密碼控制螢幕」,並設定一個專用密碼。
OmniGate 會優先使用傳統 VNC 密碼認證(類型 2)。該密碼與 Mac 登入密碼相互獨立,僅在 VNC 連線時使用。此時資源中的使用者名稱欄位不需要填寫。
解析度設定無效
macOS 不支援客戶端發起的解析度調整——VNC 的 SetDesktopSize 指令會被它當作未知指令(unknown command 251)並斷開連線。因此 OmniGate 的解析度設定對 macOS 不生效,始終使用 Mac 當前的原生解析度。如需改變畫面尺寸,請在 Mac 端調整顯示器設定。
顏色深度設定同樣不適用於 macOS(見「畫質與頻寬」一節)。
多螢幕拼接
當 Mac 連接了多台顯示器時,macOS 會把所有螢幕拼成一張大 framebuffer(例如兩塊螢幕拼成 3024×3404)一併向客戶端傳輸。標準 VNC 不提供每塊螢幕的座標資訊,因此:
- 無法像 macOS 自帶的「螢幕共享」那樣精確切換「顯示器 1 / 顯示器 2」。
- 需要透過縮放和平移在這張大圖裡瀏覽不同螢幕。
- 精確的單螢幕切換依賴 Apple Remote Desktop(ARD)的私有顯示管理協定,OmniGate 不支援。(OmniGate 支援 ARD 認證,但不支援 ARD 的顯示管理功能。)
頻寬與效能
macOS 不支援 Tight、Hextile 等常見壓縮編碼(會退化為未壓縮的 Raw)。OmniGate 已實作對 macOS 友善的 ZRLE 編碼來獲得壓縮,並採用伺服器端原生像素格式直接渲染(無需逐像素位元組序轉換),相比早期版本畫面流暢度有明顯改善。但 screensharingd 的增量更新粒度較粗,即便畫面只有微小變化也可能重發較大區域,因此在相同畫質下,頻寬通常高於 Linux 上的 TigerVNC 等伺服器端。Apple 私有的高強度壓縮編碼(Apple ZRLE / Apple Tight)未公開,OmniGate 不實作。若對頻寬敏感,可在 Mac 上改用支援 Tight 的第三方 VNC 伺服器端(如 RealVNC Server)。
不支援聲音
標準 VNC 協定只傳輸畫面,不傳輸音訊。因此連線 macOS(以及任何 VNC 伺服器端)都不會有聲音。macOS 自帶「螢幕共享」的聲音走的是 Apple 私有通道,標準 VNC 客戶端無法接收。
剪貼簿
OmniGate 支援基礎的雙向文字剪貼簿同步(需在資源中開啟)。macOS 對標準 VNC 剪貼簿的支援有限,圖片、檔案、富文字等複雜內容不在同步範圍內。
已知限制
不同 VNC 伺服器端、解析度、HiDPI 和滑鼠模式會影響指標座標一致性。OmniGate 會顯示一個本地滑鼠位置小黑點,幫助判斷本地觸控位置和遠端指標位置。
當前內建 VNC 客戶端偏基礎,複雜編碼、剪貼簿同步和進階圖形最佳化不一定完整支援。
