Skip to content

VNC

VNC 资源使用内置基础 VNC 客户端打开。

配置项

字段说明
名称资源显示名
HostVNC 服务地址
Port默认 5901
UsernamemacOS ARD 认证用的 Mac 用户名(传统 VNC 密码认证留空)
PasswordVNC 密码

传统 VNC 密码认证不使用用户名。连接 macOS 屏幕共享时如果走 ARD 认证(默认),需要填写 Mac 的用户名。

如果服务端需要密码而资源里没有保存密码,打开时会弹出密码输入框。

画质与带宽

资源编辑器中有两个带宽相关设置,均在建立连接时生效,修改后需退出并重新打开会话。

画质压缩

控制 Tight 编码中 JPEG 矩形的压缩质量。100% 为无损(不使用 JPEG,仅 zlib 压缩);90% / 80% / 60% 逐级降低 JPEG 质量,适合包含照片、渐变等丰富色彩的画面。

颜色深度

请求服务器以更低的像素深度传输画面,减少 Raw / zlib / ZRLE 等像素编码的数据量:

选项格式说明
32-bit(默认)全彩色画质无损,带宽占用最高
16-bitR5G6B5像素数据约减半,渐变处可能有轻微色带
8-bit256 色(R3G3B2)像素数据约降至 1/4,画质损失明显,适合极慢链路上的纯文本远程

注意:降低颜色深度在部分系统上会增加计算压力。 服务器的帧缓冲通常是 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 客户端偏基础,复杂编码、剪贴板同步和高级图形优化不一定完整支持。

OmniGate App 用户手册