Linkage 希望把 Mac 变成 Windows 工作站的一块网络显示器。 SolidWorks 等应用完整运行在 Windows x86-64 上;Mac 负责视频解码、显示、音频和输入。你保留 Windows 的应用生态,也能继续使用 Mac 的窗口、触控板和键盘。
开发预览 · 尚无面向普通用户的安装包。 已有真实有线串流与多个原生交互模块;当前媒体客户端基于修改过的 Moonlight,主机基于 Sunshine + 虚拟显示驱动。触控板手感、物理像素对齐和跨设备配置仍在完善。上图是架构示意,不是软件截图。
用 Mac 写代码、处理文档,同时需要 Windows 上的 CAD 和工程软件,是很常见的工作方式。我们关心的不只是“连得上”,而是小字和细线能否看清、拖动松手能否及时结束、快捷键是否符合习惯,以及全屏会话能否自然融入 macOS。
Linkage 把这些体验拆成可以实现、测量和验证的模块。
| 关注点 | 已有工作 | 当前边界 |
|---|---|---|
| 文字与细线 | HEVC 4:4:4、VideoToolbox 硬解与 Metal 呈现;分段像素测试工具 | drawable 对齐不等于物理面板 1:1;清晰度仍是首要优化项 |
| Mac 键盘习惯 | Command 编辑快捷键、Option→Win/Alt 可配置、长按 Command-Q | 已核验部分 Windows 按键事件;完整物理键盘与 CAD 组合待扩展 |
| 触控板与指针 | 精细滚动、拖动释放逻辑、光标模式选择、分阶段时延诊断 | 与原生 macOS 的滚动手感仍有差距,尚不宣称零延迟 |
| 工作连续性 | 原生 Swift/AppKit 入口与设置、全屏切换、音频串流 | 媒体端仍有 Qt/SDL;独立 Windows 应用窗口融合属于未来工作 |
| 复制与粘贴 | 双向文字/图片桥接与传输验证 | 需要独立 Windows 会话代理;应用内粘贴矩阵仍在验收,不含文件同步 |
flowchart LR
subgraph Windows[Windows 工作站]
A[CAD / Windows 应用] --> B[GPU + Windows 桌面]
B --> C[虚拟显示器]
C --> D[DXGI 捕获 + NVENC]
end
D -->|有线网络 · 视频 / 音频| E
subgraph Mac[Mac]
E[VideoToolbox 硬件解码] --> F[Metal 呈现]
G[AppKit 键盘 / 触控板]
end
G -->|输入事件| Windows
CAD 指令、几何模型和求解器留在 Windows。网络传输的是视频、音频、输入与控制消息;启用剪贴板时还会传输复制的文字或图片。
当前是 VDD → DXGI → Sunshine/NVENC → 修改版 Moonlight → VideoToolbox/Metal。直接从 IDD 取得 GPU 纹理、减少捕获环节,是研究方向,尚未实现。无需把显卡 HDMI 输出接到 Mac。
开发机上已跑通 RTX 4070 Ti SUPER → 有线网络 → Apple M4,以 2940 × 1846 / 60 Hz / HEVC 4:4:4 / 100 Mbps 配置接收视频,并验证实际 VideoToolbox 会话使用硬解。
这些是单套开发环境的结果,不是所有 Mac、显卡或网络的性能保证,也不等于物理 Retina 面板逐像素显示。
一次物理滚动测试取得 1,599 组无歧义事件配对:AppKit 回调到 SDL 分发中位数 0.529 ms、p95 0.760 ms。这仅是客户端的一段处理时间,不包含网络、Windows 处理、视频返回和屏幕扫描。我们不把它宣传为端到端延迟。方法与限制见 验证说明。
需要 macOS 14+、Xcode Command Line Tools、Swift、CMake 与 Python 3.11+。这些命令构建探针和核心测试,不会自动安装主机或启动完整串流:
git clone https://github.com/Functionhx/Linkage.git
cd Linkage
python3 scripts/panebridge.py doctor
bash scripts/build-all.sh
bash scripts/check.sh# 读取 Mac 显示能力
tools/display-probe/.build/release/display-probe --json
# 打开像素校准窗口
tools/display-probe/.build/release/display-probe --window完整客户端、配对主机与剪贴板需要更多构建步骤,见 开发指南。目前的实验 GUI 依赖组合要求 macOS 26+ / Apple Silicon;独立工具的 macOS 14 部署目标不代表整个产品支持 macOS 14。
cd website
npm ci
npm run dev
# 静态构建
npm run build官网采用 Astro + Tailwind + TypeScript,包含中英文、下载状态与隐私页面,可部署到 GitHub Pages 或 Cloudflare Pages。长期要求保存在 官网任务。
| 目录 | 内容 |
|---|---|
tools/panebridge-launcher |
原生入口、设置、媒体生命周期和剪贴板协调 |
native/InputCore、TrackpadCore、ScrollCore |
输入所有权、手势、精细滚动 |
native/WindowCore、HoldToQuitCore、ClipboardCore |
窗口、退出控制、粘贴协调 |
native/moonlight-patches |
固定版本的客户端和 Sunshine 主机补丁 |
native/ffmpeg-patches、SDLInput |
解码证据和 macOS 修饰键适配 |
packages/SessionKit |
可独立测试的会话协商与生命周期模型 |
tools/display-probe、decoder-probe、metal-replay |
显示、实际硬解、呈现验证工具 |
tools/pixel-fixture、scroll-diagnostics |
可重复的画质与输入诊断 |
host/windows |
Windows 盘点、剪贴板代理和像素测试工具 |
website |
静态产品官网 |
- 先把画面做好:区分 Windows 源像素、编码、呈现与面板缩放的影响。
- 把连接变简单:把开发机配置转为可协商、可恢复的显示会话。
- 把操作磨细:完善触控板释放、滚动、物理快捷键和应用内剪贴板验收。
- 让更多人试用:可复现完整构建、签名安装包和更广的硬件矩阵。
完整计划见 路线图。欢迎带着设备、分辨率、编码格式与复现步骤提交 Issue,也欢迎贡献改进。
Linkage 建立在 Moonlight、Sunshine、Virtual Display Driver、FFmpeg 和 SDL 的基础上。感谢这些项目让低延迟显示与输入成为可探索的起点。
原创代码和文档采用 MIT;Moonlight/Sunshine 衍生补丁保留 GPL-3.0,FFmpeg 与 SDL 保留对应上游许可。组合客户端需要遵循对应依赖的许可要求。详见 LICENSE 与 THIRD_PARTY.md。
Linkage 是独立项目,与 Apple、Microsoft、NVIDIA、Dassault Systèmes 或 MathWorks 无隶属关系。应用软件需在 Windows 上正常安装并拥有有效授权。