Skip to content
weimo123Public
forked from jodacame/NetSpeed

About

Tiny native macOS menu bar app showing real-time network upload/download speed and per-app bandwidth usage — no Electron, no dependencies, pure Swift + AppKit.

Resources

Stars

0 stars

Watchers

0 watching

Forks

 
 

Latest commit

 

History

6 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

NetSpeed

轻量原生 macOS 菜单栏网速工具,使用 Swift + AppKit,无第三方依赖。

安装(Apple Silicon)

打开 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 使用伪终端持续读取 nettop CSV 流,绕过普通管道的输出缓冲,进程列表每秒更新;这解决了 1.4.x 在 macOS 27 上无法及时采样的问题。
  • 面板底部提供“开机自启”开关(登录当前账户后启动)和退出按钮。macOS 13+ 使用系统登录项服务,若需要批准会显示“前往允许”;macOS 12 使用当前用户的 LaunchAgent。开关读取实际配置,默认不主动开启。

构建 DMG

需要 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 时接口统计可能包含物理接口与隧道的重复流量;应用列表按进程显示,不合并同一应用的辅助进程。

License

MIT,见 LICENSE。

About

Tiny native macOS menu bar app showing real-time network upload/download speed and per-app bandwidth usage — no Electron, no dependencies, pure Swift + AppKit.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages