Skip to content

Releases: ghbhiee/netdisplay

NetDisplay v0.4.14

Choose a tag to compare

@ghbhiee ghbhiee released this 29 Jul 01:29

NetDisplay v0.4.14 — 把一台电脑当另一台的网络第二显示屏(Mac ⇄ Windows,双向)。

本次更新

Windows

  • 直连(局域网 IP)配对:配对弹窗新增「直连」页,填对方局域网 IP + 同一个配对码即可点对点配对,不经中转(PAIR_HELLO 0x4A + 常驻 47800 武装响应器,错码/未武装一律静默拒绝)。跨网络仍走中转。
  • 投射方停止后,接收窗口自动关闭:不再冻结在最后一帧(那会让人误以为还连着)。接收服务保持等待,对方再投时窗口自动重开。

macOS

  • 全面支持辅助功能(AX)驱动:所有控件有稳定标识,可按名字自动化;新增 axdrive 工具与通用约定文档。
  • 修复:投射源列表只在启动时抓取一次 → 授权后不重启永远为空(这才是「选不到窗口」的真因,并非权限问题)。
  • 修复:无屏幕录制权限时异常被吞、导致「没窗口」与「没权限」表现相同 → 现在显示提示并可一键跳转设置。
  • 修复:投射源列表被截断在 8 个,靠后的应用(如 iTerm2)选不到。
  • 修复(中转服务):会话字节统计方向标反。

已验证

  • 跨机实测:投射成功后停止、再次投射均正常(修复了此前「第二次投射失败」)。
  • 双向单窗口投射(Mac→Win iTerm、Win→Mac 同花顺)均正常,呈现为 window 模式、分辨率不超过对方屏幕、不变形。

升级提示

  • macOS 用户:升级后若「选择投射内容」为空,是本版签名身份变更导致屏幕录制授权失效,到「系统设置 → 隐私与安全性 → 屏幕录制」重新勾选 NetDisplay 即可。
  • 配对:从更早版本升级后如连不上,请两端解除配对、用同一个码重新配一次(旧记录的配对密钥可能已失效)。

下载

  • Windows:NetDisplay-0.4.14-portable.exe(免安装,直接运行)
  • macOS:NetDisplay-macOS.zip

NetDisplay v0.4.12

Choose a tag to compare

@ghbhiee ghbhiee released this 25 Jul 08:51

把一台电脑当成另一台电脑的第二显示屏——Mac ↔ Windows 双向互投,装好配对一次即可。

下载

平台 文件
macOS 14+ NetDisplay-macOS.zip
Windows 10/11 NetDisplay-0.4.12-portable.exe

两端都要装(同一个 App 收发一体,谁投谁收在界面上选)。

macOS 首次运行:自签名,会提示「无法验证开发者」→ 右键 App →「打开」→ 再点「打开」。
另需在「系统设置 → 隐私与安全性 → 屏幕录制」勾选 NetDisplay。

这一版的重点

修复「第一次投射成功、之后再也配不上」 —— 这是本次最重要的修复。接收端在握手时会把设备的
secret 覆盖成对方下发的 pairSecret,而在现在的模型里 secret 就是中转房间的钥匙,一覆盖就把
自己悄悄搬进另一个房间,于是首次会话之后两端永远在不同房间、再也撮合不上。两端均已移除该逻辑。

⚠️ 升级后请两端都「解除配对」并重新配一次同一个码 —— 旧记录里存的可能已是被污染的 secret。

投射画质规则统一(协议 §3.10):画质只在投射方设置(接收方的画质设置已移除,因为它本来就
不生效)。跟随对方屏幕 → 按对方分辨率、当第二显示器;指定分辨率 → 超过对方屏幕自动修正、窗口显示;
投射单个窗口 → 等比缩到对方屏幕内(不变形、不放大)。投射中改分辨率/帧率实时生效。

配对体验:配对弹窗分「经中转(配对码)/直连(对方 IP)」两个 Tab;中转不可用时会提示并给出
设置入口,只有中转可用才能配对;配对只在弹窗打开期间有效,关窗即失效(防别人拿码蹭连)。
设备行显示 直连/中转 徽章、对方在线状态,并可手动刷新。

其它:中转服务限流改为按房间计(修复重连时被误限)、投射与接收不再互相禁用、
投射源列表不再出现空白项、macOS 深色主题修复、新增「关于」。

中转服务与虚拟显示器

  • 同一局域网用「直连(对方 IP)」即可,不需要中转服务。
  • 跨网络需要一台中转服务器,5 分钟自建(relay/,Go)——步骤见
    README「中转服务」
    本项目不提供公共服务器
  • Windows 想投出一块「新的扩展屏」(而不是复制现有屏)需装虚拟显示器驱动
    VirtualDrivers/Virtual-Display-Driver
    只装在作为投射方的 Windows 上;Mac 内置 CGVirtualDisplay,不用装任何东西。
    步骤见 README「Windows 投整个屏幕」

完整说明见 README;协议规范见 docs/02-protocol.md

NetDisplay v0.4.5

NetDisplay v0.4.5 Pre-release
Pre-release

Choose a tag to compare

@ghbhiee ghbhiee released this 24 Jul 10:08

⚠️ 两端必须装同一个版本

Windows 和 Mac 都要用 v0.4.5。 跨版本配对一定失败:v0.4.x 改了「配对码 → 房间」的推导算法(协议 §3.7),新旧版本会算出不同的房间,输一样的码也永远碰不到面——而且两边日志都显示正常,几乎无法自查。装之前请确认两台都是这一版。

把一台电脑的屏幕投到另一台上当扩展显示器用。Mac ⇄ Windows 任意方向,同一局域网走直连,跨网络走中转服务器。

这一版有什么

配对

  • 6 位字母+数字配对码,大小写和空格都不敏感(k7m2 qx = K7M2QX
  • 真·双向配对:只有服务器确认对方也输了同一个码,才显示「已配对 · 对方名字」;在这之前显示「等待对方输入配对码…」
  • 配对全程在弹窗内完成,确认成功才把设备存下来;关闭弹窗即取消,不留痕迹
  • 配对关系持久保存,之后不用再输码

投射 / 接收

  • 双向都通:Windows → Mac、Mac → Windows
  • 方向由你显式选择(「投射本机」/「接收」),不再让程序猜谁投谁
  • 投射方停止时,接收窗口自动关闭;对方重新开投会自动重开
  • 中转连上后会在后台尝试升级到局域网直连(判据是收到对端协议应答,不被 TUN 代理欺骗)

状态显示(presence)

  • 设备行直接显示对方在干嘛:「对方已开接收 · 可投射」「对方正在投射 · 可接收」「对方正在接收」「对方离线」
  • 对方不在线时,投射按钮自动禁用
  • 中转服务可用性与延迟实时显示

画质

  • 硬件编码 HEVC 4:2:2 10-bit(NVENC),回退 H.264
  • 分辨率 / 缩放 / 帧率 / 码率可调

已知问题

  • 选窗口投射暂时不可用,只能投整块屏幕(排查中)
  • 「整块屏幕」目前是镜像主屏,不是新开一块扩展桌面。真正的虚拟扩展屏需要 Windows 间接显示驱动(IddCx),正在评估
  • 两台机器在不同网络时只能走中转,无法直连(这是网络拓扑决定的,不是缺陷)

排障

Windows 端运行日志:%APPDATA%\netdisplay-windows\netdisplay.log(每次启动覆盖)。遇到问题请连同这个文件一起反馈。

NetDisplay v0.3.0

Choose a tag to compare

@ghbhiee ghbhiee released this 22 Jul 14:53

NetDisplay v0.3.0

跨平台「网络扩展屏 / 单窗口投射」——把一台电脑的屏幕或单个窗口投射到另一台,经中转服务器连接(无需端口转发/公网 IP)。收发一体,任意方向(Mac↔Windows 双向已实测跨机联调通过)。

下载

  • macOSNetDisplay-macOS.zip(菜单栏 App,Apple Silicon;发送+接收都支持)
  • Windows:见本 Release 的 Windows 资产(Windows 端构建后附加)

macOS 安装 / 使用

  1. 解压,NetDisplay.app 拖到「应用程序」。
  2. 首次打开:右键 →「打开」(自签名开发证书,非 App Store)。图标出现在右上角菜单栏。
  3. 首次投送需在「系统设置 → 隐私与安全性 → 屏幕录制」里勾选它。
  4. 菜单栏「开始投送」= 发送;「接收投射(本机作目标屏)」= 接收。

配置中转

菜单栏「中转设置」填入中转服务器地址 + token(token 向中转运营者获取;公共仓不含 token)。两端填同一个即可。

能力

  • 整屏扩展屏 / 单窗口投射(窗口 resize 画面自动跟随)
  • codec 协商(H.264 / HEVC),持久配对(配一次之后免配对码)
  • 背压自适应、断线自愈;跨网络中转(RTT 视中转节点位置)