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 用户手册