macOS 菜单栏工具 · 2.0.0

菜单栏里,看清每一瓦。

每秒采样一次,把墙插输出、系统功耗、电池充电功率拆开显示。插上充电器那一刻,就知道这套充电套装到底跑了多少。

MIT 开源无账号、无上传macOS 14+
PowerPulse power flow panel
实时 · 每秒采样Apple Silicon
01

五个面板,只回答一件事:这些数字对不对得上。

墙插给了多少、系统吃了多少、电池进了多少,三笔必须能互相加减。对不上,就说明有地方在偷偷耗电。

功率流

功率流

从墙插到电池,一条带子说清楚。粗细跟着瓦数走,充电时自动分成系统与电池两条。

  • 三个节点:墙插、系统、电池
  • 带子粗细按 0.7 次方压缩,低功率也看得出差别
  • 末端的箭头标明能量方向
系统监控

系统监控

CPU、GPU、内存占用,加上一份按能耗排序的进程榜。

  • CPU / GPU / 内存三项实时曲线
  • 进程榜读 rusage_info_v6,不需要 root
  • 能耗按差分成瓦显示
充电历史

充电历史

最近一次充进去多少 Wh,近一周每天多少,一条 CSV 导出。

  • SQLite 落盘,跨天不丢
  • 最近一次充电结束后仍然保留
  • 导出失败会直接说原因,不会假装成功
充电器

充电器

协商到几伏几安、支持哪些 PD 档位、为什么没跑满。

  • 读出厂商与型号(部分充电器不上报)
  • PD 档位表标出当前使用的那一档
  • 跑不满时给结论:涓流、温控、还是线材
设置

设置

采样间隔、历史保留、通知阈值、菜单栏显示与语言。

  • 菜单栏可显示图标 + 百分比 + 功率
  • 低电量、充满、高温、慢充四类通知
  • 简体 / 繁體 / English
02

把软件拆成一台机器

测电流的分流器、读数的指针表、走纸记录曲线、每秒跳一格的棘轮、报信的铜铃——每个模块都对应这台仪器上的一个零件。可以直接在图上拖动。

Fig 1 · 功率实验台 · 可直接交互单独打开 ↗
橙色的零件在动:指针、笔、锤、每秒一格的棘轮
分流器和采样线圈:把电流变成毫伏信号送进表盘
铸铁台面、支脚、刻度尺与铭牌
03

该有的都有,多的一个不放。

没有账号、没有云同步、没有「猜你喜欢」。数据全部留在本机。

一秒一次

采样、菜单栏、小组件同一节拍。插拔电源立刻响应,不用等下一个刷新周期。

1 s·sampling clock

充电器体检

读得到协商电压电流、PD 档位表、厂商与型号。跑不满时给结论,不给原始码。

5V · 3A9V · 3A12V · 3A15V · 3A20V · 3A

电池健康

循环次数、实际满容量、设计容量、当前温度。

92.9%·design capacity

30 天历史

SQLite + WAL,每 2 秒一条,定期合并日志。

桌面小组件

不打开面板也能看到当前功率与电量。

04

数据从哪来

不猜、不估算,全部读系统自己的寄存器。

模块怎么读到的
电源与电池
IOKit 的 AppleSmartBattery:瞬时功率、电压电流、循环次数、温度
充电器
AdapterDetails 与 UsbHvcMenu:协商档位、PD 能力表、厂商型号
进程能耗
rusage_info_v6 的 ri_energy_nj 差分,不需要 root
历史
SQLite + WAL,每 2 秒一条,启动时合并日志
界面
纯 AppKit 手绘,玻璃弹窗和功率流都是 draw(_:) 画的
小组件
WidgetKit,通过 App Group 读主程序写下的快照

它自己也得省电

空闲 CPU
0.4%
内存
21 MB
展开功率流
6%
采样
1 s

纯 AppKit 写成,没有 SwiftUI、没有第三方依赖。一个测电源的软件,自己先不能费电。

PowerPulse icon

装上,就一直在菜单栏里

免安装器,拖进「应用程序」即可。没有 Apple 公证,首次打开会被系统拦一次。

v2.0.0.zip649 KBmacOS 14.0+Apple SiliconMIT

ad-hoc 签名、未公证:首次打开若被拦,去「系统设置 → 隐私与安全性 → 仍要打开」。

或一行装好,终端下载不带隔离标记,不会弹窗:curl -fsSL https://powerpulse.qijunhao.xyz/install.sh | bash
从源码构建
# 需要 macOS 14+ 与命令行工具
git clone https://github.com/777cola/PowerPulse.git
cd PowerPulse && ./build_app.sh
# 产出 PowerPulse.app 与小组件