State Bar 是一个轻量、原生的 macOS 菜单栏系统状态工具。点击菜单栏图标,即可快速查看 CPU、GPU、内存、磁盘和网络的实时状态。
- 实时展示 CPU 用户、系统与闲置占比,并保留最近一分钟趋势
- 读取可用的 GPU 利用率与真实 GPU 核心数
- 展示内存用量、磁盘容量及磁盘读写速率
- 展示网络上传/下载速率与本机 IPv4 地址
- 可在偏好设置中选择菜单栏只显示图标,或单独显示 CPU、GPU、温度、内存、磁盘、网络、风扇中的一项
- 提供系统信息、菜单栏实时预览和关于页面
- 快速打开“磁盘工具”和“活动监视器”
- 作为菜单栏辅助应用运行,不占用 Dock
- 完全使用 SwiftUI、AppKit、Mach 和 IOKit,无第三方依赖
- macOS 14 Sonoma 或更高版本
- Xcode 16 或更高版本
- Swift 6 工具链
当前主要在 Apple Silicon Mac 上开发和验证。
克隆仓库:
git clone https://github.com/karl-du/StateBar.git
cd StateBar直接运行开发版本:
swift run StateBar推荐直接用 Xcode 打开标准 macOS 工程:
open StateBar.xcodeproj选择 StateBar scheme 后即可构建和运行。Package.swift 仍然保留,用于 Swift Package Manager
命令行构建与测试。
项目已经配置:
StateBarmacOS App TargetStateBarTests测试 Target- Bundle ID:
com.karldu.StateBar - App Sandbox 与 Hardened Runtime
- App Icon、版本号和 Utilities 分类
- Release Archive Scheme
首次归档前,在 Xcode 中选择 StateBar Target,打开 Signing & Capabilities,选择自己的
Apple Developer Team。然后:
- 将运行目标切换为 Any Mac。
- 选择 Product > Archive。
- 在 Organizer 中选择归档并点击 Distribute App。
- 发布到 Mac App Store 时选择 App Store Connect;发布到 GitHub 或官网时选择 Developer ID。
版本号和构建号可在 Target 的 General > Identity 中修改。每次向 App Store Connect 上传新构建时,都需要递增 Build。
工程文件由 project.yml 描述。修改 Target 或 Build Settings 后,可以使用
已安装的 XcodeGen 重新生成:
xcodegen generate不需要正式签名的本地测试也可以继续使用打包脚本。它会执行 Release 构建、生成应用包并进行 本机 ad-hoc 签名:
./scripts/package-app.sh
open "dist/State Bar.app"生成结果位于:
dist/State Bar.app
swift test测试覆盖数据显示格式和历史采样窗口边界。设计还原记录见 design-qa.md。
StateBar/
├── Package.swift
├── Resources/
│ ├── Assets.xcassets/
│ │ └── AppIcon.appiconset/
│ ├── AppIcon-1024.png
│ ├── AppIcon-Small-1024.png
│ ├── StateBar.icns
│ └── Info.plist
├── Sources/StateBar/
│ ├── Models/
│ ├── Services/
│ ├── Views/
│ └── StateBarApp.swift
├── Tests/StateBarTests/
└── scripts/
└── package-app.sh
| 指标 | 数据来源 |
|---|---|
| CPU | Mach host_processor_info,每秒采样 |
| 内存 | Mach VM statistics |
| 磁盘容量 | Foundation 文件系统资源值 |
| 磁盘读写 | IOKit 块设备统计 |
| 网络 | getifaddrs 接口字节计数及本机 IPv4 |
| GPU | IOKit IOAccelerator 与 system_profiler |
- 不同 macOS 和硬件版本可能不会通过 IOKit 公布 GPU 利用率。
- macOS 没有稳定的公开温度与风扇转速 API。State Bar 不调用私有 SMC 接口,因此这些指标会明确显示为不可用。
- 当前打包脚本执行的是 ad-hoc 签名;面向其他用户分发时仍需 Apple Developer ID 签名、公证和正式安装镜像。
欢迎通过 Issues 报告问题或提出建议,也欢迎提交 Pull Request。
State Bar 使用 MIT License。
