前言
作为开发者或极客,我们总觉得屏幕不够用。虽然市面上有不少便携显示器,但手边的 iPad、安卓平板甚至大屏手机其实就是一块绝佳的屏幕。
常见的将平板作为电脑副屏的方案(如 VNC、Deskreen)通常存在以下痛点:
- 延迟高:鼠标移动有明显的'飘'感。
- 画质差:压缩痕迹严重,看文字累眼。
- 收费:好用的商业软件(如 Duet Display)往往价格不菲。
- 只是镜像:很多方案只能镜像主屏,无法作为真正的扩展显示器使用。
本文将介绍一种低延迟、高画质、完全免费的'硬核'方案:利用开源游戏流媒体工具 Sunshine (服务端) 和 Moonlight (客户端),配合 NVIDIA 显卡 的虚拟显示技术,在 Linux (Ubuntu 24.04) 上'无中生有'地创造出一块虚拟屏幕,并将其流式传输到你的平板上。
核心优势:
- 极低延迟:基于主要用于云游戏的流媒体技术,局域网内延迟通常低于 10ms。
- 真·扩展屏:不是镜像,而是系统层面识别出的独立显示器,窗口可以拖过去。
- 纯软件实现:无需购买显卡欺骗器(Dummy Plug)等硬件。
方案原理
核心思路
- 虚拟显示器:利用 NVIDIA 驱动的特性,在 X11 系统中强制开启一个物理上不存在的显示接口(Virtual Display)。
- 桌面扩展:操作系统将这个虚拟接口识别为真实显示器,你可以在系统设置里排列它的位置。
- 定向推流:配置 Sunshine 仅捕获这个虚拟显示器的画面。
- 客户端接收:平板上的 Moonlight 连接 Sunshine,显示画面并回传触摸/鼠标操作。
为什么选择 Sunshine + Moonlight?
Sunshine 是 NVIDIA GameStream 协议的开源实现。相比 VNC 等远程桌面协议,它利用 GPU 进行硬件编码(NVENC),效率极高,专为对延迟极度敏感的游戏场景设计,用来做桌面扩展简直是'降维打击'。
环境与硬件要求
本教程基于以下笔记本环境进行配置:
- 操作系统: Ubuntu 24.04 LTS (使用 X11 窗口系统,暂不推荐 Wayland)
- 显卡配置: 双显卡笔记本
- iGPU: Intel Iris Xe (负责内屏 eDP)
- dGPU: NVIDIA RTX 3060 (负责外接 HDMI/DP)
- 显示设备:
- 笔记本自带屏幕 (eDP-1)
- 物理外接显示器 (HDMI-1-0)
- 目标: 新增一个虚拟显示器 (DP-1-0) 推流给平板
- 客户端设备: 华为平板 (HarmonyOS 6.0) 、小米 pad5 pro 或任意安装 Moonlight 的设备
详细配置步骤
第一步:安装 Sunshine 和 Moonlight
- 客户端 (平板): 在应用商店下载 Moonlight Game Streaming,或者前往 Moonlight Android Github Releases 安装对应的 文件。

