Manage and apply Mac system settings with ease through a beautiful command-line interface.
This tool manages macOS system settings through configuration profiles. Create different profiles for different scenarios (Work, Home, Presentation, etc.) and switch between them effortlessly.
A fully-featured terminal application with a beautiful Rich-powered UI.
- โ Multiple configuration profiles
- โ JSON Schema-based settings validation
- โ Live system value comparison
- โ Rich terminal UI with tables and panels
- โ Generate AppleScript for startup execution
- โ Manage startup items, background apps, and system extensions
- โ Admin permission handling
# Install dependencies
pip3 install rich jsonschema
# Run the configurator
python3 python_app/mac_configurator.py
# Or create an alias for quick access
echo "alias cfg='python3 $(pwd)/python_app/mac_configurator.py'" >> ~/.zshrc
source ~/.zshrc
cfg๐ Full CLI documentation โ
Comprehensive set of macOS settings:
- WiFi enabled/disabled (requires admin)
- Input muted
- Output volume (0-100)
- Auto-hide
- Position (left/bottom/right)
- Show hidden files
- Show all file extensions
- Screenshot save location
- Block/allow applications from launching at login
- Control background app permissions
- Enable/disable system extensions
- Manage widgets, Safari extensions, Quick Look plugins, etc.
The app uses ~/MacConfigurator/ to store configuration profiles:
~/MacConfigurator/
โโโ Work_config.json
โโโ Home_config.json
โโโ Presentation_config.json
โโโ apply_Work_settings.scpt
Settings are defined in shared/settings_schema.json using JSON Schema format for validation.
Example Work_config.json:
{
"settings": {
"audio_output_volume": 50,
"dock_position": "bottom",
"dock_autohide": false,
"wifi_enabled": true
}
}mac_configurator/
โโโ python_app/ # Python CLI application
โ โโโ mac_configurator.py # Main CLI script
โ โโโ README.md # CLI documentation
โ โโโ screenshots/ # CLI interface examples
โ
โโโ shared/ # Shared resources
โโโ settings_schema.json # Settings definitions
The schema-first approach:
-
Update
shared/settings_schema.json{ "your_setting_key": { "type": "boolean", "title": "Your Setting Name", "description": "What this setting does", "category": "CategoryName", "handler": "YourHandler", "requires_admin": false } } -
Implement handler in Python
- Add getter/setter methods
- Register in handler map
Contributions are welcome!
- macOS
- Python 3.7+
richlibraryjsonschemalibrary
The configurator features a beautiful, color-coded Rich terminal interface:
โญโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฎ
โ Mac System Configurator โ
โฐโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ
Config directory: ~/MacConfigurator
Available
Configurations
โโโโโฌโโโโโโโโโโโโโโ
โ # โ Config Name โ
โโโโโผโโโโโโโโโโโโโโค
โ 1 โ Work โ
โ 2 โ Home โ
โ 3 โ Presentationโ
โโโโโดโโโโโโโโโโโโโโ
โโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ [1] โ Edit Config (select number) โ
โ โ Create New Config โ
โ โ Delete a Config โ
โ [e] โ Exit โ
โโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Select option: โ
Manage Settings - Select Category
โโโโโโโฌโโโโโโโโโโโโโโโโโ
โ [1] โ ๐ Network โ
โ [2] โ ๐ Audio โ
โ [3] โ ๐ฑ Dock โ
โ [4] โ ๐ Finder โ
โ [5] โ โ๏ธ System โ
โโโโโโโดโโโโโโโโโโโโโโโโโ
Press Enter to return to main menu
Select category (): โ
Categories are color-coded for easy identification.
Finder Settings
โโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโฌโโโโโโโโโโฌโโโโโโโโโ
โ Option โ Setting โ Configured โ Current โ Status โ
โโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโผโโโโโโโโโโผโโโโโโโโโค
โ [1] โ Show Hidden Files โ False โ False โ โ โ
โ [2] โ Show All Extensions โ True โ True โ โ โ
โโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโดโโโโโโโโโโดโโโโโโโโโ
Press Enter to return to category menu
Select setting to edit (): โ
Settings display shows:
- Configured (Yellow) = Your configured values
- Current (Magenta) = Current actual system values
- โ = Matched (settings in sync)
- โ = Mismatched (configured value differs from system)
- โ = Not configured (using system defaults)
- ๐ = Requires admin privileges
โโโโโโโโโโโโโโโโโโโโโโโโโ
โ AppleScript Generated โ
โโโโโโโโโโโโโโโโโโโโโโโโโ
โ Script saved to: ~/MacConfigurator/apply_Work_settings.scpt
To run manually:
osascript ~/MacConfigurator/apply_Work_settings.scpt
To add to startup:
1. Open System Settings > General > Login Items
2. Click '+' under 'Open at Login'
3. Select: ~/MacConfigurator/apply_Work_settings.scpt
Press Enter to continue...โ
- Core settings management
- Multiple profiles
- AppleScript generation
- Startup items management
- System extensions management
- Additional system settings
- Configuration import/export
- Settings templates
- Automated testing framework
Made with โค๏ธ for macOS