Skip to content

Repository files navigation

State Bar

Platform Swift License

State Bar 是一个轻量、原生的 macOS 菜单栏系统状态工具。点击菜单栏图标,即可快速查看 CPU、GPU、内存、磁盘和网络的实时状态。

State Bar 状态面板

功能

  • 实时展示 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 命令行构建与测试。

使用 Xcode 归档和发布

项目已经配置:

  • StateBar macOS App Target
  • StateBarTests 测试 Target
  • Bundle ID:com.karldu.StateBar
  • App Sandbox 与 Hardened Runtime
  • App Icon、版本号和 Utilities 分类
  • Release Archive Scheme

首次归档前,在 Xcode 中选择 StateBar Target,打开 Signing & Capabilities,选择自己的 Apple Developer Team。然后:

  1. 将运行目标切换为 Any Mac
  2. 选择 Product > Archive
  3. 在 Organizer 中选择归档并点击 Distribute App
  4. 发布到 Mac App Store 时选择 App Store Connect;发布到 GitHub 或官网时选择 Developer ID

版本号和构建号可在 Target 的 General > Identity 中修改。每次向 App Store Connect 上传新构建时,都需要递增 Build。

工程文件由 project.yml 描述。修改 Target 或 Build Settings 后,可以使用 已安装的 XcodeGen 重新生成:

xcodegen generate

构建 macOS 应用

不需要正式签名的本地测试也可以继续使用打包脚本。它会执行 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 IOAcceleratorsystem_profiler

已知限制

  • 不同 macOS 和硬件版本可能不会通过 IOKit 公布 GPU 利用率。
  • macOS 没有稳定的公开温度与风扇转速 API。State Bar 不调用私有 SMC 接口,因此这些指标会明确显示为不可用。
  • 当前打包脚本执行的是 ad-hoc 签名;面向其他用户分发时仍需 Apple Developer ID 签名、公证和正式安装镜像。

参与开发

欢迎通过 Issues 报告问题或提出建议,也欢迎提交 Pull Request。

License

State Bar 使用 MIT License

About

一款极简、轻量的 macOS 菜单栏工具,让你在顶部状态栏一目了然地实时监控 Mac 的 CPU、内存与网速

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages