轻量原生 macOS 菜单栏网速工具,使用 Swift + AppKit,无第三方依赖。
打开 dist/NetSpeed-2.0.0-arm64.dmg,将 NetSpeed.app 拖入 Applications,然后从“应用程序”启动。
2.x 版本针对 macOS 27 及以上和 Apple Silicon Mac,区别于面向 macOS 15.x 的 1.4.x 版本;安装运行不需要 Xcode。
安装包使用本机临时签名,未使用 Developer ID 签名或 Apple 公证。如果通过网络传输后 macOS 阻止打开,可在“系统设置 → 隐私与安全性”中允许打开。
- 菜单栏上下两行:上行为 ↑ 上传,下行为 ↓ 下载,文字和箭头均为白色,常规字重,单位简写为 K/s、M/s;状态栏固定占宽约 45 pt(按最宽三位有效数字和单位预先计算),固定 8 pt 字号、最多三位有效数字;箭头和单位位置固定,数值右对齐,超过显示范围自动切换单位,不再缩放字号。
- 点击菜单栏打开 320×382 的紧凑白色面板,显示总速度、应用图标、应用 / 进程名称、上传与下载速度。
- 应用使用蓝色双箭头图标;辅助进程从可执行文件路径解析所属应用,系统扩展匹配宿主应用。无所属应用的守护进程显示通用终端图标。
- 浅灰色条表示该进程在当前排序指标下相对于列表最大速度的比例。
- 点击“上传”或“下载”按对应速度降序排列,再次点击同一列切换升序。排序偏好会保存。
- 对全部活跃进程排序,列表可滚动,不再预先截取总流量前 6 项。
- 菜单栏每秒刷新;面板打开时持续采样进程流量。首次打开需要两次采样才能得到速度。
- macOS 27 使用伪终端持续读取
nettopCSV 流,绕过普通管道的输出缓冲,进程列表每秒更新;这解决了 1.4.x 在 macOS 27 上无法及时采样的问题。 - 面板底部提供“开机自启”开关(登录当前账户后启动)和退出按钮。macOS 13+ 使用系统登录项服务,若需要批准会显示“前往允许”;macOS 12 使用当前用户的 LaunchAgent。开关读取实际配置,默认不主动开启。
需要 Xcode Command Line Tools(xcode-select --install)。
./scripts/build-dmg-v2.0.sh输出 dist/NetSpeed.app 和 dist/NetSpeed-2.0.0-arm64.dmg。明确使用 arm64-apple-macosx27.0,不构建 x86_64。
./scripts/test-v2.0.sh验证 macOS 27 的伪终端采样流、CSV 控制字符和带逗号进程名解析、完整列表排序、排序按钮切换及保存、菜单栏紧凑宽度和辅助进程图标解析。
总速度读取 getifaddrs 中 en* / utun* 接口计数,进程速度使用系统 /usr/bin/nettop 的相邻采样差值。macOS 27 通过 /usr/bin/script 提供伪终端,让 nettop -L 0 持续输出 CSV。使用 VPN 时接口统计可能包含物理接口与隧道的重复流量;应用列表按进程显示,不合并同一应用的辅助进程。
MIT,见 LICENSE。