A cute, lightweight menu bar temperature monitor for macOS that displays real-time CPU temperature and power consumption with beautiful color-coded indicators.
- 🌡️ Multi-Sensor Monitoring - Choose what to monitor:
- 💻 CPU Temperature - Processor temperature (default)
- 🎮 GPU Temperature - Graphics processor temperature
- 🔋 Battery Temperature - Battery pack temperature
- 🔄 Easy Sensor Switching - Press ⌘S or click menu to cycle between sensors
- 🎨 Dynamic Icons - Icon changes to match selected sensor (CPU/GPU/Battery)
- 🌡️ Unit Toggle - Switch between Fahrenheit and Celsius instantly (preference saved)
- ⚡ Smart Fallback - Shows CPU power consumption when temperature sensors aren't available
- ⏱️ Auto-Updates - Refreshes every 30 seconds automatically
- 🎨 Color-Coded Display - Temperature changes color based on heat level:
- 🔵 Blue: Normal (< 140°F / < 60°C) - Idle/light use
- 🟡 Yellow: Warm (140-176°F / 60-80°C) - Under load
- 🟠 Orange: Hot (176-194°F / 80-90°C) - Warning zone
- 🔴 Red: Critical (≥ 194°F / ≥ 90°C) - Thermal throttling
- 💎 Native SF Symbols - Beautiful thermometer icon from macOS system icons
- 🎯 Cute Details Dialog - Shows comprehensive info with a friendly thermometer icon
- ⌨️ Keyboard Shortcuts - Quick access:
- ⌘D - Details
- ⌘U - Toggle Units (°F/°C)
- ⌘S - Switch Sensor (CPU/GPU/Battery)
- 📱 Menu Bar Only - Runs discreetly without cluttering your Dock
- 🚀 Optional Auto-Launch - Start automatically when you log in
- 💾 Preference Saving - Remembers your temperature unit and sensor choice
- Download the latest release
- Unzip MenuTemp-v1.0.zip
- Drag MenuTemp.app to your Applications folder
- Open MenuTemp from Applications
To start MenuTemp automatically when you log in:
# Clone or download this repository
cd Menu_temp
# Run the installation script
./install.shThis will:
- Copy MenuTemp.app to /Applications/
- Set up a LaunchAgent for auto-start on login
- Launch the app immediately
Alternatively, you can set up auto-launch manually:
- Open System Settings → General → Login Items
- Click the + button
- Select MenuTemp from Applications
- Done!
Once launched, MenuTemp appears in your menu bar with a thermometer icon and current temperature:
🌡️ 72.5°F
Click the icon to access:
- Temp: XX.X°F - Current reading (non-interactive)
- Details (⌘D) - View comprehensive temperature information
- Celsius / Fahrenheit (⌘U) - Toggle between units
- Quit (⌘Q) - Exit the application
- ⌘D - Open Details dialog
- ⌘U - Toggle temperature units (°F ↔ °C)
- ⌘Q - Quit MenuTemp
The temperature reading changes color automatically:
| Color | Temperature (°F) | Temperature (°C) | Status |
|---|---|---|---|
| 🔵 Blue | < 140°F | < 60°C | Normal - Idle/light use |
| 🟡 Yellow | 140-176°F | 60-80°C | Warm - Under load |
| 🟠 Orange | 176-194°F | 80-90°C | Hot - Warning zone |
| 🔴 Red | ≥ 194°F | ≥ 90°C | Critical - Thermal throttling |
- OS: macOS 11.0 (Big Sur) or later
- Architecture: Apple Silicon (arm64)
- Python: Python 3.x (included with macOS)
MenuTemp uses intelligent detection to get accurate CPU temperature readings:
- Apple Silicon (M1/M2/M3) - Estimates CPU temp from thermal pressure & power consumption
- Uses
powermetricsto read thermal pressure level and CPU power - Correlates activity with temperature (since die temp isn't exposed on Apple Silicon)
- Provides realistic estimates: 40-60°C idle, 60-90°C under load
- Uses
- Intel Macs - Direct powermetrics temperature sensors
- Legacy Fallback - IOKit sensors or CPU power consumption display
Why Estimation for Apple Silicon? Apple Silicon Macs don't expose CPU die temperature through standard APIs. The app uses thermal pressure (Nominal/Moderate/Heavy/Trapping) and CPU power consumption to provide accurate temperature estimates that match actual thermal behavior.
MenuTemp.app/
├── Contents/
│ ├── Info.plist # App metadata
│ ├── MacOS/
│ │ └── MenuTemp # Swift executable
│ └── Resources/
│ ├── app_icon.icns # App icon
│ ├── get_temp_sensors.py # Multi-sensor (CPU/GPU/Battery) - PRIMARY
│ ├── get_temp_advanced.py # Intelligent fallback detection
│ ├── get_temp_m1.py # Apple Silicon thermal estimation
│ └── get_temp.py # Basic legacy detection
Tech Stack:
- Swift - Native macOS application framework
- Cocoa/AppKit - macOS UI components
- Python 3 - Temperature sensor access
- SF Symbols - macOS system icons
- Xcode Command Line Tools
- Swift compiler (included with Xcode)
- Python 3
# Clone the repository
git clone https://github.com/yourusername/menutemp.git
cd menutemp
# Compile the Swift app
swiftc menu_temp.swift -o MenuTemp
# Create the app bundle
mkdir -p MenuTemp.app/Contents/{MacOS,Resources}
cp MenuTemp MenuTemp.app/Contents/MacOS/
cp get_temp*.py MenuTemp.app/Contents/Resources/
cp Info.plist MenuTemp.app/Contents/
cp app_icon.icns MenuTemp.app/Contents/Resources/
# Make Python scripts executable
chmod +x MenuTemp.app/Contents/Resources/get_temp*.py
# Test the app
open MenuTemp.app./package.shThis creates MenuTemp-v1.0.zip ready for distribution.
- This is normal on some Macs that restrict sensor access
- The app will fallback to showing CPU power consumption instead
- This means temperature sensors aren't accessible
- Power consumption is a useful proxy for thermal activity
- This is expected behavior on Apple Silicon Macs with restricted sensor access
- Ensure Python 3 is installed:
python3 --version - Check that Python scripts are in
MenuTemp.app/Contents/Resources/ - Try running from Terminal to see error messages
- Check if menu bar is full (try hiding other apps)
- Look in the menu bar overflow area (»)
- Restart MenuTemp
- Click "Details" to see all available temperature sources
- Different sensors may show slightly different values
- The app shows CPU die temperature when available
# Stop the app
killall MenuTemp
# Remove from Applications
rm -rf /Applications/MenuTemp.app# Stop the app
killall MenuTemp
# Remove launch agent
launchctl unload ~/Library/LaunchAgents/com.daniel.menutemp.plist
rm ~/Library/LaunchAgents/com.daniel.menutemp.plist
# Remove app
rm -rf /Applications/MenuTemp.app
# Remove preferences (optional)
defaults delete com.menutemp.appThis project is licensed under the MIT License - see the LICENSE file for details.
- Built with ❤️ using Swift and macOS native frameworks
- Inspired by the need for a simple, beautiful temperature monitor
- Uses macOS SF Symbols for native icon integration
If MenuTemp doesn't meet your needs, check out these alternatives:
- Stats - Comprehensive system monitor
- iGlance - Customizable system monitor
- Hot - CPU thermal throttling monitor
Contributions are welcome! Please feel free to submit a Pull Request.
- Follow Swift best practices
- Test on both Intel and Apple Silicon Macs (if possible)
- Update CHANGELOG.md with changes
- Add comments for complex logic
- Ensure the app builds and runs before submitting
Found a bug or have a feature request? Please open an issue.
Made with 🌡️ for macOS
Copyright (c) 2025 Daniel Bates / BatesAI
This project is licensed under the MIT License - see the LICENSE file for details.
While this code is open source under the MIT License, the BatesAI brand name and associated trademarks are proprietary. Please do not use the BatesAI name or logo without permission.
For commercial support or custom development, contact: daniel@batesai.org
- Personal tinkering: Free to download, study, and modify for your own hobby, learning, or research projects as long as you keep the required credit.
- Attribution: Always display “Built with BatesAI software by Daniel Bates (https://batesai.org)” anywhere the app, docs, marketing pages, or listings mention the product.
- Organizations & monetization: Any company, client, employer, school, nonprofit, or government team must either obtain a BatesAI commercial license (daniel@batesai.org) or remit a 10% share of gross receipts—including one-time purchases, subscriptions (monthly, annual, seat-based, usage-based), service retainers, and bundled sales—that rely on this software.
- Reporting: Revenue-share users must send monthly revenue summaries plus payment within 15 days of month-end or the license automatically pauses.
Read the full “BatesAI Personal & Revenue Share License v1.1” in LICENSE for legal terms, including no sublicensing and California governing law.