Linux 闲置笔记本做副屏:方案调研与后续研究 TODO

七月 10, 2026 [linux, desktop] #linux #wayland #gnome #second-monitor #virtual-display #deskreen #sunshine #moonlight #monitorize #spacedesk

需求

两台 Linux 电脑(都是 GNOME 桌面,Wayland 协议),把闲置笔记本变成真正意义上的「扩展副屏」——鼠标可以跨屏移动,GNOME 认为这是第二块显示器,可以任意拖拽窗口。不是远程桌面,不是屏幕镜像,不是共享单个窗口。

方案全景

方案真正扩展桌面延迟系统要求推荐程度
SpaceDesk很低Windows 主机★★★★★
Deskreen❌(镜像/窗口共享)中等跨平台★★★
Sunshine + Moonlight❌(远程桌面)很低跨平台★★★★
HDMI 视频采集卡❌(镜像输入)很低任意★★★★
GNOME RDP 远程桌面理论支持中等GNOME★★★
Monitorize✅(理论)未知GNOME/Wayland★★☆
Input Leap + SSH/tmux❌(不共享画面)跨平台★★★★

方案一:SpaceDesk(最成熟,但仅限 Windows)

Windows 生态下最成熟的方案。通过 WDDM 虚拟显示驱动向系统声明第二块显示器,再通过网络传输画面。

关键启示:Windows 的 WDDM 架构允许第三方安装虚拟显示驱动,这是 SpaceDesk 成功的底层原因。Linux 缺少等价机制。

方案二:Deskreen(最简单,但非扩展桌面)

通过 WebRTC 共享桌面或窗口,副屏只需浏览器打开。

方案三:Sunshine + Moonlight(低延迟,但非扩展桌面)

利用 GPU 硬件编码(VA-API/NVENC)传输桌面。

方案四:HDMI 视频采集卡(画质最好,镜像模式)

主电脑 HDMI → USB Capture → 副屏 OBS/PotPlayer

方案五:GNOME RDP 远程桌面

GNOME 自带的远程桌面通过 screen-share-mode extend 可以创建虚拟显示器。结合 RDP 客户端连接,理论上能实现扩展屏。之前踩过一堆坑

核心命令:

gsettings set org.gnome.desktop.remote-desktop.rdp screen-share-mode extend

方案六:Input Leap + SSH/tmux(稳定,但不共享画面)

将闲置笔记本当作独立工作站,通过 SSH 连接开发机,Input Leap 共享键鼠。


核心障碍:为什么 Linux 没有 SpaceDesk 等价方案

Linux 显示架构的根本限制:

GNOME → Mutter → Wayland → DRM/KMS → GPU → HDMI/DP → Monitor

显示器必须来自 DRM Connector(HDMI-A-1、DP-1、eDP-1 等)。网络上的另一台电脑无法注册成 DRM Connector,GNOME 根本不知道它的存在。

Windows 的 WDDM 支持第三方虚拟显示驱动(如 SpaceDesk Driver),但 Linux 的 DRM/KMS 架构没有等价接口。

要做一个 Linux 版 SpaceDesk 需要同时实现:

  1. DRM Driver — 向内核注册虚拟显示器
  2. Wayland Protocol — 通知合成器新显示器存在
  3. DMA-BUF — 零拷贝获取显存帧
  4. PipeWire — 捕获虚拟显示器画面
  5. GPU 编码/解码 — 硬编解码降低延迟
  6. 热插拔 — 连接/断开自动识别
  7. EDID — 报告分辨率、刷新率
  8. Cursor Plane — 独立的鼠标光标平面
  9. VSync — 帧同步

这几乎等于重新写一套显示驱动。Windows 已经提供这些接口,Linux 尚未统一。


已知的可行路径

路径一:EDID 欺骗 + DRM 虚拟显示器

通过内核参数在未使用的 DRM Connector 上强制加载 EDID,让系统认为接了显示器。Sunshine 再串流这个虚拟显示器。

# 内核参数示例
drm.edid_firmware=HDMI-A-2:edid/hdmi-edid.bin video=HDMI-A-2:1920x1080@60e

路径二:GNOME Virtual Monitor API(Mutter 新增)

2025 年后 GNOME Mutter 增加了 Virtual Monitor API,最初为 RDP 准备。Monitorize 等项目正是利用这一能力。

Mutter 创建 Virtual Monitor
     ↓
PipeWire 捕获 Display-2
     ↓
GStreamer 编码
     ↓
UDP 网络传输
     ↓
客户端解码 → 全屏显示

路径三:KVM + Virtio-GPU + RDP

在主机上启动轻量级 KVM 虚拟机,通过 Virtio-GPU 创建虚拟显示器,虚拟机内启动 RDP/VNC 服务端。


后续 TODO 研究方向

以下按优先级排列:

TODO 1:Monitorize 实测验证

TODO 2:GNOME RDP extend 模式深度验证

TODO 3:Wayland 下 EDID 欺骗的可行性探索

目前 EDID 欺骗方案在 Wayland 下效果不佳,需要研究:

TODO 4:wlroots 生态中的虚拟显示器方案

TODO 5:PipeWire + DMA-BUF 低延迟传输

如果虚拟显示器能从内核拿到 DMA-BUF(显存帧),PipeWire 可以直接用 GPU 编码传输,避免 CPU 拷贝。

TODO 6:尝试 Windows 主机 + Linux 副屏

如果主机可以是 Windows,则 SpaceDesk 是首选。Linux 副屏只需要安装 SpaceDesk Viewer 即可。

TODO 7:KVM + Virtio-GPU 方案实操


当前结论

截至 2026 年 7 月,在 Linux + Linux + GNOME (Wayland) 环境下,没有一个成熟、稳定、维护活跃、能够像 Windows SpaceDesk 一样把另一台 Linux 笔记本变成真正扩展副屏的方案。这不是个案问题,而是整个 Linux 桌面生态在显示驱动架构层面的空白。

短期工作流建议:

  1. 独立工作站 + Input Leap:闲置笔记本运行浏览器、文档、监控面板,SSH 连开发机,通过 Input Leap 共享键鼠。稳定且无需与显示系统对抗。
  2. Deskreen:快速把某个窗口/文档投到副屏
  3. 增加物理显示器:最务实的长期方案

值得持续跟踪的项目:MonitorizeGNOME Virtual Monitor API 的后续发展。