better_todesk:把电脑画面带到平板和 iPhone 上
陈淮锐 · 2026 年 9 月搭建 · 10 月 2 日补充 iPhone 接入
GitHub · 0hello-bit/better_todesk我最初只是想在 vivo Pad 上看到并操作电脑画面。电脑端使用 Sunshine,平板端使用 Moonlight;后来又把双屏切换、Tailscale 跨网络和 Termux/OpenSSH 维护经验整理到了一起,于是单独做成了这个小项目。
10 月 2 日,我又接入了 iPhone:沿用电脑上的 Sunshine,完成 Moonlight 配对后收到了桌面画面,最后也确认手机触控能够操作电脑。
阅读完整折腾记录:安装排障、平板 SSH、双屏与 Tailscale
为什么用这套连接方式
访问范围自己掌握。 跨网络时走 Tailscale 的加密私网,无需在路由器上开放公网端口。配合设备授权、访问规则和防火墙,可以把访问限制在自己的设备内,减少服务直接暴露到公网的机会。这样可以减少公网暴露面,账号保护、配置和更新仍要自己负责。我没有做过与 ToDesk 的安全审计对比。
画面按自己的需求调。 Moonlight 可以调整分辨率、帧率和码率,再结合 Sunshine 的编码设置,自己选择清晰度、流畅度与带宽占用之间的平衡。本地网络好时追求清晰,外出时可以适当降低码率。可调范围受客户端版本、源显示器、编码器和设备解码能力限制,不是所有参数都能无限自定义。
家里和外出沿用同一套连接。 局域网内直接串流,离开同一个 Wi-Fi 后通过 Tailscale 访问电脑。平板的实体键盘还能切换主副屏,Termux SSH 则用于维护平板环境。前提是两端在线、电脑不休眠,网络与访问规则允许连接。
对我来说,最直接的收益就是本地调到 2K 后,画面清晰、操作跟手。相应的代价是要自己处理后台权限、网络和编码设置;这次双显卡切屏用到的软件编码,也需要留意 CPU 占用和耗电。
平板连接与双屏切换
- Sunshine 与 Moonlight 已完成配对,平板可以查看并操作电脑画面。
- 两个显示器可以一次切换查看一个屏幕,使用 Sunshine 原生快捷键。
- Termux/OpenSSH 曾在局域网内连上 vivo Pad,并验证过息屏和一次重启后的启动流程。
- 两端加入 Tailscale 后,Moonlight 可以通过 Tailscale 地址进入 Desktop。
- 本地网络里把 Moonlight 调到 2K 后,我的主观体验是画面清晰、操作流畅,几乎感觉不到延迟。
最后一条是个人使用感受,不是端到端延迟或帧率测试。实际效果还会受网络、码率、编码器、分辨率和设备温度影响。
iPhone 也接上了
这次手机已经装好 Tailscale 和 Moonlight。检查时,电脑 Sunshine 正在运行,Tailscale 中有 iOS 设备在线;Moonlight 显示了尚未配对的电脑。输入手机给出的 PIN 完成配对后,手机截图里已经能看到电脑桌面。
刚开始画面上全是摇杆、A/B/X/Y 和肩键,操作桌面很不方便。我把 On-Screen Controls 设为 Off,Touch Mode 选为 Touchpad。后来检查截图,这两项已经正确,但我仍一度觉得单指无法控制,随后又自行恢复,最终确认可以用了。
截图确认了桌面画面,我也实际用到了触控。但当时没有同步记录手机触摸和电脑光标,触控恢复的原因仍不清楚;这次 iPhone 连接的外网路径、2K 和延迟也没有单独验证。
USB 在这里用于识别手机和辅助截屏;Moonlight 串流走网络。iPhone 截图通过电脑上的 pymobiledevice3 获取,旧截屏接口失败后,换用 DVT 接口成功。截图里包含私人桌面内容,因此这里只记录过程。
把配置和排查过程留在仓库里
这次折腾包含了安装目录排查、服务检查、双屏切换、跨网络连接和 Android 后台限制,已经不只是一个工具链接。仓库保留了可复用的检查脚本、Termux 启动示例、脱敏配置和第一人称复盘;不会放 Sunshine 二进制、证书、日志、真实地址或 SSH 私钥。
代码和完整记录见 GitHub 仓库。