HardwareMonitor 2.1.1 源码

macOS · Apple Silicon · 菜单栏

macOS 菜单栏硬件监控

实时看 CPU、内存、磁盘、网络、电池、亮度、进程占用,带趋势图和阈值告警,还有一个能拖来拖去的悬浮小窗。纯 SwiftUI 写的,数据全是系统接口直接读,没有第三方依赖,跑起来内存占用很低。

约 2.8 MB · macOS 14.0+ · arm64 · 全部功能免费,无付费墙

HardwareMonitor 文件编辑显示
52° · 12% 21:48
硬件监控 监控剪贴板工具箱专注
CPU 占用 12% 4 性能核 · 6 能效核
内存 9.4/ 16 GB 应用 6.1 · 联动 1.8 · 压缩 0.9
芯片温度 52°C PMU tdie 最大值
温度 · 最近 60 次采样52°C
WindowServer8.2%
kernel_task5.4%
Xcode-beta3.6%
每 2 次采样刷新菜单栏 · 超阈值发通知并变红
45本机可读到的传感器
13内置结束提示音
17新手引导步骤
30专注统计保留天数
01 / 监控

能看什么

主界面分四个标签页:监控、剪贴板历史、工具箱、专注。悬浮窗和主界面平时都隐藏,不占屏幕;深浅色跟随系统。

CPU 与内存

CPU 占用率;内存占用和组成,应用 / 联动 / 压缩 / 空闲分开列,还有磁盘剩余空间。

电池

电量、健康度、循环次数、充电状态、电池温度。插电和用电池时都能看。

屏幕亮度

当前亮度读数。走 DisplayServices 私有 API,系统大版本升级后若符号变化会自动降级为不可用。

网络

上行、下行实时速率。

进程 TOP 10

按 CPU / 内存排前十,横向条形图,进程名完整显示不截断。

历史曲线

温度、CPU、内存、网络的历史曲线,用 Swift Charts 画。

阈值告警

超过设定值就发系统通知、播提示音,菜单栏图标同时变红。

工具箱

系统信息、二维码、单位换算、文本统计、编码、颜色、便签、常用文件夹、高级功能。

另外有全局热键、启动项管理、CPU 压力测试、Dock 温度角标、CSV 导出和多语言界面。软件只读硬件数据,不做任何写入 —— 风扇控制、亮度调节这些都没做。

02 / 专注

番茄钟不只是个倒计时

这一块是照着「能当专注软件用」做的,计时、环境声、统计都在本地跑。

沉浸全屏

一键进全屏专注视图,只剩超大倒计时和进度环,Esc 退出。

精确时钟

计时用单调时钟锚点法(CACurrentMediaTime),不靠 Timer 累减。睡眠唤醒、系统时间跳变后自动重校准,界面同时显示毫秒级系统时间与校准偏差。

麦克风噪音检测

实时分贝、噪音等级(安静 / 适中 / 吵闹 / 太吵)和波形。可随时关闭,关闭后完全不占用麦克风,系统指示灯会熄灭。

结束提示音

内置 13 种系统音效,也能选自己的音频文件(mp3 / wav / m4a / aiff / caf,自动复制到应用支持目录),音量单独可调,支持试听。

番茄节奏

自定义专注时长、短休 / 长休分钟数、每几轮长休、自动开始下一轮;按天统计完成番茄数与累计专注时长。

专注音景

雨声 / 海浪 / 风扇三种环境声,用 AVAudioEngine 本地合成,8 秒无缝循环。不含任何音频素材,不联网、不录音,音量独立可调。

专注统计

近 7 天柱状图(今天高亮)、连续专注天数、今日番茄数与累计时长。每日数据本地保存 30 天,跨天自动滚动。

新手引导

首次启动自动播放漫游式教程,17 步逐个功能介绍;切页后气泡平滑跟位,结束自动回到监控主界面。设置里可以重新播放。

04 / 实现

温度怎么读,风扇为什么是 --

这两件事经常被问,写清楚省得猜。

温度走 HID 传感器

Apple Silicon 上芯片温度不在 SMC 里,而是挂在 HID 传感器集线器上(IOHIDEventSystemClient,usagePage 0xFF00)。本机实测能读到 45 个传感器:PMU tdie/tdev、NAND、电池、tcal 这些,芯片温度取全部 tdie 读数的最大值。

这个路径普通权限就能读,不需要 root。接口是私有 API,Swift 头文件里没有,所以是动态调出来的:

dlopen + dlsym → IOHIDEventSystemClient
usagePage 0xFF00 → 传感器列表
max(PMU tdie …) → 芯片温度

风扇转速读不到

M 系列上风扇转速只有 SMC 的 F*Ac 这类 key 有,而新版 macOS 的 AppleSMCKeysEndpoint 对普通进程直接拒绝,所有参数组合都试过,一律 kIOReturnBadArgument。

有些工具能显示风扇,是因为内置了需要开发者证书签名的 root 特权助手,普通 App 装不了这个东西。所以这里显示 --。

SMC 协议代码是完整写好的,等系统接口放开,或者换正式版系统,就能自动恢复显示。Intel 机器上这条备用路径本来就能直接读温度和风扇。

05 / 下载

选一个包

当前版本 26DF10Q1beta2.1.1(2.1.1 / build 211)。两种格式装完是同一个 App,链接直接指向 GitHub Release,本站不存安装包。

校验值(SHA256) pkg 0210fdf8add0a035c63402c0d643a637814f4ae225402e50a2bb78868831cc95 zip ee3a8666534e1478373f7663f819a1abf357801440eba99c43b31fa076e0457f

其它版本

老版本留在 GitHub 上。需要回退、或者想对比某一版的行为,按下面的图标直接下。

1.0.10 2026-11-04 · 上一个稳定版 .pkg ↗ .zip ↗
1.0.9 2026-11-01 · 旧版 .pkg ↗ .zip ↗
0.0.3 2026-10-31 · 最早的公开包 .zip ↗
全部版本 更新日志、每个版本的说明 GitHub Releases ↗

pkg(推荐)

  1. 下载 .pkg,双击运行,一路「继续 / 安装」,自动装进「应用程序」。
  2. 双击启动。若被系统拦截,去 系统设置 → 隐私与安全性 底部点「仍要打开」,或右键 App → 打开。

zip

  1. 下载并解压,把 HardwareMonitor.app 拖进「应用程序」文件夹。
  2. 首次打开请 右键 App → 打开。

关于安全提示

本版本为 ad-hoc 签名、未做 Apple 公证,首次打开的安全提示属正常现象。若提示「已损坏」,终端执行:

xattr -dr com.apple.quarantine /Applications/HardwareMonitor.app

两种方式装好后都一样:启动时没有 Dock 图标,点菜单栏最右侧的温度计图标 → 「打开主界面」。

06 / 备注

已知问题、构建、运行环境

已知问题

  • 风扇转速读不到,原因见上面「实现」一节。
  • 亮度走 DisplayServices 私有 API,系统大版本升级后如果符号变了会自动降级为不可用。
  • 只读硬件数据,不做任何写入,风扇控制、亮度调节这些都没做。

运行环境

macOS 14+ 都能跑。开发机是 macOS 27 beta + Apple M5。Intel 机器理论上也支持,SMC 那条备用路径在 Intel 上可以直接读温度和风扇,但没有实机验证过。

自己编译

Xcode 打开 HardwareMonitor.xcodeproj,选 My Mac,⌘R 运行。或者命令行:

./build.sh
open build/Build/Products/Debug/HardwareMonitor.app

未签名的本地构建第一次运行要右键打开,或者去系统设置里允许。要分发的话得自己签名公证。

版本号怎么排

格式 26DF10Q1beta{主}.{次}.{修},末段满 10 进 1:2.1.1 → 2.1.2 → … → 2.1.9 → 2.2.0。每次改代码都升,不只是发版才升。源码和提交记录在 GitHub ↗。