🔋 MacWake
English | 简体中文 | Türkçe | 日本語 | 한국어 · 🌐 Website
MacWake is an elegant menu bar and desktop widget application designed for macOS to track detailed battery health, usage analytics, and charging habits. Built with Swift and SwiftUI, it faithfully embraces modern macOS design guidelines (glassmorphism, vibrant effects).
🧊 A Live 3D Model of Your Mac
New in 1.94: the panel opens on a 3D model of your own Mac. Battery cells fill with the charge, the chip and SSD glow by temperature, the fan spins at its real speed, and MagSafe shows the cable, its LED and current flowing in while charging. Click a part to fly in and read it live; drag to turn the model.
Your Mac is detected and drawn to Apple's published dimensions — MacBook Air, MacBook Pro 13/14/16-inch, Mac mini, Mac Studio and iMac — with the notch measured from your own screen. macOS doesn't record the enclosure colour, so click the display to pick yours.
🖥️ Dynamic Island & Menu Bar
A Dynamic Island lives in the notch: it stays collapsed and blends with the hardware, expands on hover or click with a bouncy spring, and gives haptic feedback. It surfaces live power, battery health, and battery temperature, alongside quick toggles for the widget, session reset, animations, and notifications.
The menu bar shows real-time power draw at a glance (shown above), and clicking it opens the full panel — Session, History, Hardware, and Settings.
✨ Features
- 🔋 Charge Limit (full Apple Silicon M-series):
Copy Diagnostics lists every CH\ key it has.
* ⛵ Sailing Mode: let the battery drift down to a lower bound before topping back up, instead of micro-charging at the ceiling — fewer cycles, less heat.
🪫 Manual Discharge: drain the battery to a level you pick while plugged in — the limit can only stop* charging, this brings a Mac sitting at 95% back down — then charging resumes on its own.
* 🧪 Deep Battery Calibration: a full cycle — discharge to ~15%, charge to 100%, hold for one hour — to recalibrate the fuel gauge, started manually after confirmation (with live phase status and a Cancel button).
- ⌨️ Command-line tool:
macwake CLI from Settings and control charging from Terminal: macwake status, charging on|off, adapter on|off, energy auto|low|high, fan auto|.
- ⚡️ Energy Mode:
- 🌀 Monitor tab — Fan + Top Apps:
- 🎯 Smart Charging Extras:
- ⚡️ Shortcuts & Widget:
- ⚙️ Settings, organised:
- 🎛️ Customizable Menu Bar:
- 🏝️ Dynamic Island (Notch UI):
- 🌍 Localization:
- 📊 Detailed Session Tracking (Current Session):
- 🖱️ Translucent Desktop Widget:
- 🔌 Smart Power Adapter Analysis & Hybrid Algorithm:
SystemPowerIn) when plugged in and discharge rate (InstantAmperage) when on battery to accurately display real-time (dynamic) Watt consumption in the menu bar, without requiring root (sudo) privileges.
* Monitors the nominal wattage (e.g., 30W) and actual charging status of the connected adapter.
* Apple Genuine adapter verification (MFI Check).
* Identifies the port in use (MagSafe, USB-C, or Thunderbolt).
* Slow Charging Alert for low-efficiency charging scenarios.
* Adapter History logging to track the usage count of all past chargers.
- ⏰ Fast Battery Drain Notifications:
- 💫 iPhone-Style Charging Animation:
- 🛡️ Smart Battery Protection & Temperature Alerts:
- 📈 Battery Health Decay Log:
- 🚀 Easy Access & Auto-Start:
🛠️ Installation
Option 1 — Homebrew (Recommended)
brew tap Jarvis322/tap
brew install --cask macwake
Option 2 — Direct Download
Download the latest DMG from GitHub Releases, open it, and drag MacWake.app to your Applications folder.
Option 3 — Mac App Store
A sandboxed, monitoring-only edition — battery health, history, widget and Dynamic Island. Apple's sandbox doesn't allow the charge-control helper or sensor access, so charge limit, fan control and the 3D model are only in the direct download. Full comparison.
Requirements
- macOS 14.0 (Sonoma) or later
- Apple Silicon or Intel — the download is a Universal build and runs natively on both
- Charge control (limit, Sailing Mode, manual discharge, calibration) needs Apple Silicon M-series SMC keys and is unavailable on Intel; monitoring, health history, sessions, fan readout and the widget work everywhere
Manual Terminal Commands
If you wish to manage the app via the terminal:- To Launch the App:
open /Applications/MacWake.app
- To Quit the App:
killall MacWake
📂 Project Structure
Sources/MacWakeApp.swift: Application lifecycle, menu bar integration, and single-instance management.Sources/BatteryTracker.swift: Power state tracking (IOKit & IOPS), session data storage, and notification logic.Sources/MacWakeMenuView.swift: Main UI components and timeline graphs revealed upon clicking the menu bar icon.Sources/WidgetWindow.swift: Floating desktop widget window, drag logic, and circular indicator.Sources/ChargingAnimation.swift: Fullscreen animation layer triggered when the charging cable is connected.Sources/LaunchAgentManager.swift: Login item configuration using the macOSSMAppServiceAPI.
❤️ Support
MacWake is free and developed in my spare time. If it helps your battery, consider sponsoring on GitHub — it directly supports continued development.
🔒 Security & Permissions
The application does not require any administrator (root) privileges to monitor battery status and charging adapters; it relies entirely on standard macOS IOKit APIs.
- Notifications: To receive fast discharge alerts, it is recommended to grant notification permissions when the app first launches (this can be managed via the "Enable/Settings" button under the Menu).
