A macOS menu bar app that automatically adjusts monitor brightness based on a time schedule, with manual override.
- Schedule-based brightness — Set different brightness levels throughout the day
- Auto-reload — Edit schedule.txt anytime, changes apply automatically
- Manual override — Quick presets (100%, 80%, 60%, etc.) or custom value
- Menu bar icon — Visual gauge shows current brightness level (○ ◔ ◑ ◕ ●)
- Single instance — Prevents multiple copies from running
- macOS (Apple Silicon)
- Python 3.10+
- m1ddc — DDC control for external monitors
# Install m1ddc for monitor control
brew install m1ddc
# Clone and setup
git clone https://github.com/FauxReal9999/brightness-control.git
cd brightness-control
python3 -m venv venv
source venv/bin/activate
pip install rumps pyobjc-framework-CocoaDouble-click BrightnessControl.command or run:
./run.shA menu bar icon (●) will appear. Click it to:
- View current brightness
- Set brightness manually
- Enable/disable schedule override
- Edit or reload schedule
Edit schedule.txt:
# Comments start with #
# Format: HHMM brightness_level (0-100)
0600 100 # 6am: Full brightness
1800 80 # 6pm: Slightly dimmer
2000 60 # 8pm: Evening
2100 40 # 9pm: Night
2200 20 # 10pm: Late night
The app checks the schedule every minute and applies the most recent entry.
Create a LaunchAgent:
cat > ~/Library/LaunchAgents/com.brightness.control.plist << EOF
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.brightness.control</string>
<key>ProgramArguments</key>
<array>
<string>/Users/YOUR_USERNAME/Projects/brightness-control/venv/bin/python3</string>
<string>/Users/YOUR_USERNAME/Projects/brightness-control/brightness_app.py</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>WorkingDirectory</key>
<string>/Users/YOUR_USERNAME/Projects/brightness-control</string>
</dict>
</plist>
EOF
launchctl load ~/Library/LaunchAgents/com.brightness.control.plistMIT